프로세스 스케줄링이란?
CPU를 사용하려고 하는 프로세스들 사이의 우선 순위를 관리하는 일
스케줄링은 처리율과 CPU이용률을 증가시키고 오버헤드/응답시간/반환시간/대기시간을 최소화 시키기 위힌 기법이다.
즉, CPU가 쉬지않고 계속 열심히 일할 수 있도록 효율적인 계획을 잡아주는 것이다.
스케줄링에서는 장기, 중기, 단기 스케줄링이 있다.
어떤 프로세스를 커널에 등록할 것이가를 정하는 장기 스케줄링,
어떤 프로세스에게 메모리를 할당할 것인가를 정하는 중기 스케줄링,
어떤 프로세스에게 CPU를 할당할 것인가를 정하는 단기 스케줄링이 있다.
결정 시점
CPU 스케줄링의 결정시점은 다음과 같은 프로세스의 상태 변화가 있을 떄이다.
- 수행 -> 대기 (비선점, 선점)
- 수행 -> 준비 (비선점)
- 대기 -> 준비 (비선점)
- 수행 -> 종료 (비선점, 선점)
선점 & 비선점
스케줄링은 적용 시점에 따라 비선점형과 선점형으로 구분한다. 놀이기구를 타려고 많은 사람들이 긴 줄을 서 있을 때,
선점형은 강력한 권한으로 줄을 서지 않고 먼저 놀이기구를 탈 수 있지만,
비선점형은 급한 사정이 있어도 권한이 없기 때문에 줄을 서서 기다리고 자기 차례가 되어야만 놀이기구를 탈 수 있다.
비선점형 스케줄링 (Non-preemptive Scheduling)
어떤 프로세스가 CPU를 할당 받으면 그 프로세스가 종료되거나 입출력 요구가 발생하여 자발적으로 중지될 때까지 실행되도록 보장한다. 순서대로 처리되는 공정성이 있고 다음에 처리해야 할 프로세스와 관계 없이 응답 시간을 예상할 수 있으며 선점 방식보다 스케줄러 호출 빈도가 낮고 문맥교환에 의한 오버헤드가 적다. 일괄처리 시스템에 적합하며, CPU 사용 시간이 긴 하나의 프로세스가 CPU 사용시간이 짧은 여러 프로세스를 오랫동안 대기시킬 수 있으므로, 처리율이 떨어질 수 있다는 단점이 있다.
선점형 스케줄링(Preemptive Scheduling)
어떤 프로세스가 CPU를 할당받아 실행중에 있어도 다른 프로세스가 실행중인 프로세스를 중지하고 CPU를 강제로 점유할 수 있다. 모든 프로세스에게 CPU 사용 시간을 동일하게 부여할 수 있다. 빠른 응답시간을 요하는 대화식 시스템에 적합하다. 운영체제가 프로세서 자원을 선점하고 있다가 각 프로세스의 요청이 있을 때 특정 요건들을 기준으로 자원을 배분하는 방식이다.
정적 & 동적
프로세스의 우선순위 변동 여부에 따라 정적 스케줄링과 동적 스케줄링으로 구분할 수 있다.
정적 스케줄링 (Static Scheduling)
프로세스에 부여된 우선순위가 바뀌지 않는다. 고정 우선순위 스케줄링이라고도 한다.
동적 스케줄링 (Dynamic Scheduling)
스케줄링 과정에서 프로세스의 우선순위를 변동시킨다. 유동 우선순위 스케줄링이라고도 한다.
'프로그래밍 기초 > 운영체제' 카테고리의 다른 글
프로세스 동기화(Process Synchronization) - 1 (0) | 2017.06.05 |
---|---|
스케줄링 기법(Scheduling Method) (4) | 2017.06.05 |
문맥교환(Context Switching) (0) | 2017.06.02 |
인터럽트(Interrupt) (0) | 2017.06.02 |
프로세스 상태 전이도 ( Process State Diagram ) (0) | 2017.06.02 |
댓글