1. 스케줄링 개요

- 스케줄링은 크게 고수준, 중간수준, 저수준으로 나뉠 수 있다.
- CPU 스케줄링을 하는 목적은 모든 프로세스가 가능한 공평하고 안정적으로 돌어가게 하기 위함
- CPU 스케줄링을 위해서 운영체제는 CPU Scheduler, Dispatcher(Context Switch)를 사용한다.

[1] CPU 스케줄링

[1-1] CPU 스케줄링은 규모에 따라 아래와 같이 나뉜다.

  1. 고수준 스케줄링 : (=장기 스케줄링, 작업 스케줄링)
  2. 중간 수준 스케줄링
  3. 저수준 스케줄링 : (=단기 스케줄링)

[1-2] CPU 스케줄링의 목적 : 모든 프로세스가 공평하게 안정적으로 작업을 하게 하는 것 → 그러기 위해서는 특정 프로세스가 자원을 독점하지 않도록, 중요도에 따라 우선순위를 배정하고, 시스템 자원을 효율적으로 배분해 전체적인 시스템 성능을 높혀야한다.

[1-3] 운영체제의 CPU 스케줄러와 Dispatcher

  1. CPU 스케줄러 : Ready 상태의 프로세스 중에서 이번에 CPU를 줄 프로세스를 고른다.
  2. Dispatchar : CPU의 제어권을 CPU 스케줄러에 의해 선택된 프로세스에게 넘긴다. : 이 과정을 Context Switch라고 한다.

2. 스케줄링 시 고려사항

- 작업 중요도가 높은 프로세스 : 커널, 전면, 대화형, 입출력 집중 프로세스
  * 커널 <-> 일반
  * 전면 <-> 후면
  * 대화형 <-> 일괄처리
  * 입출력집중 <-> CPU집중

[1] 선점형 스케줄링과 비선점형 스케줄링

선점형 스케줄링와 비선점형 스케줄링

  1. 비선점형 스케줄링(nonpreemptive) : 빼앗을 수 없음
  2. 선점형 스케줄링 : 빼앗을 수 있음 rf. 인터럽트 처리 : CPU가 인터럽트를 받으면 실행 중인 작업 중단, 커널을 깨워 인터럽트 처리, 인터럽트 처리 완료되면 원래 작업으로 돌아간다.
구분 선점형 비선점형
작업 방식 실행 중인 작업 중단 후 실행 실행 중인 작업 완료 후 이어서 실행
장점 프로세스가 CPU를 독점X CPU 스케줄러 작업량이 적고,
문맥교환 오버헤드가 적다
단점 문맥교환 오버헤드 많음 기다리는 프로세스 많아 처리율 낮음
사용 시분할 방식 스케줄링 일괄 처리 방식 스케줄링
중요도 높음 낮음

[2] 프로세스 우선순위

[3] CPU 집중 프로세스와 입출력 집중 프로세스

CPU burst cpu만 실행
I/O burst io만 실행