1. 스케줄링의 목적 공정한 스케줄링 균형 있는 자원 사용(유휴상태 자원이 없도록) Section 2 프로세스 스케줄링 1. 스케줄링의 목적 공정한 스케줄링 균형 있는 자원 사용(유휴상태 자원이 없도록) 응답 시간과 자원 이용간의 조화(trade off) 응답 시간 최소화 처리량 극대화 2009학년도 1학기 “운영체제” 동명대학교 정보보호학과 조성목
2. 스케줄러의 구조와 스케줄링 기법 Section 2 프로세스 스케줄링 2009학년도 1학기 “운영체제” 2009학년도 1학기 “운영체제” 동명대학교 정보보호학과 조성목
프로세스 스케줄러 구조 순서기(sequencer) CPU를 기다리고 있는 프로세스들의 프로세스 디스크립터의 Section 2 프로세스 스케줄링 프로세스 스케줄러 구조 순서기(sequencer) CPU를 기다리고 있는 프로세스들의 프로세스 디스크립터의 포인터를 준비 리스트로 위치 디스패처 문맥교환기를 실행하여 CPU에서 프로세스를 제거한 후 준비리스트에 있는 준비 프로세스중 하나를 선택하고 선택된 프로세스에 CPU를 할당 문맥 교환기 CPU로부터 제거되는 프로세스를 위하여 CPU 레지스터에 있는 모든 내용(PC, IR, 조건상태, 프로세스 상태, ALU 상태)를 프로세스 디스크립터에 저장 2009학년도 1학기 “운영체제” 동명대학교 정보보호학과 조성목
Section 2 프로세스 스케줄링 문맥 교환기 구조 2009학년도 1학기 “운영체제” 동명대학교 정보보호학과 조성목
문맥 교환기 문맥 교환은 CPU 레지스터에 저장된 한 프로세스의 상태정보를 저장하고 다른 프로세스를 위한 알맞은 정보를 Section 2 프로세스 스케줄링 문맥 교환기 문맥 교환은 CPU 레지스터에 저장된 한 프로세스의 상태정보를 저장하고 다른 프로세스를 위한 알맞은 정보를 레지스터로 쓰기 위한 연산 프로세스의 실행이 멈추었을 때 모든 CPU 레지스터의 내용은 그 프로세스 디스크립터에 저장 프로세스가 다시 시작되기 전에 이전에 저장되었던 레지스터의 내용들이 물리적 CPU 레지스터로 다시 복사 2009학년도 1학기 “운영체제” 동명대학교 정보보호학과 조성목
프로세스 스케줄링(CPU 자원할당) 분류의 유형 Section 2 프로세스 스케줄링 프로세스 스케줄링(CPU 자원할당) 분류의 유형 프로세스 스케줄링 기능 별 분류 작업 스케줄링 프로세스 스케줄링 방법 별 선점 스케줄링 비선점 스케줄링 알고리즘 별 분류 우선순위 스케줄링 기한부 스케줄링 FIFO 스케줄링 Round Robin 스케줄링 SJF(shortest job first) 스케줄링 SRT(shortest remaining time) 스케줄링 HRN(highest response ratio next) 스케줄링 MLQ(multi level queue) 스케줄링 MFQ(multilevel feedback queue) 스케줄링 2009학년도 1학기 “운영체제” 동명대학교 정보보호학과 조성목
3. 선점 및 비선점 스케줄링 1) 선점(preemptive) 스케줄링 한 프로세스가 CPU를 차지하고 있을 때 특징 Section 2 프로세스 스케줄링 선점 한 프로세스가 점유하고 있는 자원을 강제로 회수하여 다른 프로세스에 넘겨주는 것 3. 선점 및 비선점 스케줄링 1) 선점(preemptive) 스케줄링 한 프로세스가 CPU를 차지하고 있을 때 다른 프로세스가 현재 프로세스를 중지시키고 자신이 CPU를 차지할 수 있는 스케줄링 특징 우선순위가 높은 프로세스를 먼저 수행할 때 유리 빠른 응답시간을 요구하는 시분할 시스템에 유용 많은 오버헤드를 초래 2009학년도 1학기 “운영체제” 동명대학교 정보보호학과 조성목
2) 비선점(non preemptive) 스케줄링 Section 2 프로세스 스케줄링 2) 비선점(non preemptive) 스케줄링 한 프로세스가 CPU를 할당 받으면 CPU는 그 프로세스로부터 빠져 나올 수 없음 특징 짧든 길든 모든 프로세스에 대한 요구를 공정히 처리 응답시간의 예측이 가능 짧은 작업이 긴 작업을 기다리는 경우가 종종 발생 2009학년도 1학기 “운영체제” 동명대학교 정보보호학과 조성목
4. 스케줄링 알고리즘 1) 우선순위 스케줄링 – non preemptive 각 프로세스에게 우선 순위를 부여하여 순위가 높은 Section 2 프로세스 스케줄링 4. 스케줄링 알고리즘 1) 우선순위 스케줄링 – non preemptive 각 프로세스에게 우선 순위를 부여하여 순위가 높은 순서대로 처리하는 방법 우선 순위 기법 ① 정적 우선 순위 실행이 쉽고 상대적으로 오버헤드는 적으나, 반면 주위 여건의 변화에 적응하지 못하고 우선 순위를 바꾸지 않음 ② 동적 우선 순위 상황 변화에 잘 적응. 구현하기가 복잡하고 오버헤드가 많으나,시스템의 응답도를 증가시켜 주므로 효율성 2009학년도 1학기 “운영체제” 동명대학교 정보보호학과 조성목
4개의 우선순위를 갖는 스케줄링 우선순위 1인 실행 가능한 프로세스가 있는 한, 라운드 로빈 Section 2 프로세스 스케줄링 4개의 우선순위를 갖는 스케줄링 우선순위 1인 실행 가능한 프로세스가 있는 한, 라운드 로빈 방식으로 주어진 하나의 프로세스가 할당시간 동안 곧바로 실행 우선순위 1인 프로세스가 비게 되면, 우선 순위 2인 프로세스가 라운 드 로빈 방식으로 실행되고, 우선순위 1,2가 비면 우선순위 3이 실행 우선순위가 변하지 않으면 가장 낮은 우선순위 작업은 기아 상태에 빠짐 2009학년도 1학기 “운영체제” 동명대학교 정보보호학과 조성목
예를 들어, 시간 t=0에 P1, P2, P3, P4, P5 순으로 도착한 다음의 프로세스들의 집합 고려 할 때 Section 2 프로세스 스케줄링 예를 들어, 시간 t=0에 P1, P2, P3, P4, P5 순으로 도착한 다음의 프로세스들의 집합 고려 할 때 우선순위 스케줄링에 대한 Gantt 차트. 프로세스 우선순위 버스트 시간 대기 시간 반환 시간 P1 3 10 6 16 P2 1 P3 19 P4 4 20 P5 2 5 P2 P5 P1 P3 P4 1 6 16 19 20 2009학년도 1학기 “운영체제” 동명대학교 정보보호학과 조성목
P1=6ms, P2=0ms, P3=16ms, P4=19ms, P5=1ms Section 2 프로세스 스케줄링 각 프로세스의 대기시간 P1=6ms, P2=0ms, P3=16ms, P4=19ms, P5=1ms 각 프로세스의 반환시간 = 버스트 시간 + 대기 시간 평균 대기 시간 = (6 + 0 + 16 + 19 + 1)/5 = 8.4 * 10 ms(CPU 버스트 시간의 길이) 평균 반환시간 = (16 + 1 + 19 + 20 + 6)/5 = 12.4 * 10 ms 2009학년도 1학기 “운영체제” 동명대학교 정보보호학과 조성목
2) 기한부(Deadline) 스케줄링 – non preemptive Section 2 프로세스 스케줄링 2) 기한부(Deadline) 스케줄링 – non preemptive 기한부(deadline)=작업들이 명시된 시간이나 기한 내에 완료되도록 계획되며, 작업결과가 시간 내에 구해지면 유용하고, 시간이 지난 후에 구해지면 쓸모가 없게 됨 기한까지 작업을 끝내기 위하여 자원안배를 주의 깊게 계획 많은 기한부 작업들이 동시에 실행되면 스케줄링이 너무 복잡 기한부 스케줄링에 의해서 요구되는 집중적인 자원 운영은 많은 오버헤드가 걸림 2009학년도 1학기 “운영체제” 동명대학교 정보보호학과 조성목
두 번째 스케줄링에 대한 Gantt 차트가 가장 빠름 Section 2 프로세스 스케줄링 두 번째 스케줄링에 대한 Gantt 차트가 가장 빠름 p1 p2 p3 p4 p5 1275 1050 550 200 75 첫 번째 세 번째 대기,반환시간 계산해 볼것 프로세스 버스트 시간 종료시한 대기 시간 반환 시간 P1 350 575 200 550 P2 125 75 P3 475 1050 1025 P4 250 none 1275 P5 2009학년도 1학기 “운영체제” 동명대학교 정보보호학과 조성목
3) FCFS 스케줄링 – non preemptive Section 2 프로세스 스케줄링 3) FCFS 스케줄링 – non preemptive FCFS(First Come First Service) 스케줄링은 가장 간단한 기법으로써 대기 큐에 도착한 순서에 따라 CPU를 할당 일단 프로세스가 CPU를 차지하면 완료될 때까지 수행 다른 방식에 비하여 작업 완료 시간을 예측하기가 용이 긴 작업이 짧은 작업을 오래 동안 기다리게 할 수 있고 중요하지 않은 작업이 중요한 작업을 기다리게 하므로 어느 정도 불합리 2009학년도 1학기 “운영체제” 동명대학교 정보보호학과 조성목
각 프로세스의 대기시간 : P1=10ms, P2=24ms, 3=27ms, P4=30ms Section 2 프로세스 스케줄링 FCFS 스케줄링에 대한 Gantt 차트 프로세스 버스트 시간 대기 시간 반환 시간 P1 24 P2 3 27 P3 30 P4 10 40 P1 P2 P3 P4 24 27 30 40 각 프로세스의 대기시간 : P1=10ms, P2=24ms, 3=27ms, P4=30ms 평균 대기 시간 = (0 + 24 + 27 + 30)/ 4 = 20.25 * 10ms 평균 반환시간 = (24 + 27 + 30 + 40)/4 = 30.25 * 10 ms 2009학년도 1학기 “운영체제” 동명대학교 정보보호학과 조성목
4) SJF 스케줄링 – non preemptive Section 2 프로세스 스케줄링 4) SJF 스케줄링 – non preemptive SJF(Shortest Job First) 스케줄링은 대기중인 작업 중에서 수행 시간이 가장 짧다고 판정된 것을 먼저 수행 FCFS보다 평균 대기 시간을 감소 긴 작업보다 짧은 작업에게 오버헤드 면에서 볼 때 더 유리 문제점 수행할 작업이나 프로세스가 얼마나 긴 것인가를 정확히 알아야 하는데, 이 정보를 얻기가 어렵다는 점 2009학년도 1학기 “운영체제” 동명대학교 정보보호학과 조성목
예를 들어, 시간 0에 도착한 다음의 프로세스들의 P1, P2, Section 2 프로세스 스케줄링 예를 들어, 시간 0에 도착한 다음의 프로세스들의 P1, P2, P3, P4 집합을 고려, CPU 버스트 시간의 길이는 10ms. 2009학년도 1학기 “운영체제” 동명대학교 정보보호학과 조성목
각 프로세스의 대기시간 : P1=3ms, P2=16ms, P3=9ms, P4=0ms Section 2 프로세스 스케줄링 SJF 스케줄링에 대한 Gantt 차트 프로세스 버스트 시간 대기 시간 반환 시간 P1 6 3 9 P2 8 16 24 P3 7 P4 P4 P1 P3 P2 3 6 16 24 각 프로세스의 대기시간 : P1=3ms, P2=16ms, P3=9ms, P4=0ms 평균 대기 시간 = (3 + 9 + 16 + 0)/4 = 7 * 10 ms. 평균 반환시간은 (9 + 24 + 16 + 3)/4 = 13 * 10 ms. 2009학년도 1학기 “운영체제” 동명대학교 정보보호학과 조성목
5) HRN 스케줄링 – non preemptive Section 2 프로세스 스케줄링 5) HRN 스케줄링 – non preemptive HRN(Highest Response ratio Next) 스케줄링은 SJF의 약점, 특히 긴 작업과 짧은 작업간의 지나친 불평들을 보완한 기법 일단 한 작업이 CPU를 차지하면 그 작업은 완성될 때 까지 실행. 긴 작업과 짧은 작업간의 편향성을 어느 정도 완화 짧은 작업이나 대기 시간이 큰 작업은 우선순위가 높아짐 우선순위 = 대기시간 + 버스트 시간 버스트 시간 2009학년도 1학기 “운영체제” 동명대학교 정보보호학과 조성목
P1의 우선순위 = (12+ 3)/3 = 5, P2의 우선순위 = ( 8+ 4)/4 = 3, Section 2 프로세스 스케줄링 각 프로세스의 우선순위 P1의 우선순위 = (12+ 3)/3 = 5, P2의 우선순위 = ( 8+ 4)/4 = 3, P3의 우선순위 = ( 8+ 8)/8 = 2, P4의 우선순위 = (15+5)/5 = 4 우선순위는 P1이 가장 높으며, P4, P2, P3의 순서로 CPU를 할당 2009학년도 1학기 “운영체제” 동명대학교 정보보호학과 조성목
6) 라운드 로빈 스케줄링 - preemptive Section 2 프로세스 스케줄링 6) 라운드 로빈 스케줄링 - preemptive 라운드 로빈(Round Robin) 스케줄링은 FCFS에 의해서 프로세스 들이 내보내어 지며, 각 프로세스는 같은 크기의 CPU 시간을 할당 만약, 프로세스가 CPU 시간이 만료 될 때까지 처리를 완료하지 못하면 그 중앙처리 장치는 대기중인 다음 프로세스로 넘어가며 (preemptive), 실행 중이던 프로세스는 준비 완료 리스트의 가장 뒤로 보내짐 할당 시간의 크기는 시스템의 동작에 절대적인 영향 할당 시간이 크면 FCFS 방식과 동일, 시분할 시스템에 많이 사용 할당 시간이 작으면, 문맥 교환을 위한 오버헤드 증가 2009학년도 1학기 “운영체제” 동명대학교 정보보호학과 조성목
각 프로세스의 대기시간 : P1=6 ms, P2=10 ms, P3=13 ms로 할 때 Section 2 프로세스 스케줄링 프로세스 버스트 시간 대기 시간 반환 시간 P1 24 6 30 P2 3 10 13 P3 16 P1 P2 P3 P1 10 13 16 30 각 프로세스의 대기시간 : P1=6 ms, P2=10 ms, P3=13 ms로 할 때 평균 대기 시간= (6 + 10 + 13)/ 3 = 9.67 * 10 ms. 평균 반환시간 = (30 + 13 + 16 )/3 = 19.67 * 10 ms 2009학년도 1학기 “운영체제” 동명대학교 정보보호학과 조성목
7) SRT 스케줄링 - preemptive SRT(Short Remaining Time) 스케줄링은 SJF와 마찬가지로 Section 2 프로세스 스케줄링 7) SRT 스케줄링 - preemptive SRT(Short Remaining Time) 스케줄링은 SJF와 마찬가지로 새로 도착한 프로세스를 포함하여 처리가 완료되는데, 가장 짧은 시간이 소요된다고 판단되는 프로세스를 먼저 수행 실행중인 프로세스라도 남은 처리시간이 더 짧다고 판단되는 프로세스가 생기면 언제라도 실행중인 프로세스가 선점 => 수행중인 각각의 작업들에 대한 실행시간을 추적 보유 (선점으로 인한 오버헤드) SJF 기법에 선점방식을 도입한 변형된 방법 긴 작업은 SJF보다 대기시간이 김 2009학년도 1학기 “운영체제” 동명대학교 정보보호학과 조성목
Section 2 프로세스 스케줄링 2009학년도 1학기 “운영체제” 동명대학교 정보보호학과 조성목
P1이 도착하여 CPU를 할당 받아 수행하는 중 1ms후에 버스트 시간이 8ms인 P2가 도착 Section 2 프로세스 스케줄링 프로세스 도착 시간 버스트 시간 대기 시간 반환 시간 P1 6 P2 1 8 15 23 P3 2 7 14 P4 3 P1 P4 P3 P2 6 9 16 24 P1이 도착하여 CPU를 할당 받아 수행하는 중 1ms후에 버스트 시간이 8ms인 P2가 도착 P1의 남은 버스트시간(5ms)이 P2의 버스트시간보다 크므로 P1계속 수행 2ms후에 버스트 시간이 7ms인 P3이 도착하지만, P1의 4ms남은 버스트 시간이 P3의 버스트 시간보다 크므로 역시 P1이 계속 수행. 3ms후에 버스트 시간이 3ms인 P4이 도착하지만, P1의 3ms 남은 버스트 시간과 P4의 버스트 시간과 같으므로 P1이 마지막 3ms까지 수행 후 시스템을 떠남 큐에는 P1을 제외한 3개의 작업이 남아 있고 그 중에서 가장 작은 P4가 수행되고, 그 다음에는 P3, P2의 순서로 수행 2009학년도 1학기 “운영체제” 동명대학교 정보보호학과 조성목
SRT에서의 대기 시간 = CPU 할당대기시간 - 도착시간 각 프로세스의 대기시간 Section 2 프로세스 스케줄링 SRT에서의 대기 시간 = CPU 할당대기시간 - 도착시간 각 프로세스의 대기시간 P1은 (0-0)=0ms, P2는 (16-1)=15ms, P3은 (9-2)=7ms, P4는 (6-3)=3ms. 평균 대기 시간 = (0 + 15 + 7 + 3)/4 = 6.25 * 10 ms. 평균 반환시간= (6 + 23 + 14 + 6)/4 = 12.25 * 10 ms. 2009학년도 1학기 “운영체제” 동명대학교 정보보호학과 조성목
8) 다단계 큐 알고리즘 - preemptive Section 2 프로세스 스케줄링 8) 다단계 큐 알고리즘 - preemptive 다단계 큐(multi level queue) 알고리즘은 작업들을 여러 종류의 그룹으로 나누어 여러 개의 큐를 이용하는 스케줄링 기법으로 그룹화된 작업들은 각각의 준비 큐에 넣어두고 각 큐의 독자적인 스케줄링 알고리즘에 따라서 CPU를 할당하는 방법 다단계 큐 알고리즘은 준비상태 큐를 여러 종류로 분할 => 상위단계에서 하위 단계까지 5개의 큐로 분할 2009학년도 1학기 “운영체제” 동명대학교 정보보호학과 조성목
일괄 처리 작업이 실행중일 지라도 상위 단계 큐에 작업이 들어오면 일괄 처리 작업은 CPU를 "선점" 당함 Section 2 프로세스 스케줄링 일괄 처리 작업이 실행중일 지라도 상위 단계 큐에 작업이 들어오면 일괄 처리 작업은 CPU를 "선점" 당함 한 큐에서 다른 큐로의 작업 이동불가 2009학년도 1학기 “운영체제” 동명대학교 정보보호학과 조성목
9) 다단계 피드백 큐 - preemptive 프로세스들은 CPU의 사용시간에 따라 입출력 위주와 CPU Section 2 프로세스 스케줄링 9) 다단계 피드백 큐 - preemptive 프로세스들은 CPU의 사용시간에 따라 입출력 위주와 CPU 위주로 구분되는데 이를 기준으로 서로 다른 할당시간을 부여 새로운 프로그램이 들어오면 높은 우선순위를 할당하여 단계 1에서 즉시 수행하고, 점차 낮은 우선순위를 부여하며 마지막 단계 n에서는 그 작업이 완료 될 때가지 라운드 로빈으로 순환 2009학년도 1학기 “운영체제” 동명대학교 정보보호학과 조성목
MFQ의 기준 짧은 작업에 유리 효율적인 IO 장치이용을 위해 IO 위주 프로세스에 우선권 Section 2 프로세스 스케줄링 MFQ의 기준 짧은 작업에 유리 효율적인 IO 장치이용을 위해 IO 위주 프로세스에 우선권 가능한 한 빨리 작업의 특성을 알고 그에 맞게 스케줄링. 프로세스가 보다 하위단계의 큐로 옮겨 갈수록 주어진 할당 시간은 점차 크게 설정. 이는 보다 높은 단계에 있는 큐의 프로세스가 더 높은 우선 순위를 갖기 때문 2009학년도 1학기 “운영체제” 동명대학교 정보보호학과 조성목