Scheduling
- Starvation
- 짧은 수행 시간을 가진 interactive job이 너무 많아진다면 우선순위가 낮은 queue에 배치된 작업은 작업(오래 걸리는 작업)은 수행할 수 없게 된다.
- Game the scheduler
- 만약 time slice의 99%를 I/O 작업이 가져가 버린다면 오래걸리는 job들은 오히려 CPU를 거의 사용하지 못하게 될 수도 있다.
- 프로그램의 동작 특성 변화
- 프로그램을 처음 실행할 때는 CPU bound 작업이었는데 실행하고 보니 I/O bound 작업인 경우에 이미 낮아져 버린 우선순위로 인해서 I/O 작업을 원활히 수행할 수 없다.
지난 포스팅에서 본 문제점들이다.
문제점들을 해결하기 위해서 어떤 규칙을 추가하면 좋을지 알아보자.
Starvation 예방
규칙 5 (priority-boost) : 특정 time-period가 지나면 모든 job들을 최 상위 우선순위 큐로 올려준다
Game the scheduler 예방
규칙 4(규칙 4a, 4b를 재작성) : 각각의 job들은 일정 시간을 할당받고 해당 시간을 모두 사용하면 우선순위를 강등시킨다. (CPU를 반납해도 CPU사용시간을 기록함)
MLFQ 최적화
- 높은 우선순위 큐 : 짧은 time slices
- 낮은 우선순위 큐 : 긴 time slices
낮은 우선순위 큐로 갈 수 록 작업이 오래 걸리는 경향이 크므로 우선순위에 따라서 time slice의 크기를 달리해준다면 효율적인 CPU배분이 가능할 것이다.
정리
규칙 1 : A의 우선순위 > B의 우선순위 , A를 실행한다.
규칙 2 : A의 우선순위 == B의 우선순위 , A와 B를 RR방식으로 실행한다.
규칙 3 : 작업이 queue에 들어오면 가장 우선순위가 높은 queue에 먼저 배치한다
규칙 4(규칙 4a, 4b를 재작성) : 각각의 job들은 일정 시간을 할당받고 해당 시간을 모두 사용하면 우선순위를
강등시킨다. (CPU를 반납해도 CPU사용시간을 기록함)
규칙 5 (priority-boost) : 특정 time-period가 지나면 모든 job들을 최 상위 우선순위 큐로 올려준다
'CS > OS' 카테고리의 다른 글
[운영체제] Ch1. 서론 (0) | 2022.02.01 |
---|---|
[OS] Virtual Memory #1 (0) | 2021.07.21 |
[OS] Scheduling #2 (0) | 2021.07.10 |
[OS] Scheduling #1 (0) | 2021.07.09 |
[OS] Thread #1 (0) | 2021.07.08 |