⛳CPU를 최대한 효율적으로 사용하기 위해서 어떻게 프로세스를 배정할까?
: CPU를 잘 사용하기 위해 프로세스를 잘 배정, 실행 중인 모든 프로세스들에게 골고루 CPU를 할당
: 현재 실행 중인 프로세스보다 높은 우선순위를 가진 프로세스가 등장함녀 스케줄러가 실행 순서를 바꿀 수 있음. OS가 자원을 강제로 회수할 수 있음
오버헤드란? 어떤 처리를 하기 위해 들어가는 간접적인(부가적인) 처리 시간/자원 등을 말함
ex) A라는 프로세스를 단순하게 처리하는 데에 10초가 걸리고 안전성을 고려하여 추가적으로 5초가 더 걸렸다면, 오버헤드는 5초가 됨.
: 현재 실행 중인 프로세스가 끝나야 다음 프로세스가 CPU를 할당받을 수 있음. OS가 자원을 강제로 회수 불가능
선점 스케줄링 | 비선점 스케줄링 |
---|---|
Priority Scheduling, Round Robin, Multilevel-Queue, Multilevel-Feedback-Queue | FCFS, SJF, HRN |
: First-come, First-served / First in First out 방식
: Shortest Job First, 실행시간이 가장 짧은 작업 먼저 실행하는 방식
: 우선순위를 계산하여 점유 불평등을 보완한 방법
: 정적, 동적으로 우선순위를 부여하여 우선순위가 높은 순서대로 처리
: 시분할 시스템을 위해 설계된 선점형 스케줄링 방식
프로세스에 우선순위를 두지 않고 순서대로 시간단위(Time-Quantum)로 CPU를 할당
시간 단위 안에 완료되지 않으면 큐의 맨 뒤에 배치되어 CPU를 독점하지 않음. 공평하게 사용 가능
⏳ Time Quantum(Time Slice)이란? 실행 단위 시간, 프로세스에 타임 퀀텀만큼 CPU를 할당하고 그 시간이 지나면 바로 다음 프로세스에 타임 퀀텀만큼 CPU를 할당
시간 단위가 너무 작으면 Context Switching이 잦아져서 오히려 성능이 떨어짐.
시간 단위가 너무 크면 FCFS와 비슷해짐.
: 작업들을 여러 종류의 그룹으로 나누어 여러 개의 큐를 이용하는 방식
: 프로세스들이 큐 사이를 갈아탈 수 있는 다단계 큐 스케줄링
목표 : 짧은 작업을 먼저 실행시켜서 반환시간을 최적화, 응답 시간 최적화
규칙
1. 작업은 무조건 가장 높은 우선순위에서 시작(Q2)
2. 우선순위(A) > 우선순위(B)이면 A 실행. B는 실행되지 않음
3. 우선순위(A)=우선순위(B)이면 A,B를 라운드 로빈으로 실행
4. 작업이 지정된 단계에서 배정받은 시간을 소진하면 우선순위 감소(한단계 아래 큐로 이동)(Q2→Q1, Q1→Q0)
5. 일정 주기마다 모든 작업을 가장 높은 우선순위 큐로 이동