CPU 스케줄링

OS 2015. 7. 31. 14:54

CPU 스케쥴링의 대상은 누구인가?

프로세스와 스레드


멀티 태스킹은 어떻게 가능한가?

CPU가 여러 프로세스들에게 시간을 분할(시분할, Time Slice)하여 

자원을 사용하게끔 동작하여 마치 동시에 실행되고 있는 것과 같이 동작 할 수 있다.


시간을 어떻게 분할하는지에 대한 연구가 CPU 스케쥴링이다.


선점형 스케쥴링? 비선점형 스케쥴링?

선점형 스케쥴링

- 한 프로세스가 CPU를 차지하고 있을 때 우선순위가 높은 다른 프로세스가 현재 프로세스를 중지시키고 자신이 CPU를 차지할 수 있는 경우

- 높은 우선순위를 가진 프로세스들이 빠른 처리를 요구하는 시스템에서 유용 

장점 : 빠른 응답시간을 요구하는 시분할 시스템에 유용 

단점 : 높은 우선순위 프로세스들이 자주 들어오는 경우 오버헤드를 초래 


비선점형 스케쥴링

- 한 프로세스가 CPU를 할당받으면 다른 프로세스는 CPU를 점유못함(빼앗을 수 없음)

장점 : 모든 프로세스들에게 공정하고 응답시간의 예측이 가능 

단점 : 짧은 작업을 수행하는 프로세스가 긴 작업이 종료될 때까지 기다려야 함 



CPU 스케쥴링의 방법들

선점형 스케쥴링

하나의 프로세스가 CPU를 점유하고 있을 때 다른 프로세스가 CPU를 빼앗을 수 있는 방법. 

1) Round-Robin 기법

FCFS(First Come First Served)에 의해서 프로세스들이 할당됨

서로 다른 프로세스들은 같은 시간을 할당받음

할당된 시간이 지나면 작업이 완료되지 않더라도 중단되고, 다시 큐로 이동

장점 : 시분할 방식에 효과적이며, 골고루 서비스가 가능하고  대화식 시스템에 유리하다.

단점 : 타임 슬라이스 그러니까 시분할이 작으면 문맥교환에 많은 비용이 들어 퍼포먼스가 떨어지게 된다.


2) SRT(Shortest Remaining Time) 스케쥴링

가장 짧은 시간이 소요된다고 판단되는 프로세스를 먼저 수행한다.

작업하는 중이라도 남은 큐 중에 더 짧게 소요 될 수 있다고 판단되는 프로세스가 준비되면

문맥교환 후 그 작업을 수행한다.

단점 : 긴 작업은 SJF(Shortes Job First)보다 오래 걸린다.


3) 다단계 큐(Multi Level Queue) 스케쥴링

- 작업들을 여러 종류의 그룹으로 나누어 여러개의 큐를 이용하는 기법

- 일반적으로 프로세스 우선순위에 따라 시스템 프로세스, 대화형 프로세스, 편집 프로세스일괄 처리 프로세스 등의 큐로 나누는 것

각 준비상태 큐는 독자적으로 스케쥴링을 할 수 있으므로 특성에 맞는 스케쥴링 기법을 각각 사용 할 수 있다. 

(예를 들어 foreground 작업은 라운드 로빈 스케줄링 방식의 큐에, 일괄처리 작업은 FCFS 스케줄링 방식의 큐에 둔다. 라운드 로빈 스케줄링 방식의 큐에 많은 CPU 시간을 할당할 수 있다.)

프로세스가 특정 준비 상태 큐로 이동하게 되면 다른 준비 상태 큐로 이동 할 수는 없다.

- 하위 단계에 있는 프로세스가 작업을 수행 중이더라도 상위 단계에 있는 큐에 작업이 들어오게 되면 컨텍스트 스위칭하여 CPU를 상위단계 큐의 프로세스에 할당해야 합니다.


4) 다단계 피드백 큐(Multi level Feedback Queue) 스케쥴링

다단계 큐 스케쥴링의 다른 큐 사이의 이동이 불가능한 점을 개선하여 만든 스케쥴링

각 준비 상태 큐마다 다른 시간 할당량을 부여하며 시간안에 완료되지 못한 작업들은 다음 단계의 큐로 넘어가게 됩니다(즉, 실행 시간이 긴 작업에게 벌칙을 주는 방식이다. )

상위 단계일수록 우선순위가 높고 시간할당량이 작습니다.

요구하는 시간이 적은 프로세스, 입출력 중심의 프로세스, 낮은 우선순위에서 너무 오래 기다린 프로세스을 기준으로 높은 우선순위를 할당하게 됩니다.

