본문 바로가기

BASIC/OS

[운영체제] 스케줄링

1. 스케줄링의 개요

- 스케줄링(Scheduling)은 프로세스가 생성되어 실행될 때 필요한 시스템의 여러 자원을 해당 프로세스에게 할당하는 작업을 의미한다.

- 프로세스가 생성되어 완료될 때까지 프로세스는 여러 종류의 스케줄링 과정을 거치게 된다.

- 스케줄링의 종류에는 장기 스케줄링, 중기 스케줄링, 단기 스케줄링이 있다.

- 장기 스케줄링 : 어떤 프로세스가 시스템의 자원을 차지할 수 있도록 할 것인가를 결정하여 준비상태 큐로 보내는 작업을 의미한다.

- 중기 스케줄링 : 어떤 프로세스들이 CPU를 할당받을 것인지 결정하는 작업을 의미한다.

- 단기 스케줄링 : 프로세스가 실행되기 위해 CPU를 할당받는 시기와 특정 프로세스를 지정하는 작업을 의미한다.


2. 스케줄링의 목적

- 스케줄링은 CPU나 자원을 효율적으로 사용하기 위한 정책으로, 다음과 같은 목적을 가지고 있다.

- 공정성 : 모든 프로세스에 공정하게 할당한다.

- 처리율(량) 증가 : 단위 시간당 프로세스를 처리하는 비율(양)을 증가시킨다.

- CPU 이용률 증가 : 프로세스 실행 과정에서 주기억장치를 액세스한다든지, 입출력 명령 실행 등의 원인에 의해 발생할 수 있는 CPU의 낭비 시간을 줄이고, CPU가 순수하게 프로세스를 실행하는 데 사용되는 시간 비율을 증가시킨다.

- 우선순위 제도 : 우선순위가 높은 프로세스를 먼저 실행한다.

- 오버헤드 최소화 : 오버헤드를 최소화한다.

- 응답 시간(Response Time, 반응 시간) 최소화 : 작업을 지시하고, 반응하기 시작하는 시간을 최소화한다.

- 반환 시간(Turn Around Time) 최소화 : 프로세스를 제출한 시간부터 실행이 완료될 때까지 걸리는 시간을 최소화한다.

- 대기 시간 최소화 : 프로세스가 준비상태 큐에서 대기하는 시간을 최소화한다.

- 균형 있는 자원의 사용 : 메모리, 입출력장치 등의 자원을 균형 있게 사용한다.

- 무한 연기 회피 : 자원을 사용하기 위해 무한정 연기되는 상태를 회피한다.


3. 프로세서 스케줄링(프로세스 스케줄링)의 기법

1) 비선점(Non-preemptive) 스케줄링

- 이미 할당된 CPU를 다른 프로세스가 강제로 빼앗아 사용할 수 없는 스케줄링 기법이다.

- 프로세스가 CPU를 할당받으면 해당 프로세스가 완료될 때까지 CPU를 사용한다.

- 모든 프로세스에 대한 요구를 공정하게 처리할 수 있다.

- 프로세스 응답 시간의 예측이 용이하며, 일괄 처리 방식에 적합하다.

- 중요한 작업(짧은 작업)이 중요하지 않은 작업(긴 작업)을 기다리는 경우가 발생할 수 있다.

- 비선점 스케줄링의 종류에는 FCFS, SJF, 우선순위, HRN, 기한부 등의 알고리즘이 있다.


2) 선점(Preemptive) 스케줄링

- 하나의 프로세스가 CPU를 할당받아 실행하고 있을 때 우선순위가 높은 다른 프로세스가 CPU를 강제로 빼앗아 사용할 수 있는 스케줄링 기법이다.

- 우선순위가 높은 프로세스를 빠르게 처리할 수 있다.

- 주로 빠른 응답 시간을 요구하는 대화식 시분할 시스템에 사용된다.

- 많은 오버헤드(Overhead)를 초래한다.

- 선점이 가능하도록 일정 시간 배당에 대한 인터럽트용 타이머 클록(Clock)이 필요하다.

- 선점 스케줄링의 종류에는 Round Robin, SRT, 선점 우선순위, 다단계 큐, 다단계 피드백 큐 등의 알고리즘이 있다.

'BASIC > OS' 카테고리의 다른 글

[운영체제] 선점 스케줄링  (0) 2018.02.26
[운영체제] 비선점 스케줄링  (0) 2018.02.25
[운영체제] 프로세스의 개요  (0) 2018.02.25
[운영체제] 링커와 로더  (0) 2018.02.24
[운영체제] 운영체제의 운용 기법  (0) 2018.02.24