CPU Scheduling, CPU 스케쥴링
Multi-Programmed O/S의 경우 한 Process가 Wait상태로 들어가게 되면 현재 Ready하고 있는 다른 Process들 중에서
하나를 골라서 CPU의 제어권을 넘겨주어야 한다. 하지만 많은 Process 들중에서 어떤 Process를 고르는게 좋을까?
그렇다. CPU Scheduling이란 많은 Process들중 어떤 process를 선택할 것 인가를 고르는 방법을 말한다.
만일 CPU가 Idle상태 즉, 대기상태가 되면 CPU Scheduler(정확히는 STS)가 Ready Queue에 존재하는 Process들 중에서
하나를 골라서 수행시킨다. 그러면 어떤 때에 CPU가 Idle상태에 빠지는가?? 대표적으로 아래 4가지 경우가 있다,.
1. Process가 Running상태에서 Waiting상태로 바뀌는 때(I/O Event 등)
2. Process의 상태가 Running상태에서 Ready상태로 바뀌는 때(Interrupt 발생 등)
3. Process가 Waiting상태에서 Ready상태로 바뀌는 때(I/O 수행 종료)
4. Process가 Terminated상태로 바뀌는 때, 즉 Process 종료
Scheduling의 경우 적용 시점에 따라서 선점형과 비선점형으로 나누어 진다.
Preemptive
CPU Scheduling이 Preemptive(선점형)이라면 1번부터 4번까지 모든 시점에서 Process의 변경이 이루어 진다.
선점형이란 어떤 Process가 CPU를 할당받아 실행중이어도 다른 Process가 실행중인 CPU의 동작을 강제로 중지하고
CPU를 점유할 수 있다. 이러한 방식은 빠른 응답시간을 필요로 하는 대화식 시분할 시스템에서 적합하다. 하지만
Data Synchronization문제나 Interrupt를 유실할 가능성이 있기에 그에 관한 대비책을 만들어 놓아야 한다.
Non-Preemptive
Non-Preemptive(비선점형)이라면 1번과 4번 시점에서만 Process의 변경이 이루어진다.
비선점형이란 어떤 Proecess가 CPU를 할당 받으면 해당 Process가 종료되거나 입출력 요구가 발생하여 자발적으로
중지 될때까지 다른 Process가 CPU를 가져갈 수 없는 방식이다. 비선점형은 선점형보다 Scheduler의 호출도 적게 이루어 지고
Context Switch로 인한 Overhead도 적다. 이러한 방식은 일괄처리 시스템에 적합하다. 하지만 비선점형의 경우
Starvation(기아상태, 오랜기간 CPU의 제어권을 얻지 못한 상태)가 존재하고 처리율이 떨어진다.
Scheduling의 적용 시점이 아닌 Process의 우선순위의 변동 여부에 따라서 나누어 지기도 한다.
Static Scheduling : Process에 부여된 우선순위에 변동이 없다. 고정우선순위스케쥴링 이라고도 한다.
Dynamic Scheduling : Scheduling으로 인해 Process의 우선순위가 변동 된다. 유동우선순위스케쥴링 이라고도 한다.
'C.E > OS' 카테고리의 다른 글
CPU Scheduling - Scheduling Criteria (0) | 2013.12.09 |
---|---|
CPU Scheduling - DIspatcher (0) | 2013.12.09 |
Thread - Multi-Thread VS Multi-Process (0) | 2013.12.09 |
Thread - Thread란? (0) | 2013.12.09 |
Process - InterProcess Communication(IPC)_2 (0) | 2013.12.09 |