Process
프로세스의 개념
실행 중인 프로그램
프로세스의 문맥(context)
- CPU 수행 상태를 나타내는 하드웨어 문맥
- Program Counter
- 각종 register
- 프로세스의 주소 공간
- 프로세스 관련 커널 자료 구조
- PCB(Process Control Block)
- Kernel stack → 프로세스마다 별도로 가지고 있음

프로세스의 상태(process State)
프로세스는 상태가 변경되며 수행된다
Running
- CPU를 잡고 instruction을 수행중인 상태
Ready
- CPU를 기다리는 상태(메모리 등 다른 조건을 모두 만족하고)
Blocked
(wait, sleep)
- CPU를 주어도 당장 instruction을 수행할 수 없는 상태
- Process 자신이 요청한 event가 즉시 만족되지 않아 이를 기다리는 상태
- 자신이 요청한 event가 만족되면 Ready
- ex) 디스크에서 file을 읽어와야 하는 경우
Suspended
(stop)
- 외부적인 이유로 프로세스의 수행이 정지된 상태
- 프로세스는 통째로 디스크에 swap out된다
- ex) 사용자가 프로그램을 일시 정지시킨 경우(break key)
- ex)시스템이 여러 이유로 프로세스를 잠시 중단시킴(메모리에 너무 많은 프로세스가 올라가 있을 때)
- by
[Medium-term Scheduler]
- 외부에서 resume해 주어야 Active
+

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

Context Switch(문맥 교환)
CPU를 한 프로세스에서 다른 프로세스로 넘겨주는 과정
CPU가 다른 프로세스에게 넘겨갈 때 운영체제는 다음을 수행
- CPU를 내어주는 프로세스의 상태를 그 프로세서의 PCB에 저장
- CPU를 새롭게 얻는 프로세스의 상태를 PCB에서 읽어옴
System call이나 Interrupt 발생시 반드시 context switch가 일어나는 것은 아님
컨텍스트 전환이 일어나는 동안은 아무런 작업이 수행되지 않아 순수한 오버헤드(overhead)

프로세스를 스케줄링하기 위한 큐
- Job queue
- Ready queue
- 현재 메모리 내에 있으면서 CPU를 잡아서 실행되기를 기다리는 프로세스의 집합
- Device queue
- I/O device의 처리를 기다리는 프로세스의 집합
프로세스들은 각 큐들을 오가며 수행된다
스케줄러(Scheduler)
Long-term Scheduler
(job scheduler)
- 시작 프로세스 중 어떤 것들을
ready queue
로 보낼지 결정
- 프로세스에
memory
을 주는 문제
degree of Multiprogramming
을 제어
- time sharing system에는 보통 장기 스케줄러가 없음(무조건 ready)
Short-term scheduler
(CPU scheduler)
- 어떤 프로세스를 다음번에
running
시킬지 결정
- 프로세스에
CPU
를 주는 문제
- 충분히 빨라야 함
Medium-term Scheduler
(Swapper)
- 여유 공간 마련을 위해 프로세스를 통째로 메모리에서 디스크롤 쫓아냄
- 프로세스에게서
memory
를 뺏는 문제
degree of Multiprogramming
을 제어
참고