3. CPU 스케줄링
- CPU Scheduling
- 비선점 스케줄링
- 선점 스케줄링
1. CPU Scheduling
1.1. 프로세스의 특성
프로세스는 그 특성에 따라 다음과 같이 나눠진다
I/O-bound process
- CPU를 잡고 계산하는 시간보다 I/O에 많은 시간이 필요함
- many short CPU bursts (빈번하고 짧은 작업)
CPU-bound process
- 계산 위주의 작업 수행
- few very long CPU bursts (빈번하지 않고 긴 작업)
1.2. CPU Scheduler & Dispatcher
CPU Scheduler
Ready
상태의 프로세스 중에서 이번에 CPU를 줄 프로세스를 고른다
Dispatcher
CPU제어권을 CPU scheduler에 의해 선택된 프로세서에게 넘긴다
1.3. Scheduling Criteria
성능 척도를 나타내는 5가지 요소는 아래와 같다
- CPU utilization (이용률)
- Throughput (처리량)
- Turnaround time (소요시간, 반환시간)
- Waiting time (대기 시간)
- Response time (응답 시간)
1.4. 프로세스를 스케줄링하기 위한 큐
Job Queue
현재 시스템 내에 있는 모든 프로세스의 집합
(Ready Queue, Device Queue 에 있는 프로세스 포함)
Ready Queue
현재 메모리 내에 있으면서 CPU를 잡아서 실행되기를 기다리는 프로세스의 집합
Device Queue
I/O device의 처리를 기다리는 프로세스의 집합
2. 비선점 스케줄링
비선점 스케줄링 (Nonpreemptive Scheduling)
- 이미 할당된 자원을 다른 프로세스가 뺏을 수 없음
- 응답시간의 예측이 편하며, 일괄처리 방식에 적합함
- 단점으로는 덜 중요한 작업이 자원을 할당 받으면 중요한 작업이 와도 먼저 처리 될 수 없음
2.1. FCFS (First-Come First-Served)
프로세스는 Ready Queue
에 도착한 순서대로 CPU를 할당 받는다. 작업 완료 시간을 예측하기에 매우 용이하다. 하지만 덜 중요한 작업으로 인해 중요한 작업이 기다릴 수도 있다. Convoy effect
가 발생할 수 있다.
Convoy effect
: 수행 시간이 짧은 프로세스가 CPU를 오래 기다리는 현상
2.2. SJF (Shortest-Job-First)
Ready Queue
에 있는 프로세스 중, 수행시간이 짧은 것을 먼저 수행한다. 평균 대기 시간을 감소시킨다.
2.3. HRN (Hightest Response-ratio Next)
긴 작업과 짧은 작업간의 지나친 불평등을 어느 정도 보완한 기법이다. 수행시간의 길이와 대기 시간을 모두 고려해 우선순위를 정한다.
우선순위 = (대기 시간 + 실행 시간) / 실행 시간
2.4. Priority Scheduling
프로세스마다 우선운위를 부여하여 높은 우선순위를 가진 프로세스에게 먼저 자원을 할당하는 기법이다. 우선순위가 낮을 경우 기아(Starvation)
현상이 일어날 수 있다.
기아현상(Starvation)
: Ready Queue 에서 대기하고 있는 낮은 우선순위의 프로세스가 무한정 기다리는 현상
에이징(Aging)
: 기아현상을 해결하기 위한 방법으로 오랫동안 기다린 프로세스에게 우선순위를 높여주는 기법
3. 선점 스케줄링
선점 스케줄링 (Preemptive Scheduling)
- 우선순위가 높은 프로세스를 빠르게 처리할 수 있음
- 어떤 프로세스가 자원을 사용하고 있을 때, 우선순위가 더 높은 프로세스가 올 경우 자원을 뺏음
- 빠른 응답시간을 요구하는 시스템에서 사용
- 단점으로는 잦은 문맥 교환으로 오버헤드가 증가함
3.1. SRT (Shortest Reamining Time)
짧은 시간 순서대로 프로세스를 수행한다. 남은 처리 시간이 더 짧은 프로세스가 Ready Queue 에 들어오면 그 프로세스가 바로 선점된다. SJF 기법의 preemptive 버전
이라고 생각할 수 있다
3.2. Round-Robin
시분할 시스템에 사용되는 기법으로, 각 프로세스는 같은 크기의 CPU 시간을 할당 받고 선입선출에 의해 수행된다. 할당시간이 클 경우 FCFS
와 비슷해지고, 할당시간이 작은 경우 오버헤드가 증가한다.
3.3. Multi-level Queue
MQ 의 핵심은 Ready Queue 를 여러 개로 분할
하고, 이 Ready Queue 사이에 우선순위가 존재하는 것이다. 따라서 큐 사이에도 스케줄링
이 일어나게 된다. 따라서 각각의 큐에서 스케줄링
이 일어나며 Ready Queue 사이에서 스케줄링이 일어나 MQ 의 큐 개수 보다 한 개 더 많은 스케줄러가 필요하다. 또한 우선순위가 높은 큐에 지속적으로 프로세스가 들어오면 낮은 우선순위를 가진 프로세스에 기아현상(Starvation)
이 발생할 수 있다.
Foreground
- interactive 한 작업을 배치
- Round-Robin 으로 CPU 스케줄링
Background
- interactive 하지 않은 작업을 배치
- FCFS 으로 CPU 스케줄링
3.4. Multi-level Feedback Queue
MQ 와의 가장 큰 차이점은 큐 사이의 프로세스 이동
이다. 우선순위가 높은 프로세스에게는 불이익을, 낮은 프로세스에게는 이익을 제공하는 에이징(Aging)
을 통해 기아현상을 방지한다.
기본적으로 MFQ 에서는 가장 우선순위가 낮은 큐를 제외하고는 모두 Round-Robin 스케줄링을 사용한다. (가장 낮은 큐는 FCFS or RR)
이 때, 우선순위가 높은 큐 일 수록 짧은
Time slice
를 주고 한번의 Time Slice 안에 그 프로세스의 실행이 끝나지 않으면 한단계 낮은 우선순위를 가지고 있는 큐로 보내게 된다.반대로, 어떤 큐에서 일정시간동안 실행되지 못한 프로세스는 한단계 높은 우선순위의 큐로 보내게 되는 것이다.
'CS > Operating System' 카테고리의 다른 글
[OS] 6. 메모리 관리 (Memory Management) (0) | 2019.04.22 |
---|---|
[OS] 5. 데드락 (Deadlock) (0) | 2019.04.18 |
[OS] 4. 프로세스 동기화 (Process Synchronization) (0) | 2019.04.03 |
[OS] 2. 프로세스 (Process) (0) | 2019.03.29 |
[OS] 1. 인터럽트 (Interrupt) (0) | 2019.03.04 |