하위 단계의 프로세스가 작업중이더라도 상위 단계의 큐에 작업이 들어오게 되면 중단하고 상위 단계 작업을 수행하게 된다.

가장 최하위 단계의 큐에서는 라운드 로빈(RR) 스케쥴링 기법을 사용합니다.

- 맨 아래에서 너무 오래 머물면 aging 방식 사용

장점 : 적응(adaptive) 메커니즘 (각 큐의 CPU 할당 시간 정할 수 있다)

          가장 널리 사용되고, 일반적인 방법

단점 : 최상의 스케줄러를 정의하기 위한 요소를 찾기 어렵다.



비선점형 스케쥴링

프로세스에게 이미 할당된 CPU를 강제로 빼앗을 수 없고, 사용이 끝날 때까지 또는 

CPU를 할당 받은 프로세스가 스스로 넘길 때까지 기다려야 하는 방법. 

1) FCFS(First Come First Served) 스케줄링 = FIFO(First In First Out) 

대기 큐에 먼저 들어온 작업에게 CPU를 먼저 할당. 가장 간단한 스케쥴링 방법

2) SJF(Shortest Job First) 스케줄링

작업 시간이 가장 적은 프로세스에게 CPU를 먼저 할당하는 기법. 

- 장점 : 가장 짧은 평균 대기 시간을 제공

- 단점 : 실행시간이 긴 프로세스는 실행시간이 짧은 프로세스에게 밀려 무한 연기 상태가 발생         할 수 있다. 


3) HRN(Highest Response ratio Next) 스케줄링

실행시간이 긴 프로세스에게 불리한 점을 보완하여 실행시간+대기시간을 고려한 스케쥴링 기법

- 우선 순위 계산 공식을 활용하여 실행시간이 짧거나, 대기시간이 긴 프로세스에게 먼저 CPU자원을 할당(긴 작업과 짧은 작업간의 지나친 불평등을 어느 정도 보완한 기법)

- 짧은 작업이나 대기시간이 긴 작업은 우선순위가 높아진다

                  (대기시간 + 서비스를 받을 시간)

☞ 우선순위 = ------------------------------

                       서비스를 받은 시간

4) 기한부(DeadLine) 스케쥴링

프로세스에게 일정한 시간을 주어 그 시간안에 완료되도록 하는 메커니즘이다.

만약 그 시간안에 완료되지 못하면 다시 처음부터 작업을 시작해야 한다


5) 우선순위(Priority) 스케쥴링

준비 상태 큐에서 기다리는 각 프로세스마다 우선순위를 부여하여 그 중 가장 높은 프로세스에게 먼저 CPU를 할당해주어야 한다.

우선순위가 동일할 경우 FCFS 스케쥴링 기법을 활용한다.

우선순위는 프로세스의 종류나 특성에 따라 다르게 부여 될 수 있다.

가장 낮은 순위를 부여받은 프로세스는 무한 연기 또는 기아 상태(starvation)가 될 수 있다.


스케쥴링의 목표

# 모든 시스템

* 공정성 (Fairness) : 모든 프로세스들에게 공정히 CPU 시간 할당

* 효율성 (Balance) : CPU의 사용률 극대화

 - CPU이용률과 처리량을 최대화하고 총 처리 시간, 대기 시간, 응답 시간을 최소화 하는게 바람직한 스케줄링의 기준이 된다.


Batch 시스템

- 높은 처리량 (High Throughput) : 시간당 처리되는 작업의 수 높임

- 짧은 반환시간 (Short turnaround time) : 작업이 시스템에 도착해서 완료 되는데 까지의 시간 최소화


# 대화식 시스템

- 짧은 응답시간 (Short Response Time) : 대화식 작업에 빠르게 CPU 할당


# 실시간 시스템

- 데드라인 만족 : 주어진 시간 안에 프로세스가 실행될 수 있게 함


# 상호 모순성

- 스케쥴링의 목표는 상호모순 일 수 있음

- 예를 들어 짧은 응답 시간과, 데드라인 만족은 서로 공존할 수  없음.

- 따라서 어떤 스케쥴링 목표를 세울지는 시스템의 특성에 따라 결정




'OS' 카테고리의 다른 글

프로세스와 스레드 차이  (0) 2015.07.31
데드락 교착상태  (0) 2015.07.31
디스크 스케줄링  (0) 2015.07.31
페이지 교체 알고리즘  (0) 2015.07.31
가상 메모리 시스템과 페이지 폴트  (1) 2015.07.31
Posted by slender ankles
,