- 프로세스 스케줄링(Process Scheduling)

동일한 표현으로 CPU 스케줄링이라고 부르기도 한다. 프로세스들이 작업을 수행하기 위해선 스케줄러에 의해서 CPU를 할당받아야 한다. 만약 그렇게 되지 않는다면 불공평하게 CPU할당이 점유되고 이 과정이 지속된다면 이후에 다른 프로세스가 교착상태(DeadLock)에 빠질 우려가 있다.



- 스케줄링의 목적과 기준

앞서서 설명했듯이 프로세스 스케줄링이 잘되어야만 여러 프로그램을 수행하기 위한 프로세스가 골고루 배분받아 실행될 수 있다. 프로세스의 스케줄링에는 다음과 같은 목적이 이다.

  • 공정한 스케줄링 : 모든 프로세스는 공평한 취급을 받으며, 어느 프로세스도 무한정 스케줄이 연기되는 일이 없도록 한다.

  • 처리량 극대화 : 프로세스의 가능한, 한 단위 시간당 처리량(throughput)을 최대화한다.

  • 응답 시간 최소화 : 대화식 사용자에게는 가능한 한 최대한 응답 시간을 빠르게한다.

  • 균형 있는 자원 사용 : 스케줄링을 할 때 시스템 내의 자원들이 유휴 상태로 놓이지 않도록 골고루 사용하게 하며, 이를 위해 유휴 상태의 자원을 사용하는 프로세스에게 더 나은 서비스를 제공한다.

  • 응답 시간과 자원 이용 간의 조화 : 응답 시간을 빠르게 하려면, 필요한 만큼 충분한 자원을 확보하면 되고, 균형 있는 자원 활용을 하려면 응답 시간이 다소 늦어질 수도 있다.

  • 실행의 무한 연기 배제 : 특정 프로세스의 실행이 무한 연기되지 않게 에이징 기법(Aging)을 사용하여 무한정 자원을 기다리지 않게 하며, 실행될 수 있도록 한다.

  • 우선순위제 실시 : 프로세스들에게 우선순위를 부여하여 우선순위가 높은 프로세스가 먼저 실행되게 한다.


프로세스 스케줄링에는 두가지 스케줄링이 존재하는데 하나는 선점 스케줄링이고 또 다른 하나는 비선점 스케줄링이다. 두 개의 차이가 무엇인지 알아야 이후에 나오는 스케줄링 알고리즘을 잘 이해할 수 있다.


- 선점 스케줄링
선점(preemptive)은 한 프로세스가 CPU를 차지하고 있을 때 다른 프로세스가 현재 프로세스를 중지시키고 자신이 CPU를 차지할 수 있을 때를 가리킨다. 선점 스케줄링은 높은 우선순위를 가진 프로세스들이 빠른 처리를 요구하는 시스템에서 유용
    • 우선순위가 높은 프로세스가 먼저 수행될 때 유리
    • 빠른 응답 시간을 요구하는 시분할 시스템에 유용
    • 선점 때문에 많은 오버헤드 초래 (Context Switching과 연관)


- 비선점 스케줄링
비선점(non-preemptive)은 한 프로세스가 CPU를 할당받으면 다른 프로세스는 CPU를 그 프로세스로부터 뺏을 수 없을 때를 가리킨다. 
    • 모든 프로세스의 요구를 공정히 처리
    • 응답 시간을 예측
    • 짧은 작업이 긴 작업을 기다리는 때가 종종 발생

- 스케줄링 알고리즘(Scheduling Algorithm)
    • FCFS Scheduling ㅡ non preemptive (FCFS : First Come First Service)
      - 프로세스들은 준비 큐에 도착한 순서대로 CPU를 할당받는 알고리즘
    • SJF Scheduling ㅡ non  preemptive (SJF : Shortest Job First OR SJN : Shortest Job Next) 
      - 수행시간이 가장 짧다고 판단되는 것을 먼저 수행하는 알고리즘
      - FCFS 보다 평균 대기 시간을 감소시키는 반면, 큰 작업에는 FCFS에 비해 예측하기 어렵다.
    • HRN Scheduling - non preemptive (HRN : Highest Response Ratio Next)
      - SJF의 약점, 특히 긴 작업과 짧은 작업 사이의 지나친 불평등을 어느정도 보완한 기법
      - 일단 한 작업이 CPU를 차지하면 그 작업은 완성될 때까지 실행한다.
      - 긴 작업과 짧은 작업 간의 불평등을 어느정도 완화
      - 우선순위 = (대기시간 + 버스트시간) / 버스트 시간 = 시스템 응답시간
      - 짧은 작업이나 대기시간이 큰 작업은 우선순위가 높아짐
    • RR Scheduling - preemptive (RR : Round Robin)
      - 각 프로세스는 같은 크기의 CPU 시간을 할당받는다. 만약 프로세스가 CPU 시간이 만료될 때까지 처리를 완료하지 못하면 그 CPU는 대기 중인 다음 프로세스로 넘어간다.
      - 할당 시간이 작으면 Context Switching이 자주 발생하기 때문에 오버헤드가 커진다.
    • SRT Scheduling - preemptive (SRT : Short Remaining Time)
      - 현재 실행 중인 프로세스라도 남은 처리 시간이 더 짧다고 판단되는 프로세스가 준비 큐에 생길 경우 현재 실행 중인 프로세스가 선점될 수 있다.
      - SJF 기법에 선점 방식을 도입한 방법으로 시분할 시스템에 유용


이론만 따로 공부하였지만 이 부분에 대해서 자세히 알려면 그림을 보면서 본인이 직접 실습해봐야 비로소 알 수 있을 것이다.


'운영체제' 카테고리의 다른 글

20180219 병렬 프로세스  (0) 2018.02.19
20180203 스레드  (0) 2018.02.03
20180112 프로세스 02 : Dispatch & Context Switching  (0) 2018.01.12
20180112 프로세스 01  (0) 2018.01.12
20180111 운영체제 구성  (0) 2018.01.11
Posted by doubler
,