스케줄링
프로세스가 생성되어서 실행될 때 필요한 시스템의 여러 자원을 해당 프로세스에게 할당하는 작업을 의미
대기 시간을 최소화하고 최대한 공평하게 할당하는 것을 목적으로 한다.
메모리에 여러 개의 프로세스를 올려 놓고 (= 다중 프로그래밍)
CPU의 가동시간을 적절하게 나누어 (= 시분할)
각각의 프로세스에게 CPU를 분배하여 실행되도록 한다.
스케줄링 종류
프로세스의 상태에 따라서 장기, 중기, 단기 단위로 나눌 수 있다.
장기
어떤 프로세스가 시스템의 자원을 차지할 수 있도록 할 것인가를 결정해서 준비 상태 큐 (= Ready Queue)로 보내는 작업을 의미
상위 스케줄링이라고도 하며 작업 스케줄러에 의해 수행된다.
수행 빈도는 적고 속도는 느리다.
중기
어떤 프로세스들이 CPU를 할당 받을 것인지 결정하는 작업을 의미
CPU를 할당 받으려는 프로세스가 많을 경우 프로세스를 일시 대기(waiting)시킨 후 활성화하여 일시적으로 부하를 조절한다.
Swap In/Out을 결정 (메모리가 부족하면 Swap Out, 남으면 Swap In) 한다.
단기
프로세스가 실행되기 위해 CPU를 할당 받는 시기와 특정 프로세스를 지정하는 작업을 의미
프로세서 스케줄링, 하위 스케줄링이라고도 한다.
프로세서 스케줄링 및 문맥 교환은 프로세서 스케줄러에 의해 수행된다.
수행 빈도는 높으며 속도는 빠르다.
(-> CPU 스케줄링이라고 말하는 것은 주로 단기 스케줄링을 의미하는 것이다.)
프로세스 상태
프로세스는 아래 5가지의 상태 중 하나를 갖게 된다.
- 생성
프로세스가 생성되는 중 - 실행
프로세스가 프로세서를 차지해서 명령어를 실행 - 준비
프로세스가 프로세서를 사용하고 있지 않지만,
언제든지 사용할 수 있는 상태로 CPU가 할당되기를 기다리는 상태 - 대기
프로세스 입출력이 완료되어 기다리고 있는 상태 - 종료
프로세스의 실행이 종료된 상태
준비 상태의 프로세스들을 모아놓은 공간이 준비 큐(= Ready Queue)이다.
운영체제는 CPU 스케줄러를 통해 준비 큐에 있는 프로세스 중에서 하나의 프로세스를 골라 다음에 실행시킨다.
이 때 운영체제가 프로세스를 프로세서에게 할당하는 것을 Diapatch라고 한다.
프로세스 상태에 따라서 스케줄링 하는 모습을 그림으로 나타내면 아래와 같다.
스케줄링 알고리즘 평가기준
시스템 입장과 사용자 입장으로 나눠서 평가기준을 생각할 수 있다.
- CPU 이용률
전체 시스템 시간 중, CPU가 작업을 처리하는 시간의 비율 - 처리 량
CPU가 단위 시간당 처리하는 프로세스의 개수 - 총 처리 시간
프로세스가 시작해서 끝날때 까지 걸린 시간 - 대기시간
프로세스가 준비완료 큐에서 대기하는 시간의 총 합 - 응답시간
대화식 시스템에서 요청 후 첫 응답이 오기까지 걸린 시간
'OS' 카테고리의 다른 글
[질문] 프로세스 스케줄링 & CPU 스케줄링 (0) | 2022.09.05 |
---|---|
CPU 스케줄링 (0) | 2022.09.05 |
[질문] 프로세스, 쓰레드 (0) | 2022.08.29 |
시스템 콜과 인터럽트 (0) | 2022.08.29 |
프로세스 - 상태 (0) | 2022.08.29 |