<운영체제와 정보기술의 원리> 반효경 저
1. 프로세스의 개념
디스크에 실행파일 형태로 존재하던 프로그램이 메모리에 올라가서 실행되기 시작하면 비로소 생명력을 갖는 프로세스가 된다.
- 프로세스(process): 실행 중인 프로그램(program in execution)
CPU를 다시 획득하여 명령의 수행을 재개할 때 이전의 CPU를 보유했던 시점의 정확한 상태를 재현해야 한다.
- 프로세스 문맥(context): 프로세스가 현재 어떤 상태에서 수행되고 있는지에 대한 정보
프로세스의 문맥을 크게 하드웨어 문맥, 프로세스의 주소 공간, 커널상의 문맥으로 나눌 수 있다.
- 하드웨어 문맥: CPU의 수행 상태를 나타내는 것으로 프로그램 카운터값과 각종 레지스터에 저장하고 있는 값들
- 프로세스의 주소 공간: 코드, 데이터, 스택으로 구성되는 프로세스 자신만의 독자적인 주소 공간
- 커널스택: 프로그램이 수행되어 프로세스가 됐을 때 프로세스를 관리하기 위해 운영체제가 유지하는 자료구조
2. 프로세스의 상태
컴퓨터의 자원을 효율적으로 관리하기 위해 프로세스의 상태를 실행(running), 준비(ready), 봉쇄(blocked, wait, sleep) 세 가지로 구분한다.
- 실행: 프로세스가 CPU를 보유하고 기계어 명령을 실행하고 있는 상태
- 준비: 프로세스가 CPU만 보유하면 당장 명령을 실행할 수 있지만 CPU를 할당받지 못한 상태
- 봉쇄: CPU를 할당받더라도 당장 명령을 실행할 수 없는 상태
- e.g. 프로세스가 요청한 입출력 작업이 진행 중인 경우
프로세스가 생성 중이거나 종료 중인 일시적 상태를 각각 시작(new) 상태, 완료(terminated) 상태라고 부르기도 한다.