140 likes | 443 Views
제 09 강 : CPU 스케줄링. CPU 스케줄링. 스케줄링 (Scheduling) 의 정의 자원의 사용 순서를 결정하는 일이다 . 스케줄링 평가 기준 공정성 ( 특정 프로세스가 불이익을 당하는가 ) Throughput ( 단위시간에 끝나는 작업 수 ) Response time 요청 목적에 맞는가 - 급한 작업 , 여유있는 작업 예측 가능성 ( 요청시마다 시간 편차가 심한가 여부 ) 오버 헤드 최소화 ( 스케줄링에 소요되는 시간과 공간 )
E N D
제09강 : CPU스케줄링 CPU 스케줄링
스케줄링 (Scheduling)의 정의 • 자원의 사용 순서를 결정하는 일이다. • 스케줄링 평가 기준 • 공정성 (특정 프로세스가 불이익을 당하는가) • Throughput (단위시간에 끝나는 작업 수) • Response time • 요청 목적에 맞는가 -급한 작업, 여유있는 작업 • 예측 가능성 (요청시마다 시간 편차가 심한가 여부) • 오버 헤드 최소화 (스케줄링에 소요되는 시간과 공간) • 균형적인 자원 이용 (다른 자원의 활용도를 높이는가)
선점 기법(Preemptive) • 하나의 프로세스가 자원을 점유하고 있을 때 • 다른 프로세스가 이 자원을 빼앗을 수 있는 방식 • 빠른 응답 시간을 요구하는 프로세스들에 적합하다. • 많은 오버헤드를 초래한다. • 비선점 기법(Non-preemptive) • 이미 할당된 자원을 강제로 빼앗지 않고, • 그 프로세스가 자원을 반납해야 스케줄링 하는 방식 • 응답 시간의 예측이 용이하다. • 짧은 작업이 긴 작업 뒤에 기다리게 되면 • 매우 오래 기다리게 된다. • preempt를 할 수 없는 자원들의 예 • printer, tape
스케줄링의 기본개념 • 스케줄링으로 전체 일감이 줄어드는 경우 • (Throughput이 영향받음) • disk scheduling • 우체부 스케줄링 • 스케줄링으로 전체 일감에는 변화가 없는 경우 • (Throughput 은 영향이 없음) • (Response time의 분포가 달라짐) • CPU scheduling, 식당 줄, 병원 줄 • 이러한 경우 • homogeneous job 들이면 스케줄링이 필요 없다 (같은 종류 job –분포 변화?) • heterogeneous job 들이면 스케줄링이 필요하다 • 예: I/O bound jobs, CPU bound jobs • terminal (foreground) jobs, realtime jobs, batch jobs
P1 P2 P3 0 20 22 23 FIFO(First In First Out) 스케줄링 • 비선점 방식의 스케줄링이다. • 길고 중요하지 않은 작업이 중요한 작업을 오래 기다리게 할 수 있다. • 대화식, 실시간 시스템에 부적합하다. • FCFS(First Come First Served) 스케줄링 방법이라고도 부른다. • 예: Process수행시간 P1 20 P2 2 P3 1
우선 순위(Priority) 스케줄링 • 작업마다 우선 순위 • 우선 순위가 높은 작업 먼저 • 무한봉쇄(Indefinite blocking), 기아상태(Starvation) • 기다린 시간에 비례하여 우선 순위를 높이는 에이징(Aging) 기법 우선순위 기다리는 시간
Deadline 스케줄링 • 작업의 Deadline 보장 • Hard Realtime 로봇 발 제어 • Soft Realtime MP3 • 여러 작업들의 deadline이 상충되면? • 스케줄링에 많은 오버 헤드가 들 수 있다. • 주로 실시간 시스템에서 사용된다.
Shortest-Job-First (SJF) • 각 프로세스는 자신의 수행시간을 제시 예: Process도착시간예상수행시간 P1 0.0 7 P2 2.0 4 P3 4.0 1 P4 5.0 4 • 비선점 스케줄링 기법이다. • 작업들의 평균 대기시간이 최소가 된다 • 수행시간을 미리 안다? Starvation 문제 P1 P3 P2 P4 0 3 7 8 12 16
SRT(Shortest Remaining Time) • Remaining 시간이 가장 작은 프로세스에게 먼저 할당 • 선점(Preemptive) 스케줄링 기법이다. • SJF 스케줄링 기법보다 많은 오버 헤드가 발생한다. • 역시 • 수행시간을 미리 안다? • Starvation 문제
HRN(Highest Response ratio Next) • SJF 기법의 긴/짧은 작업간의 불평등을 보완 대기시간 + 서비스를 받을 시간 큰 job이 오래 대기하면 유리 서비스를 받을 시간 짧은 job이면 유리 • 긴 작업(분자), 짧은 작업(분모) 모두 공평 • 비선점 스케줄링 기법이다. 우선 순위 =
CPU ready queue 라운드 로빈(RR : Round Robin) 스케줄링 • 시간 할당량(Time Slice, Quantum) 동안만 CPU를 쓴다. • Time slice를 다 써도 끝나지 않으면 CPU를 선점당한다. (timer 인터럽트) • CPU를 빼앗긴 프로세스는 ready 큐의 맨 뒤로 되돌아간다. • 특징 • 선점 스케줄링 기법이다. • 긴 작업이 있어도 N*(time slice) 초 이후에는 CPU를 할당받는다. • (N은 ready 작업의 수) • 따라서 짧은 작업이라면 (시스템의 부하에 관계 없이) 수초 내에 끝이 난다. • 수초 내에 응답해주어야 하는 대화식 시분할 시스템에 적합하다. • time slice를 무한히 크게 하면 FIFO 방식과 같아진다. • time slice를 크게 하면 I/O bound 작업이나 급한 작업에게 불리하다. • time slice를 작게 하면 compute bound 작업에게 불리해진다. • (context switch 오버헤드)
다단계 피드백 큐(Multilevel feedback queue) 스케줄링 • 여러 단계의 ready 큐로 구성된다. • 위의 큐는 아래 큐를 preempt 한다 • 밑으로 갈수록 큰 time slice를 가진다. • 새 프로세스는 맨 위의 큐로 들어간다. • 위의 큐들은 FIFO방식으로. • 실행 시간이 길어질수록 하위 단계 큐로 • 맨 밑의 큐는 round-robin 방식으로 • compute-bound jobs • 큰 time quantum 사용 Q=1 Q=10 Q=100 Q=1000
다단계 피드백 큐(Multilevel feedback queue) 스케줄링 • 여러 단계의 ready 큐로 구성된다. • 위의 큐는 아래 큐를 preempt 한다 • 밑으로 갈수록 큰 time slice를 가진다. • 새 프로세스는 맨 위의 큐로 들어간다. • 위의 큐들은 FIFO방식으로. • 실행 시간이 길어질수록 하위 단계 큐로 • 맨 밑의 큐는 round-robin 방식으로 • compute-bound jobs • 큰 time quantum 사용 Q=1 Q=10 Q=100 Q=1000
다단계 피드백 큐(Multilevel feedback queue) 스케줄링 • 여러 단계의 ready 큐로 구성된다. • 위의 큐는 아래 큐를 preempt 한다 • 밑으로 갈수록 큰 time slice를 가진다. • 새 프로세스는 맨 위의 큐로 들어간다. • 위의 큐들은 FIFO방식으로. • 실행 시간이 길어질수록 하위 단계 큐로 • 맨 밑의 큐는 round-robin 방식으로 • compute-bound jobs • 큰 time quantum 사용 Q=1 Q=10 Q=100 Q=1000