CPU Scheduling
。RAM의 스케쥴링 큐의Ready Queue에 적재되어 대기중인프로세스들 중CPU Core의CPU 제어권을 배정할우선순위 프로세스를 선택하는 작업
。OS는CPU를 각프로세스에게 어떤 순서로, 얼만큼 할당할 건지CPU 스케줄링을 수행
▶CPU 낭비를 최대한 감소
。OS의멀티프로그래밍이 가능하게하는 필수요소
▶멀티프로그래밍을 통해RAM에 적재된프로세스들을Concurrently하게 실행하여CPU 사용률을 극대화
。대부분의OS의CPU Scheduling은프로세스보다는Kernel Thread를 대상으로스케쥴링을 지원
CPU 제어권
。CPU가 현재 실행해야 할프로세스를 결정 및 처리하는권한
▶OS와 여러프로세스가 동시에 실행되는 환경에서 어떤프로세스가CPU를 점유할 지 결정하는 역할을 수행
CPU Scheduling의 성능척도
。시스템 입장에서성능척도:CPU Usage,Throughput
▶CPU하나로 최대한 많은 작업을 수행하는것을 판단하기위한척도
。프로그램 입장에서성능척도:대기시간,응답시간,소요시간
▶프로그램이 최대한 빨리 끝나면 성능이 좋음.
CPU 이용률( CPU Utilization )
。전체 시간중CPU의유휴시간을 제외한일한시간의비율
▶ 가능한 한 항상CPU를 바쁜 상태로 유지하도록 활용하는 척도
。높을수록 성능이 좋음
처리량( Throughput )
。Throughput: 단위시간 당 처리하는프로세스갯수
▶Throughput을 최대한 증진
。높을수록 성능이 좋음
소요시간( Turnaround time ) :
。프로세스의Turnaround time( =CPU 요청시점부터CPU를 점유하여 사용이 완료될때까지 소요된 시간 )
▶프로세스의Execute시 제출부터 완료까지의 시간을 최소화해야한다.
。짧을수록 성능이 좋음
대기시간( Waiting time ) :
。프로세스들이CPU 제어권을 획득할때까지Ready Queue에서 대기하는 총 시간
。짧을수록 성능이 좋음
응답시간( Response time )
。Ready Status의프로세스에게 최초로CPU가할당될때까지 소요된 시간
。짧을수록 성능이 좋음
Burst와Bound
。프로세스실행 중 발생하는CPU 작업과I/O 작업의시간
▶프로세스는CPU Burst와I/O Burst를 교대로 반복하며 실행
。일반적으로CPU Bound의 빈도는 적고,I/O Bound의 빈도는 많다
▶CPU Scheduling을 사용하면CPU성능이 증진되는 이유
Burst
。프로세스실행 중 특정 작업(CPUorI/O)를 처리하는데 소요되는 시간
▶CPU Burst:프로세스가CPU를 사용 시계산이나데이터 처리작업을 수행하는데 소요되는 시간
▶I/O Burst:프로세스가입출력장치를 사용해데이터 입출력에 소요되는 시간
。I/O Burst의 경우 기본적으로입출력장치의I/O 연산이CPU 연산에 비해 수천배 느린 특징으로CPU Burst에 비해 긴 시간이 소요.
▶CPU BurstI/O Burst
Bound
。프로그램마다CPU Burst와I/O Burst의 실행비율이 다르다.
。일반적으로CPU Bound에 비해I/O Bound의 빈도가 많다
( 상 :CPU Bound/ 하 :I/O Bound)
。CPU Bound:CPU Burst의 비율이 많은프로그램
▶CPU 사용시간이I/O Waiting time보다 많은 경우
。I/O Bound:I/O Burst의 비율이 많은프로그램
▶I/O Waiting time이 많은 경우
CPU burst<I/O burst지만, 일반적으로I/O Bound의 작업량은 적고,CPU Bound의 작업량이 많으므로 큰 작업에 대해서는CPU Bound>I/O Bound
CPU 스케쥴러( CPU Scheduler )
。RAM에서Execute대기중인프로세스중CPU의 제어권을 우선적으로 배정할프로세스를 선택.
▶프로세스는Ready상태로Ready Queue에서 선택 대기되있는 상태
▶ 이후 선택된프로세스로디스패처를 통해Context Switching.
。CPU 스케쥴러는프로세스 메모리 레이아웃에서Text Section에서 코드로 구현
。우선순위큐( Proiority Queue )를 사용해프로세스의 우선순위를 결정
CPU Scheduler종류
장기 스케쥴러( Long-Term Scheduler )
。보조기억장치에 있는프로그램( =Job Queue) 중 어떤프로그램을주기억장치로로드할 지 결정하는스케쥴러
▶주기억장치내프로세스 수를 제한하여메모리 과부하방지
중기 스케쥴러( Medium-Term Scheduler )
。실행중인프로세스를주기억장치에서보조기억장치로 이동하거나,보조기억장치에서주기억장치로 복구하는스케쥴러
▶주기억장치의메모리 부족시 우선순위가 낮은프로세스를Suspended 상태로 전환하여보조기억장치로 이동 후메모리 여유시 다시프로세스를복구
단기 스케쥴러( Short-Term Scheduler )
。Ready Queue에 존재하는프로세스중CPU 제어권을 획득하여CPU를점유할프로세스를 스케쥴링 알고리즘을 기반으로 선택하는스케쥴러
▶ 실행속도가 매우 빠르다. (ms단위로 동작 )
CPU Scheduler의의사결정
。의사결정( Decision Making ) : 여러 대안 中 최선의 대안을 선택하는 과정
프로세스의 상태변환 시
。Running→Ready:선점형 스케쥴링
。Waiting→Ready:선점형 스케쥴링
。Running→Waiting:비선점형 스케쥴링
。Termination:비선점형 스케쥴링
디스패처( Dispatcher )
。CPU Scheduler에 의해 선택된프로세스에게Context Switching을 수행하여CPU 코어의 제어권을 전달하는모듈
▶CPU 스케쥴러가우선순위 프로세스를 선택 시디스패처가 실제Context Switching을 수행
。Context Switching이 발생할때마다디스패처도 같이 동작하므로디스패처의 처리시간이 가급적 빨라야함
▶Dispatch Latency를 최소화
디스패치( Dispatch ) :
。Ready Queue에서CPU 스케쥴러에게 선택된Ready 상태의프로세스를 실제로CPU에할당하는 과정
- Dispatch Latency
。실행중인프로세스의PCB정보를Save하고 교체될프로세스의PCB정보를Restore하는데 소요되는 시간
▶ 이를 최소화해야CPU성능이 좋다.
- 디스패처의 기능
。실행중인프로세스의Context( =PCB정보 )를 교체될프로세스의Context로 변경
。프로세스를User mode로 전화
。대기중인프로세스의 작업을 재개하기위한 적합한 위치로Jumping
출처
。운영체제 공룡책 강의