728x90

프로세스 스케줄링 유형을 살펴보면 다음과 같다.


1. 장기(long-term) 스케줄링


프로세스를 시스템으로 진입시킬지 여부 결정한다. 다중 프로그래밍 정도를 제어한다.


2. 중기(midium-term)


스케줄링 swapping 기능의 일부로 어떤 프로세스를 스왑 공간에서 주 기억장치로 불러들이는 일을 한다.


다중 프로그래밍 정도 제어한다.


3. 단기(short-term) 스케줄링


dispatcher. 이전 두 스케줄러보다 매우 자주 실행한다.


다음번에 실행시킬 프로세스 선정하는 기능이다.




 


​우리가 여기서 관심가질 것은 단기 스케줄링이다. 보통 스케줄링 알고리즘을 말하면 단기 스케줄링 알고리즘을 말한다.


- 사용자 관점에선 response time(응답시간), 시스템 관점에선 throughput(처리량)에 관심이 있다.


* 우선순위 기반 스케줄링 : 우선순위가 가장 높은 프로세스를 다음번 프로세스로 선택한다.


                                   낮은 우선순위의 프로세스가 계속 cpu할당 받지 못하는 Starvation(기아) 가능성.


                                             ⇒Aging : 시간이 지남에 따라 우선순위 낮은 프로세스의 우선순위 높여줌.


* 비선점(non-preemptive)모드 : 프로세스가 일단 실행 상태 진입하면 종료되거나 자발적으로 cpu 놓을 때까지


                                         cpu 빼앗기지 않는다.


  선점(preemptive)모드 : 현재 실행중인 프로세스라 할지라도 OS에 의해 인터럽트가 걸려 비자발적으로


                                준비큐로 이동 될 수 있다.


- 선점모드는 비선점모드 스케줄링에 비해 프로세스 간 context switching 자주 발생하므로 overhead가 크다.


   하지만 프로세스가 처리기를 오랫동안 독점하는 현상 방지하므로 프로세스 전체에 보다 나는 서비스 제공한다.


* TAT(반환시간) : 대기시간 + 서비스시간 → TAT/서비스시간이 1이면 한 번도 대기한적 없음 의미한다.


 


 


그럼 이제 실제로 스케줄링 알고리즘을 살펴보자.


1. FCFS 


FIFO. 준비큐에서 가장 오래 기다렸던 프로세스 선정한다. 비선점 모드.


짧은 프로세스, 입출력 프로세스에 불리



2. Round-Robin 


시간을 측정하다가 (clock interrupt 주기적 발생) 일정 시간 넘어가는 순간 선점시킨다.


준비큐에서 FCFS 방식으로 다음 프로세스 선정한다. time slicing, time quantum 기법.


모든 프로세스에 공정한 방식이다.


시간 할당량이 매우 작다면 짧은 프로세스 일수록 상대적으로 일찍 종료할 수 있으나,


  스케줄링 횟수, 문맥교환 횟수 늘어나 오버헤드 커진다.


시간 할당량이 너무 길면 FCFS와 같은 효과.


* Virtual Round-Robin : 입출력 중심 프로세스가 시간할당량 다 못 채우고 블록되고 다시 수행될 때 차별받지 않기 위해


                                준비큐로 들어가지 않고 보조큐라는 별도의 큐로 들어간다.스케줄러는 준비큐 보다 보조큐에 있는


                                프로세스를 먼저 수행해 지난번 못 채운 시간 할당량만큼 다시 수행 후 준비큐로 보낸다.



3. SJF(Shortest job first)


예상되는 전체 실행시간 가장 짧은 프로세스를 먼저 수행한다. 비선점모드


프로세스가 요구하는 총 실행시간 미리 알아야 한다. 긴 프로세스에게 불리하다(기아 가능성)



4. SRT(Shortest remaining time)


예상되는 남아있는 실행시간 가장 짧은 프로세스를 먼저 수행한다. SJF의 선점모드.


클록 인터럽트 필요 없지만, 각 프로세스의 전체 요구시간 중 얼마나 서비스 받았는지 기억해야 하는 오버헤드가 있다.


SJF에 비해 성능 좋다.


 


5. HRRN 


R(응답비율) = W(대기시간) + S(서비스시간) / S 값이 가장 큰 프로세스 선정한다


전체 프로세스에 대해 평균 값 최소화 시키는 방향으로 진행한다.


비선점모드. 공정성이 좋음.



6. Feedback 


예상되는 서비스시간 알 수 없는 경우. 지금까지 실행한 시간에 관심.


오랫동안 실행하고 있는 작업을 단계적으로 불이익 받도록 한다. 선점모드.


선점점 후 다시 준비큐로 들어갈 때 한 단계 우선순위 낮은 큐로. 모든 큐는 FCFS 방식이고, 가장 낮은 단계 큐는 Round-Robin.


새로 도착한 프로세스, 짧은 프로세스일수록 유리한다.


출처 : http://blog.naver.com/bobae0926/220152762831

728x90

'OS' 카테고리의 다른 글

hit rate 메모리 효율  (0) 2014.11.30
디스크 스케쥴링 방법  (0) 2014.11.30
프로그램, 프로세스, 스레드  (0) 2014.11.28
스레드 간 통신  (0) 2014.11.28
IPC  (0) 2014.11.28

+ Recent posts