- 프로세스 스케줄링(Process Scheduling)
동일한 표현으로 CPU 스케줄링이라고 부르기도 한다. 프로세스들이 작업을 수행하기 위해선 스케줄러에 의해서 CPU를 할당받아야 한다. 만약 그렇게 되지 않는다면 불공평하게 CPU할당이 점유되고 이 과정이 지속된다면 이후에 다른 프로세스가 교착상태(DeadLock)에 빠질 우려가 있다.
- 스케줄링의 목적과 기준
앞서서 설명했듯이 프로세스 스케줄링이 잘되어야만 여러 프로그램을 수행하기 위한 프로세스가 골고루 배분받아 실행될 수 있다. 프로세스의 스케줄링에는 다음과 같은 목적이 이다.
공정한 스케줄링 : 모든 프로세스는 공평한 취급을 받으며, 어느 프로세스도 무한정 스케줄이 연기되는 일이 없도록 한다.
처리량 극대화 : 프로세스의 가능한, 한 단위 시간당 처리량(throughput)을 최대화한다.
응답 시간 최소화 : 대화식 사용자에게는 가능한 한 최대한 응답 시간을 빠르게한다.
균형 있는 자원 사용 : 스케줄링을 할 때 시스템 내의 자원들이 유휴 상태로 놓이지 않도록 골고루 사용하게 하며, 이를 위해 유휴 상태의 자원을 사용하는 프로세스에게 더 나은 서비스를 제공한다.
응답 시간과 자원 이용 간의 조화 : 응답 시간을 빠르게 하려면, 필요한 만큼 충분한 자원을 확보하면 되고, 균형 있는 자원 활용을 하려면 응답 시간이 다소 늦어질 수도 있다.
실행의 무한 연기 배제 : 특정 프로세스의 실행이 무한 연기되지 않게 에이징 기법(Aging)을 사용하여 무한정 자원을 기다리지 않게 하며, 실행될 수 있도록 한다.
우선순위제 실시 : 프로세스들에게 우선순위를 부여하여 우선순위가 높은 프로세스가 먼저 실행되게 한다.
- 우선순위가 높은 프로세스가 먼저 수행될 때 유리
- 빠른 응답 시간을 요구하는 시분할 시스템에 유용
- 선점 때문에 많은 오버헤드 초래 (Context Switching과 연관)
- 모든 프로세스의 요구를 공정히 처리
- 응답 시간을 예측
- 짧은 작업이 긴 작업을 기다리는 때가 종종 발생
- 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 |