운영체제 - 프로세스 스케쥴링(process scheduling)
프로세스 스케쥴링(process scheduling)이란?
- 여러가지 프로세스가 CPU를 공평하게 공유하도록 하는 운영체제의 역할.
Running 상태인 프로세스가 종료되거나 interrupt에 의해 Ready상태로 전이하거나 I/O operation을 호출하여 Waiting 상태로 전이하게되어 Ready Queue에 존재하는 process들에서 Running 상태로 전이시킬 한 개의 process를 선택하는 것.
프로세스 스케쥴링은 크게 1) Policy, 2) Mechanism 으로 나눌 수 있다.
1. Policy : 다음에 수행될 프로세서를 선택하는 기준(=scheduling policy)
2. Mechanism : CPU를 한 프로세스에서 다른 프로세스로 넘겨주는 방법(=dispatcher)
dispatcher는 어떻게 구현하는 것일까?
- process에서 다른 process로 실행이 넘어가는 것인데, dispatcher도 결국 process이다. 어떻게하면 실행중이던 process가 실행 흐름을 dispatcher로 넘겨줄 수 있을까?
- dispatcher는 kernel 함수인데 kernel 함수를 부르려면 모드 체인지(=mode change)가 일어나야 한다.
* 운영체제는 collection of function이다.( system call + ISR )
- 프로세스가 하드웨어 자원(I/O device)에 접근하기 위해 호출하는 함수, System call
- Interrupt가 발생했을 때 IRQ(interrupt request number)에 따른 ISR(interrupt service routine).
Running상태의 프로세스에서 H/W Interrupt가 발생하면 kernel mode로 변경되므로 이 때 dispatcher가 실행되어 process 상태정보를 저장할 수 있다. 또한, I/O operation을 호출하는 경우에도 S/W interrupt로 kernel mode로 변경되므로 dispatcher에 의해 process 상태정보를 저장할 수 있다.
process scheduling 방식은 크게 두가지로 나뉜다
1. non-preemptive scheduling
- 프로세스가 자발적으로 CPU를 양보하여 다른 프로세스를 수행하는 스케쥴링
- S/W interrupt(=trap)을 발생시켜 dispatcher 수행
2. preemptive scheduling
- 운영체제가 강제로 프로세스로부터 CPU를 빼앗아 다른 프로세스를 수행하는 스케쥴링
- 주로 Timer를 사용한 timer interrupt에 의해 dispatcher를 수행.
process의 구성요소
1) "state" = context
- memory context
- hardware context
- kernel context(include PCB)
- stack
user mode -> kernel mode로 모드는 변경되지만 실행중인 process는 변하지 않는 경우가 있다.
process가 system call을 호출하게 되면 process id는 변화하지 않는다.(= process state transition이 일어나지 않음)
+ user mode에선 user mode stack을 사용하고 kernel mode에선 kernel mode stack을 사용한다.
system call vs. function call
공통점 : process id를 변화시키지 않는다.
차이점 : system call은 mode change를 요구한다.
'운영체제 > 프로세스(process)' 카테고리의 다른 글
운영체제 - 멀티 쓰레드(Multi-Thread) (0) | 2019.03.11 |
---|---|
운영체제 - 프로세스(process)의 생성과 종료 (0) | 2019.03.11 |
운영체제 - Context-switching (0) | 2019.03.10 |
운영체제 - 프로세스 상태 전이(Process State Transition), PCB(process control block) (0) | 2019.03.09 |
운영체제 - 프로세스(process)란? (0) | 2019.03.09 |