블로그 카테고리의 목적:
🔎 CPU Scheduling 방법, 특징을 이해하기 위해
복습:
프로그램 실행시 Cpu burst와 I/O burst가 번갈아 실행됩니다.
이때,
I / O 작업이 많지 않으면 CPU에서 Instruction을 실행하는 단계입니다.
Cpu 버스트가 길게 표시됩니다.
반대로,
I / O 작업이 많으면 CPU를 연속적으로 쓰는 단계가 짧아지고,
I/O 버스트가 오랫동안 나타나는 이유는 인터럽트가 자주 발생하기 때문입니다.
(궁극적으로 CPU 스케줄링은이 CPU 버스트 시간과 I / O 버스트 시간을 적절하게 조정합니다.
필요합니다.
.!
)
(CPU Schduler)
현재 ready queue에 들어있는 프로세스 중
어떤 프로세스에 CPU를 제공할지 결정하는 메커니즘입니다.
(CPU Schduler의 두 가지 문제)
- 어떤 프로세스에 CPU를 제공합니까?
- 프로그램에 CPU를 준 후 계속 사용합니까? 도중에 CPU를 공제하는 것일까?
(nonpreemptive//preemptive)
(CPU 버스트가 긴 Process에 CPU를 주었지만, ready queue에 짧게 써 가는 I/O
instruction이 있다면 어떻게 해야 합니까?
(Scheduling Criteria)
1. 시스템 입장에서의 성능 스케일
- CPU Utilization(전시간 동안 CPU가 일한 시간이 얼마나 되는지) 이용료
- 가능한 한 많은 CPU를 만들어 전체 시간에 CPU가 작동하는 시간의 비율을 높이는 것이 좋습니다.
- 가능한 한 많은 CPU를 만들어 전체 시간에 CPU가 작동하는 시간의 비율을 높이는 것이 좋습니다.
- Throught ( 주어진 시간에 무엇을 처리했는지에 대한 비율)
- 주어진 시간에 CPU가 작업을 많이 처리하는 것이 좋습니다.
- 주어진 시간에 CPU가 작업을 많이 처리하는 것이 좋습니다.
2. 고객의 입장에서의 성능 척도(프로세스가 빨리 처리되는 것이 중요!
)
- Turnaround Time(CPU를 쓰러뜨려 쓰는데 걸린 시간)
- 대기 시간과 CPU를 얻고 작업을 종료하고 종료하는 데 걸린 총 시간
- Waiting Time (ready queue에서 순수하게 기다린 시간)
- CPU 할당 반환 처리 중 Waiting Time의 종합
- Response Time (ready queue에 들어가서 처음으로 CPU를 얻는 데 걸린 시간)
(Algorithm of CPU Schduler)
- nonpreemptive (CPU를 강제로 당긴 적은 없습니다.
) - preemptive (CPU를 강제로 당겼다.
)
(현대적인 스케줄러 방식은 거의 거의 preemptive인 방법을 사용하고 있다고 하네요!
)
- FCFS(First-Come First-Served) ✨ 먼저 온 순서대로 처리 (nonpreemptive)
FCFS 방식의 경우, 이전에 어느 프로세스가 위치하는지에 따라
Waiting Time에 큰 영향을 미칩니다.
Convoy effect : 긴 프로세스가 먼저 도착하고 짧은 프로세스가 지나치게 많은 시간을 기다려야 함
2. SJF(Shortest-Job-First) ✨ 짧은 프로세스를 먼저 배치하여 CPU 관리 (nonpreemptive,preemptive)
non-preemptive 경우 :
SJF 스케줄링은 ready queue 프로세스 중 실행 시간이 가장 짧습니다.
작업에서 CPU를 할당하는 비선점형 방식으로 최단 작업 우선 스케줄링라고도 합니다.
(FCFS 스케줄링의 convoy effect를 완화하여 시스템의 효율성을 높였다고 하네요..!
)
preemptive 경우 :
새로 들어간 프로세스가 실행 중인 작업을 일시중단하고 실행할 수 있습니다.
🚨 SJF 방식의 두 가지 문제점 :
1.Starvation 문제: CPU 사용이 긴 프로세스는 영원히 서비스를 받지 못할 수 있습니다.
이것은 SJF 방식이 극단적으로 CPU 사용이 짧은 Job을 선호하기 때문입니다.
2. CPU 사용 시간을 추정할 수 있지만 CPU 사용 시간은 미리 알 수 없다.
(사용량이 길수록 예측하면 가중치가 줄어 평가됩니다)
3. Priority Scheduling 우선 순위 스케줄링 (nonpreemtive, preemtive)
(우선 순위가 높은 process에 우선 CPU를 준다)
preemtive:
우선 순위가 높은 process가 들어오면 cpu 할당
nonpreemtive:
우선순위가 높은 process가 들어가도 cpu 보증
🚨 Priority Scheduling 문제
우선순위가 낮은 프로세스는 너무 길기를 기다릴 수 있습니다.
해결책:
Aging 기술을 사용하면 낮은 프로세스의 우선 순위를 높일 수 있습니다.
기준은 기다리는 정도입니다.
4. Round Robin 현대 CPU 스케줄링 기술 (preemtive)
Round Robin 방법에서는 각 프로세스에 대해 CPU가 동일한 할당 시간으로 설정됩니다.
할당 시간이 끝나면 Timer interrupt 에 의해 CPU를 뺀 것이 되어, ready queue 에
맨 뒤로 돌출되는 프로세스를 반복합니다.
✨Round Robin 방식의 장점
CPU를 처음으로 얻을 때까지의 과정이 빠르다.
모든 프로세스에 CPU가 할당됩니다.
이상으로 CPU Scheduling 발표를 종료하겠습니다.
출처: http://kocw.net/home/search/kemView.do?kemId=1046323
강의: 이화여대, 반효경(운영체제)