CPU 스케줄링

OS 2016. 1. 19. 14:54

선점 스케줄링(Preemptive Scheduling)

CPU 스케줄링 결정은 다음의 네 가지 상황 하에서 발생할 수 있다.

1. 한 프로세스가 실행 상태에서 대기 상태로 전환될 때(입출력 요청이나 자식 프로세스가 종료되기를 기다리기 위해 wait를 호출할 때)

2. 프로세스가 실행 상태에서 준비 완료 상태로 전환될 때(인터럽트가 발생할 떄)

3. 프로세스가 대기 상태에서 준비 완료 상태로 전환될 때(입출력 종료시)

4. 프로세스가 종료할 때


상황 1과 4의 경우 스케줄링 면에서는 선태의 여지가 없음. 비선점(non-preemptive), 협조적(cooperative)

비선점 스케줄링 하에서는 CPU가 한 프로세스에 할당되면, 프로세스가 종료하든지 또는 대기 상태로 전환해 CPU를 방출할 때까지 CPU를 점유한다. 


선점 스케줄링의 단점 :

데이터가 다수의 프로세스에 의해 공유될 때 경쟁 조건을 초래할 수 있음. 대부분의 UNIX 버전을 포함하여 몇몇 운영체제들은 문맥 교환을 수행하기 전에 시스템콜이 완료되거나 입출력 요구에 따른 봉쇄가 일어나기를 기다리는 방법 사용.

그러나 이런 방법은 주어진 시간 안에 태스크의 실행이 완료되어야 하는 실시간 컴퓨팅을 지원하기에는 별로.


인터럽트는 어느 시점에서건 일어날 수 있고, 커널에 의해서 항상 무시될 수 없기 때문에, 인터럽트에 의해서 영향을 받는 코드 부분은 반드시 동시 사용으로부터 보호되어야 한다. OS는 거의 항상 인터럽트를 받아들여야 함. 그렇지 않으면 입력을 잃어버리거나 또는 출력이 겹쳐서 쓰여질 수 있음. 이러한 코드 부분은 진입점에서 인터럽트 불능화(자주 발생해서는 안됨), 출구에서 인터럽트 가능화 해야 함. 


디스패처(Dispatcher)

CPU의 제어를 단기 스케줄러가 선택한 프로세스에게 주는 모듈

-문맥을 교환하는 일

-사용자 모드로 전환하는 일

-프로그램을 다시 시작하기 위해 사용자 프로그램의 적절한 위치로 이동하는 일

디스패치는 모든 프로세스의 문맥 교환 시 호출되므로, 가능한 최고로 빨리 수행되어야 함


스케줄링 기준(Scheduling Criteria)

-CPU 이용률(utilization) : 최대한 CPU를 바쁘게 유지해야 함, 실제 시스템에선 40~90% 정도

-처리량(throughput) : 작업량 측정의 한 방법은 단위 시간당 완료된 프로세스의 개수 = 처리량

-총처리 시간(turnaround time) : 메모리에 들어가기 위해 기다리며 소비한 시간, 준비 완료 큐에서 대기한 시간, CPU에서 실행하는 시간, 입출력 시간을 합한 시간

-대기 시간(waiting time) : 준비 완료 큐에서 대기하면서 보낸 시간의 합

-응답 시간(response time) : 하나의 요구를 제출한 후 첫 번째 응답이 나올 때까지의 시간

CPU 이용률과 처리량을 최대화하고 총처리 시간, 대기 시간, 응답 시간을 최소화하는 것이 바람직.

'OS' 카테고리의 다른 글

interrupt, trap, exception에 대한 간단 명료 정의  (0) 2016.03.22
컴퓨터 시스템의 구성  (0) 2015.12.26
Posted by 知彼知己百戰不殆
,