운영체제 5장 - CPU 스케줄링 알고리즘들
목차
5.1 기본 개념
5.2 Scheduling 기준(Criteria)
5.3 스케줄링 알고리즘(Scheduling Algorithm)
5.4 Thread 스케줄링
5.5 다중 프로세서 스케줄링
5.6 실시간 스케줄링
5.7 운영체제 사례
5.1 기본 개념
- 멀티프로그래밍의 목적은 CPU의 이용률을 최대화 하기 위함
- 프로세스 실행 사이클은 CPU 실행과 I/O 대기의 사이클로 구성됨
- 일부만 CPU 사용률이 높고, I/O는 CPU를 적게 사용함
- CPU Scheduler(short-term scheduler)
- ready queue에 있는 프로세스들 중 하나를 선택하여 이 프로세스에게 CPU를 할당함
- CPU 스케줄링 시점
- 언제 CPU 제어권을 넘겨줘야하는가?
- 비선점(non-preemptive) 스케줄링
- 다음과 같은 경우는반드시 스케줄링하여 새 프로세스를 선택해야함
- running -> waiting 상태로 전환
- terminate시
- 다음과 같은 경우는반드시 스케줄링하여 새 프로세스를 선택해야함
- 선점(preemptive) 스케줄링
- CPU 독점을 방지하거나, 프로세스 우선순위를 반영하고자 할 때 스케줄링
- running -> raedy 상태로 전환
- waiting -> ready 상태로 전환
- 대부분의 현대 OS가 이를 사용함
- CPU 독점을 방지하거나, 프로세스 우선순위를 반영하고자 할 때 스케줄링
- 선점 스케줄링의 문제점과 해결책
- 공유 데이터의 일관성(consistence) 문제
- 문제 상황 1)
한 프로세스가 데이터를 변경하는 도중에
다른 프로세스에게 선점되어 변경된 데이터를 저장하기 전에
CPU 제어권을 빼앗길 수도 있다 - 문제 상황 2)
다수의 프로세스가 데이터를 공유할 때,
경쟁적으로 데이터를 변경하면
데이터 일관성이 유지되지 않을 수 있다 -> 경쟁 조건(Race condition) - 공유 데이터 접근에 대한 조정이 필요함!
- 문제 상황 1)
- user mode에서의 preemption
- 한 프로세스가 데이터를 변경하는 동안,
다른 프로세스가 같은 데이터를 읽거나 수정하면 일관성이 유지되지 않음 - 운영체제가 제공하는 동기화 방식을 사용하여 데이터 일관성 문제가 발생하지 않도록 해야함
- 한 프로세스가 데이터를 변경하는 동안,
- kernel mode에서의 preemption
- 모든 커널 루틴은 커널 데이터를 공유함
- 커널은 system call을 통하여 요청된 프로세스의 작업을 처리할 수 있으며,
공유 데이터를 접근하는 커널 루틴이 실행되는 동안에,
인터럽트로 인해 다른 커널 루틴에게 선점되면
공유 데이터 일관성 유지가 되지 않을수 있음- 이러한 문제는 시스템 전체에 영향을 줄 수있으므로 매우 위험함!
- 운영체제 커널에서의 preemption 처리 방법
- 비선점형 커널 - 커널 내에서의 preemption을 허용하지 않음
- system call이 완료되거나, I/O block이 발생할때 까지 기다린 후에 context switching 수행
- 실시간 컴퓨팅을 지원하는데 부적합
- 선점형 커널 - 커널 내에서 preemtion을 허용
- 커널 내에서 공유 데이터 접근에 대한 동기화를 사용하여, 커널을 작성해야함
- 실시간 컴퓨팅을 지원하는데 적합
- 비선점형 커널 - 커널 내에서의 preemption을 허용하지 않음
- 공유 데이터의 일관성(consistence) 문제
- 디스패처(Dispatcher)
- CPU의 제어권을 CPU 스케줄러가 선택한 프로세스에게 주는 모듈
- context switching, CPU 동작 모드를 user mode로 전환, 선택한 프로세스가 다시 시작하도록, user program의 적절한 위치로 이동 등을 수행함
- Dispatch 지연 :
- 한 프로세스를 정지하고, 다른 프로세스의 수행을 시작할 떄 까지 소요되는 시간
- 가능한 작아야 성능이 좋다
5.2 Scheduling 기준(Criteria)
- CPU 이용률(Utilization)
- 처리량(Throughput) : 단위 시간당 수행이 완료된 프로세스
- 총 처리시간(Turnaround Time) : 프로세스를 실행하는데 소요된 시간
- 대기 시간(Waiting Time) : ready queue에서 대기하는 시간
- 응답 시간(Response Time) : 응답을 받을때까지 소요 시간
5.3 스케줄링 알고리즘(Scheduling Algorithm)
- 선입선처리(First-Come First-Serve: FCFS) 스케줄링
- 최단작업우선(Shortest-Job-Firest :SJF) 스케줄링
- 우선순위(Priority) 스케줄링
- 라운드로빈(Round Robing:RR) 스케줄링
- 다단계 큐(Multilevel Queue) 스케줄링
선입선처리(First-Come First-Serve: FCFS) 스케줄링
- 먼저 요청한 프로세스가 먼저 자원을 제공 받음
- 이미 사용중이라면, 사용이 끝날때까지 기다림
- 장점 :
- 스케줄링이 단순함
- 모든 프로세스가 실행 가능(기아 X)
- 프로세서가 지속적으로 유용한 프로세스를 수행하여 처리율이 높음
- 단점 :
- 프로세스의 실행시간을 이용하여 가장 짧은 시간을 갖는 프로세스가 먼저 자원을 할당받음
- 가장 짧은 시간을 갖는 프로세스를 어떻게 찾는가?
- 모든 프로세스 실행시간을 갖고 있어야 비교 가능
- 예측을 통해 가장 짧은 실행시간을 갖는 CPU Burst를 계산함
- 이전의 기록, 유사한 프로세스 등
- 가장 짧은 시간을 갖는 프로세스를 어떻게 찾는가?
- Shrotest Process Next(SPN), Shrotest Request Next(SRN)이라고도 불림
- 두가지 방식의 SJF 스케줄링
- 비선점 SJF : 프로세스는 CPU burst를 끝낼때 까지 선점되지 않음
- 선점 SJF : 새 프로세스의 CPU burst가, 현재 프로세스의 잔여 시간보다 작다면, 현재 프로세스가 선점되어 스케줄링됨
- 장점 :
- 항상 짧은 작업을 먼저 수행하여, 평균 대기시간이 가장 짧음
- 단점 :
- 프로세스마다 우선순위 속성을 가짐
- 보통 우선순위가 높을수록 작은 번호를 가짐
- 우선순위가 같다면, FIFO 방식으로 동작함
- 우선순위 정의에 고려되는 요인들
- 내부적 : 시간 제한, 메모리 요구, open file수, I/O와 CPU의 비율 등
- 외부적 : 프로세스 중요성, 비용의 유형과 액수 등
- 두가지 방식의 우선순위 스케줄링. 비선점, 선점
- SJF는 우선순위 스케줄링의 특별한 케이스. CPU burst time을 우선순위로 둔 경우임
- 장점 :
- 각 프로세스의 중요성에 따라 작업을 수행하므로 합리적
- 실시간 시스템에서 사용 가능
- 단점 :
- 시분할 시스템을 위해 설계된 스케줄링 기법
- Time-Slice, Time quantum이라는 작은양의 시간을 할당
- 전체 CPU burst time의 80%정도가 quantum time 보다 짧도록 정함
- 실행 프로세스는 이 시간 경과 후 선점되어, ready queue의 끝으로 이동함
- 타이머 인터럽트를 사용
- 장점 :
- 모든 프로세스가 공정하게 스케줄링 받을 수 있음
- 실행 큐에 프로세스의 수를 알고있을 때 유용함
- 프로세스의 짧은 응답시간을 가지고, 최악의 응답시간을 알 수 있음
- 평균 대기시간이 FIFO와 SJF보다 적음
- 단점 :
- Ready queue가 여러개의 큐로 분할됨
- 프로세스가 생성 시 하나의 큐에 영구적으로 할당됨
- 각 큐는 자신의 스케줄링 알고리즘을 각각 사용한다
- 큐 간의 스케줄링도 있음
- 고정 우선순위 스케줄링, Time slice 등을 사용
- 장점 :
- 응답이 빠름
- 단점 :
- 프로세스가 여러 큐들 사이의 이동을 허용함
- CPU burst가 크면 서서히 낮은 단계로 이동한다
- 큐 개수, 각 큐에 대한 스케줄링 알고리즘, 큐 승급/강등 시점, 진입할 큐 결정 방법 등의 매개변수 필요
- 장점 :
- 매우 유연하여 스케줄러를 특정 시스템에 맞게 구성할 수 있음
- 자동으로 입출력 중심과 프로세서 중심 프로세스를 분류함
- 적응성이 좋아 프로세스의 사전 정보가 없어도 최소작업 우선 스케줄링의 효과를 보여줌
- 단점 :
- 설계와 구현이 매우 복잡함
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.