개인공부 후 자료를 남기기 위한 목적임으로 내용 상에 오류가 있을 수 있습니다.
경성대학교 양희재 교수님 수업 영상을 듣고 정리하였습니다.
Ready Queue에서 프로세스들이 CPU의 서비스를 받기 위해 기다리는데, 현재 CPU에서 하고 있는 작업이 끝나게되면 어느 프로세스를 가져올지 결정하는 것
Preemptive vs Non-Preemptive (선점 vs 비선점)
Scheduling criteria(스케줄링 척도)
simple & fair: 먼저 온 놈을 먼저 작업한다. 제일 간단하고 공평한 방법이다. 그러나 정말 좋은 방법인가?
example: Find Average Waiting Time
3개의 프로세스가 거의 동시에 Ready Queue에 도착했다고 해보자.
Process | Burst Time(CPU 이용시간)
P1 | 24
P2 | 3
P3 | 3
Convoy Effect(호위효과): cpu 실행시간을 많이 쓰는애가 딱 앞에 있으면 나머지 애들이 뒤를 따라다니며 기다리고 있는 모습-> FCFS 의 단점실행시간이 가장 짧은 작업을 가장 먼저 실행함으로써 짧게 끝나는 프로세스를 앞장세워야 전체 대기시간이 줄어들게 함
Example : QWT = (3+16+9+0)/4 = 7msec
Provably optimal!
Not realistic, prediction may be needed
Process | Burst Time(CPU 이용시간)
P1 | 6
P2 | 8
P3 | 7
P4 | 3
Preemptive or Non-Preemptive
cf. Shortest-Remaining-Time-First(최소잔여시간 우선): 남아있는 시간이 얼마나 짧은가가 우선시가 된다.
Example
Process | Arrival-Time | Burst Time(CPU 이용시간)
P1 | 0 | 8
P2 | 1 | 4
P3 | 2 | 9
P4 | 3 | 5
typically an integer number
Example
Process | Burst Time(CPU 이용시간) | Priority
P1 | 10 | 3
P2 | 1 | 1
P3 | 2 | 4
P4 | 1 | 5
P5 | 5 | 2
우선순위는 어떻게 정하는가?
Preemptive or Non-Preemptive
Problem
Indefinite blocking: starvation(기아)aging빙빙돈다. 빙빙 돌면서 스케줄링한다.
Time-Sharing system(시분할/시공유 시스템): TSS에서 많이 사용하는 방법
Time quantum(Δ) 시간양자 = time slice (10~100msec) -> 1초동안에 보통 10~100번의 스위칭이 일어난다는 것을 의미!
Preemptive scheduling: p1이 안끝났다고 하더라도 일정 시간이 지나면 다음 프로세스로 넘어가기 때문에
Example
Process | Burst Time(CPU 이용시간)
P1 | 24
P2 | 3
P3 | 3
context switching overhead가 굉장히 빈번하게 된다.그래서 time slice를 너무 작게 하면 안된다.
time quantum을 얼마로 잡는가에 따라서 ATT가 되게 클수도 작을 수도 있다. 이에 따라서 성능이 달라진다. 좋은 time quantum을 잡는것이 중요하다.
Process | Burst Time(CPU 이용시간)
P1 | 6
P2 | 3
P3 | 1
P4 | 7
프로세스들은 이렇게 그룹을 지을 수 있다. 성격이 다양한 애들을 동일한 줄에 세우는것은 안되는것. 그러니 큐를 하나만 두는것이 아닌 여러개를 두게 되었다.
Queue를 여러개 두는것은 같으나
복수개의 Queue
다른 Queue로의 점진적 이동