스케쥴링 알고리즘을 알아 보기 전에 프로세스에 대해서 다시 한번 짚고 넘어 가겠다.
프로세스란?
- 실행중인 프로그램을 프로세스라 부른다
- 프로세스: 메모리 공간에 할당되어 실행 중인 프로그램
- 코드이미지(바이너리): 실행 파일 (UNIX, LINUX 계열 - ELF format)
프로세스라는 용어는 작업, task, job과 혼용되어 사용된다.
응용 프로그램은 프로세스가 아니지만 응용 프로그램은 여러 개의 프로세스로 이뤄질 수 있다.
하나의 프로그램은 여러 개의 프로세스가 상호작용을 하면서 실행될 수 있다.
C나 C++을 사용해 프로그램을 만들면 하나의 프로세스이지만
여러 프로그램을 만들어서 IPC 기법으로 서로 통신하면서 프로그램을 만들 수 있다.
스케쥴러와 프로세스
스케쥴러와 프로세스의 관계를 살펴본다면 접근하기가 쉽다.
프로세스의 실행을 스케쥴러가 관리하게 되는데, 우리가 하루 일과표를 계획하고 일과를 진행하는 과정과 같다고 할 수 있다.
그렇다면 스케쥴링은 어떤 순서대로 프로세스를 실행 시킬까?
이 물음에 스케쥴링 알고리즘이 등장하게 된다.
FIFO 스케쥴링 알고리즘
- First In First Out 스케쥴러
- FCFS 스케쥴러
- 자료구조의 큐 개념이 적용된다
최단 작업 우선(SJF) 스케쥴링 알고리즘
- SJF(Shortest Job First) 스케쥴러
- 가장 프로세스 실행 시간이 짧은 프로세스부터 먼저 실행
우선순위 기반 스케쥴링 알고리즘
- Priority-Based 스케쥴러
- 프로세스에 우선 순위를 정해서 우선 순위가 높은 순서대로 실행
- 정적 우선 순위:
- 동적 우선 순위:
- 스케쥴러가 상황에 따라 우선 순위를 동적으로 변경
Round Robin 스케쥴링 알고리즘
- 특정 시간동안 실행되지 못한 프로세스가 CPU 프로세서를 거쳐서 다시 큐의 맨 뒤로 들어옴
- 시분할시스템을 기본으로 함
- 특정 시간 동안 실행되지 못한 프로세스를 큐로 넘김으로써 다른 프로그램 실행의 지연 방지
- 프로그램1: 1초, 프로그램2: 3초, 프로그램3: 2초
- 프로그램1 1초 실행 후 더 실행할 프로그램 요청이 없으므로 프로그램2 실행
- 프로그램2 1초 실행 후 나머지 2초의 프로그램2의 요청은 큐의 뒤로 넘긴다
- 프로그램3 1초 실행 후 나머지 1초의 프로그램3의 요청은 큐의 뒤로 넘긴다
- 프로그램2 1초 실행 후 나머지 1초의 프로그램2의 요청으 큐의 뒤로 넘긴다
- ...
- 1 - 2 - 3 - 2 - 3 - 2
정리하기
- 기본 스케쥴링 알고리즘
- FIFO(FCFS) 스케쥴링 알고리즘: 배치 처리 시스템
- 최단 작업 우선(SJF) 스케쥴링 알고리즘
- 우선순위 기반 스켈쥴링 알고리즘
- Round Robin 스케쥴링 알고리즘