CPU나 자원을 효과적으로 생산성 있게 사용하기 위한 소프트웨어적 계획
프로세스 스케줄링은 프로세스에게 CPU를 할당하고 문맥 교환을 하는 프로세스 관리 기능이다.
■ 장기(상위) 스케줄링
프로세스가 자원을 사용하는 시기를 결정하여 대기 큐로 전달하는 작업으로, 작업 스케줄러(Job Scheduling, Long Term Scheduling)라고 한다.
프로그램들이 주기억장치에 적재될 시기를 결정하는 것과 같은 스케줄링으로 다소 느린 작업 계획이다.
■ 중기(중위) 스케줄링
프로세스가 여러 개의 CPU 중에 어떤 CPU를 할당 받을 것인가를 결정하는 작업
어떤 프로세스들이 CPU를 할당받을 것인지 결정하는 일 담당
이 스케줄러는 프로세스를 주기억 장치로부터 빼낼 수 있기 때문에 필요한 경우에는 다중 프로그래밍의 정도를 낮추어 시스템의 전반적인 효율을 높여 주거나, 특정 프로세스에 대한 처리를 원활히 해 줄 수 있는 효과를 얻을 수 있다.
■ 단기(하위) 프로세스
여러 개의 프로세스가 하나의 CPU를 점유하기 위한 시기를 결정하기 위한 작업으로 프로세스 스케줄링(Processing Scheduling, Short Term Scheduling)라고 한다.
디스패치, 인터럽트를 통한 문맥교환 등을 수행하는 것처럼 짧은 시간에 처리해야 하는 작업 계획이다.
모든 프로세스들에게 공정하게 배정 (예외는 있음)
단위 시간당 가능한 최대의 처리가 되도록
처리 응답시간은 신속하게
같은 종류의 작업은 같은 비용으로 실행
오버헤드 최소화
시스템 내의 자원이 사용하지 않는 시간이 없도록 유지
응답시간과 자원의 활용간의 적절한 균형 유지
프로세스의 무한대기 상태 피해야함
프로세스의 상태를 파악하여 우선순위 부여하면 좋음
중요 자원을 차지하고 있는 프로세스에게 우선순위 줘야함
문제로 인해 불안하지 않은 프로세스에게 서비스를 많이 제공하도록 한다.
< 바람직한 스케줄링 정책 >
CPU 이용률
CPU를 쉬지않고 몇 퍼센트 (범위 40% ~ 90%)를 이용하는가의 기준(늘림)
처리능력(Throughput)
단위 시간당 처리할 수 있는 CPU 작업량 (늘림)
대기시간(Waiting time)
준비상태에서 대기하는 시간 (줄임)
응답시간(Response Time, 반응시간)
입력에 대해 처음 반응하는 시간 (줄임)
반환시간(Turn around time)
작업을 지시해서 끝날때까지 시간 (줄임)
※Tip!
<u>시간 관련된건 무조건 낮을 수록 좋다!</u>
비선정형 : 빼앗을 수 없다, 중단시킬 수 없다, 일괄처리용
선점형 : 빼앗을 수 있다, 중단시킬 수 있다, 대화용, 시간분할, 실시간
CPU를 점유하고 있을 때에는 다른 프로세스가 현재 실행중인 프로세스를 중단시킬 수 없다.
일단 CPU를 할당받으면 다른 프로세스가 CPU를 강제적으로 빼앗을 수 없는 방식이다.
CPU를 사용하고 있는 현재의 프로세스가 종료된 후 다른 프로세스에 CPU를 할당한다.
실행이 완료될 때까지 CPU를 독점하는 방식
비선점형 방식들은 모든 프로세스를 관리하는데 공정하다.
공정하며 프로세스의 실행 예측치를 미리 통보하고, 프로세스를 수행한다면 응답시간 예측이 용이하다. -- ※ 논란의 여지가 있음
일괄 처리 시스템에 적당하다.
※ 응답시간의 견해는 학자들마다, 기출문제마다 조금의 차이가 있어 응답시간 예측과 관련된 문제는 여러 번 출제되어도 확실히 결정된 문제는 아니다!
"빠른 응답시간의 예측을 원한다" → 선점형 방식
"공정하며 프로세스의 실행 예측치를 미리 통보하고, 프로세스를 수행한다면 응답시간의 예측이 용이하다" → 비선점형 방식
하나의 프로세스가 CPU를 점유하고 있을 때 다른 프로세스가 현재 사용중인 프로세스를 중단시키고 CPU를 차지할 수 있는 방식
CPU를 할당받은 프로세스를 다른 프로세스가 CPU를 강제적으로 빼앗을 수 있는 방식
선점형 방식들은 높은 우선순위의 프로세스들이 긴급히 요할 때 유용
빠른 응답시간을 필요로 하는 대화식, 시분할, 실시간 처리에 적당
FIFO : First In First Out
FCFS : First come First Service
SFJ : Short Job First : 짧은 작업 우선처리
※처리시간이 긴 프로세스가 무한대기 상태되는 것을 방지하기 위한 기법 => Aging(노화) 기법
※ 무한대기 VS 교착상태
무한대기 : 한없이 기다리고 있지만 언젠가는 처리가 됨
교착상태 : 한없이 기다리고 있지만 처리될 수 없음
HRN : Highest Respons-ratio Next = FIFO + SJF 단점 보완
=> 대기시간이 클 수록 우선권을 갖는다.!!
RR : Round-Robin
SRT : Shortest Remaining Time
MFQ : Multi Level Feedback Queue
- 짧은 작업 우선
- I/O 작업 우선