개인공부 후 자료를 남기기 위한 목적임으로 내용 상에 오류가 있을 수 있습니다.
경성대학교 양희재 교수님 수업 영상을 듣고 정리하였습니다.
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로의 점진적 이동