1) 장기 스케줄링과 중기 스케줄링, 단기 스케줄링의 차이에 대하여 충분히 설명하세요. 다중 프로그래밍의 정도를 결정하는 스케줄링은 무엇인가요?
장기 스케줄러 = 작업 스케줄러(Job Schedule)
-스케줄링에 따라 디스크에서 메모리로 작업을 가져옴
-순서 결정, 제출 시간, 작업 이름, 작업길이(용량) 등의 정보 필요
단기 스케줄러 = 디스패처(Dispatcher)
-메모리에 적재된 프로세스 중 프로세서를 할당하여 실행 상태가 되도록 결정
중기 스케줄러 = 스와퍼(Swapper)
-여유 공간 마련을 위해 프로세스를 통째로 메모리->디스크로 쫓아냄
-그리고 여유 공간이 마련 됐을 때, 디스크->메모리로 불러와 중단되었던 부분부터 다시 실행
-이것을 스와핑(Swapping) 이라고 함
단기 스케줄러와 장기 스케줄러의 차이점
|
단기 스케줄러 |
장기 스케줄러 |
차이점: 실행 빈도 |
매우 빨라야 함 |
단기 스케줄러에 비해 상대적으로 드물게 수행 |
차이점: 호출 빈도 |
많음 |
적음 |
-> 단기 스케줄러와 장기 스케줄러의 가장 큰 차이점은 실행 빈도임.
-> 단기 스케줄러는 빠르게 실행되는 프로세스들간의 우선순위를 정하는 역할을 하기 때문에 스케줄링의 시간이 지연되면 안됌.
-> 따라서 상당히 빨라야 하고, 호출 빈도수가 많음.
-> 장기 스케줄러 같은 경우 시스템에 새로운 작업이 들어오는 것은 일반적으로 분 단위이므로 단기 스케줄러에 비해 호출 빈도수가 적음.
-> CPU Burst와 I/O Burst 둘 중 한쪽으로 작업이 치우치지 않고 균형이 맞아야 하므로 스케줄링 실행시간이 상대적으로 긴 편.
다중 프로그래밍의 정도를 결정하는 스케줄링 : 장기 스케줄러
2) 교재 588쪽, 문제 62를 풀어 보세요.
① 선입선처리, 최소작업 우선, 비선점 우선순위, 순환 할당(할당량=1)을 이용하여 이를 프로세스들의 실행을 설명하는 간트 차트로 그리시오.
② 각 스케줄링 알고리즘에 대한 반환시간은?
선입선처리 – ( 10 + 11 + 13 + 14 + 19 ) / 5 = 13.4
최소작업우선 – ( 19 + 1 + 4 + 2 + 9 ) / 5 = 7
비선점우선 – ( 16 + 1 + 18 + 19 + 6 ) / 5 = 12
순환할당 – ( 19 + 2 + 7 + 4 + 14 ) / 5 = 9.2
③ 각 스케줄링 알고리즘에 대한 대기시간은?
선입선처리 – ( 0 + 10 + 11 + 13 + 14 ) / 5 = 48 / 5 = 9.6
최소작업우선 – ( 9 + 0 + 2 + 1 + 4 ) / 5 = 16 / 5 = 3.2
비선점우선순위 – ( 6 + 0 + 16 + 18 + 1 ) / 5 = 41 / 5 = 8.2
순환할당 – ( 9 + 1 + 5 + 3 + 9 ) / 5 = 27 / 5 = 5.4
④ 어떤 스케줄링이 모든 프로세스에게 최소의 평균 대기시간을 갖는가?
-> 평균 대기시간이 3.2인 ‘최소작업우선’ 스케줄링
3) 다단계 피드백 큐 스케줄링 알고리즘과 전면 작업에는 라운드 로빈(순환 할당) 스케줄링을 사용하고, 후면 작업에는 선점 우선순위 알고리즘을 사용하는 다단계 큐(전면-후면) 프로세서 스케줄링 알고리즘의 차이에 대하여 충분히 설명하세요.
* 다단계 큐 스케줄링
1. 각 큐는 자신만의 독자적인 스케줄링을 가짐.
-> 예를 들어, 전면 작업 큐는 라운드로빈 스케줄링, 후면 작업 큐는 선점 우선순위 알고리즘
2. 큐와 큐는 선점 우선순위 스케줄링
-> 예를 들어, 우선순위가 낮은 큐에 있는 작업을 실행 중,
-> 우선순위가 높은 큐에 새로운 작업을 들어오면 즉시, 높은 큐의 작업에 프로세스를 양보함
3. 각 큐는 순서대로 절대적인 우선순위를 가짐, 큐 사이에 시간을 나눠 사용할 수도 있음
장점
1) 응답이 빠름
단점
1) 작업은 한 큐에서 다른 큐로 옮겨지지 않기 때문에 스케줄링 부담이 적지만, 융통성이 떨어짐
2) 우선순위가 낮은 프로세스가 오랫동안 CPU 할당을 기다리는 기아현상이 발생할 수도 있음
* 다단계 피드백 큐 스케줄링
1. 작업이 큐 사이 이동 가능
(CPU Burst는 낮은 우선순위 큐, I/O Burst는 높은 우선순위 큐에 놓음)
2. 프로세서 실행 시간이 너무 길면 작업을 낮은 단계 큐로 옮김
3. 입출력 위주의 프로세스에 우선권을 주는 방법
4. 높은 우선순위의 큐가 완전히 비어야 낮은 우선 순위의 큐에 있는 작업 실행