프로세스의 개념
- Process is a program in execution.

- 프로세스의 문맥(context)
- CPU 수행 상태를 나타내는 하드웨어 문맥 → 어느정도까지 실행했는가?
- Program Counter
- 각종 register
- 프로세스의 주소 공간
- 프로세스 관련 커널 자료 구조
- PCB (Process Control Block)
- Kernel stack
프로세스의 상태 (Process State)
- 프로세스는 상태(state) 가 변경되며 수행된다
Running
: CPU 를 잡고 instruction 을 수행중인 상태
Ready
: CPU 를 기다리는 상태(메모리 등 다른 조건을 모두 만족하고)
Blocked (wait, sleep)
- CPU 를 주어도 당장 instruction 을 수행할 수 없는 상태
- Process 자신이 요청한 event(ex. I/O) 가 즉시 만족되지 않아 이를 기다리는 상태
- ex. 디스크에서 file 을 읽어와야 하는 경우
- 자신이 요청한 event 가 만족되면 ready
Suspended(stopped)
- 외부적인 이유로 프로세스의 수행이 정지된 상태
- 프로세스는 통째로 디스크에 swap out 된다
- 예) 사용자가 프로그램을 일시정지 시킨 경우 (break key), 시스템이 여러 이유로 프로세스를 잠시 중단시킴(메모리에 너무 많은 프로세스가 올라와 있을 때)
- 외부에서 resume 해 주어야 active
New
: 프로세스가 생성중인 상태
Terminated
: 수행(execution)이 끝난 상태 → 프로세스의 수행이 끝났지만 정리 과정이 남아있는 상태
프로세스 상태도


프로세스의 상태


Process Control Block (PCB)
- 운영체제가 각 프로세스를 관리하기 위해 프로세스당 유지하는 정보
- 다음의 구성 요소를 가진다(구조체로 유지(
-
- OS 가 관리상 사용하는 정보
- Process state, Process ID
- scheduling information, priority
-
- CPU 수행 관련 하드웨어 값
- Program counter, registers
-
- 메모리 관련
- Code, data, stack 의 위치 정보
-
- 파일 관련

문맥 교환(Context Switch)
- CPU 를 한 프로세스에서 다른 프로세스로 넘겨주는 과정
- CPU 가 다른 프로세스에게 넘어갈 때 운영체제는 다음을 수행
- CPU 를 내어주는 프로세스의 상태를 그 프로세스의 PCB 에 저장
- CPU 를 새롭게 얻는 프로세스의 상태를 PCB 에서 읽어옴
