프로세스 (Process)
프로세스란?
실행 중인 프로그램을 의미한다.
프로세스는 운영체제로부터 자원을 할당받아 동작한다.
프로그램과 프로세스의 차이
- 프로그램: 동작을 하지 않는 정적, 수동적 개체
- 프로세스: 동작을 하는 능동적 개체
- 자원: CPU, 메모리, I/O장치, 파일 등
- 동작: CPU가 프로세스의 명령을 실행
프로세스와 운영체제
프로세스 관리자의 역할
- 프로세스를 생성 및 삭제
- 프로세스 실행(CPU 할당)을 위한 스케줄 결정
- 프로세스의 상태를 관리하면 상태를 관리하며 상태 전이를 처리
프로세스의 상태
5-상태 모델
- 생성: 처음 작업이 시스템에 주어진 상태
- 준비: 실행 준비가 되어 CPU 할당을 기다리는 상태
- 대기: 프로세스가 특정 자원을 할당받을 때까지 또는 I/O 작업이 끝날 때까지 작업이 보류되는 상태
- 실행: 프로세스가 처리되는 상태
- 종료: 모든 처리가 완료되어 사용자에게 반환되는 상태
프로세스 제어 블록 (Process Control Block, PCB)
- 각 프로세스마다 존재함
- 프로세스를 관리해주며 프로세스의 정보를 보관
- 프로세스가 진햄함에 따라 내용이 변경됨
PCB에서 가지고 있는 주요 정보들
Title | Description |
---|---|
프로세스 상태 | 프로세스의 상태 |
프로세스 번호 (PID) | 프로세스의 번호 |
프로그램 카운터 (PC) | 현재 프로세스 중에서 처리되고 있는게 무엇인지, 다음에 실행 될 프로세스가 무엇인지에 대한 정보 |
레지스터들 | 해당 프로세스의 진행정보를 저장함. cpu에 프로세스를 재할당할 때 진행정보를 넘겨서 하던 작업부터 재개할 수 있게 해줌 |
프로세스의 생성과 종료
1) 프로세스 생성 작업
- 프로세스의 이름(번호, PID) 결정
- 준비 queue에 삽입
- 초기 우선순위 부여
- 프로세스 제어 블록(PCB) 생성
1-2) 프로세스 생성 시스템 호출
- 하나의 프로세스가 프로세스 생성 시스템을 호출하여 새로운 프로세스를 생성 (ex.
fork()
) - 프로세스는 최상위 프로세스부터 시작해서 tree 구조로 이루어짐
TIP
- 시스템 프로세스(최상위 프로세스): OS가 부팅하면서 제일 먼저 만들어지는 프로세스
- 사용자 프로세스: 사용자가 만들어낸 프로세스
- 부모 프로세스: 프로세스 생성 시스템 호출을 하게되는 프로세스
- 자식 프로세스: 부모 프로세스에 의해 생성된 프로세스
1-3) 생성되는 프로세스의 자원
- 운영체제로부터 직접 얻는 경우
- 부모 프로세스 자원의 일부를 얻는 경우
왜 부모 프로세스의 자원의 일부를 받아서 사용할까?
과도한 자식 프로세스 생성에 따른 시스템 과부하 방지를 위해서!
2) 프로세스 종료
프로세스가 종료되며 부모 프로세스에게 실행결과를 되돌려 줌
(프로세스 종료 시스템은 부모에 의해서만 호출된다!)
프로세스 종료 발생 조건
- 프로세스의 마지막 명령이 실행을 마치는 경우
- 프로세스 종료 시스템 호출이 일어나는 경우 (ex.
exit()
) - 자식에게 할당된 자원보다 더 사용하거나 더 이상 필요치 않을 때
프로세스 간의 관계
독립적 프로세스 | 유기적 프로세스 | |
---|---|---|
의미 | 다른 프로세스와 독립적임 | 다른 프로세스와 영향을 주고 받음 |
프로세스 상태 | 다른 프로세스와 자원의 상태 등을 공유하지 않음 | 다른 프로세스와 자원의 상태 등을 공유함 |
실행 | 동일한 입력에 동일한 결과를 보장함. 다른 프로세스와 무관하게 중단 및 재시작 가능 | 동일한 입력에 다른 결과가 나올 수 있음. 다른 결과가 나올 수 있기에 재생 불가능 |
데이터 | 다른 프로세스와 공유하지 않음 | 다른 프로세스와 공유함 |