프로세스란?
메모리에 올려져 실행 중인 프로그램은 프로세스라고 한다.
프로세스는 작업, task, job과 혼용되어 사용한다.
하지만 응용프로그램 != 프로세스다.
왜냐면, 한 응용프로그램에 여러 개의 프로세스로 이뤄져있을 수 있기 때문!
스케쥴러
스케줄러는 프로세스 실행을 관리하는 녀석.
RTOS(RealTime OS)
- 응용 프로그램 실시간 성능 보장을 목표로 한 OS
- 정확하게 프로그램 시작, 완료 시간을 보장!
- 공장, 공정 같은 곳에서 사용.
GPOS(General Purpose OS)
- 프로그램 실행시간에 민감하지 않음.
- 일반적인 목적으로 사용됨
스케쥴링 알고리즘
어느 순서대로 프로세스를 실행시킬지 정하는 알고리즘
- 시분할 시스템 : 프로세스 응답 시간을 가능한 짧게
- 멀티 프로그래밍 : CPU 활용도를 최대한 높여서 프로세스를 빨리 실행
CPU를 처음부터 끝까지 사용을 가정. (저장매체를 읽는다던지, 프린팅한다던지 작업 없이)
FIFO 스케쥴러
- 가장 간단한 스케쥴러(배치 처리 시스템)
- 먼저 들어온 프로세스를 먼저 실행
- 큐 자료구조를 활용해서 구현
최단 작업 우선(SJF) 알고리즘
- Shortest Job First
- 프로세스 실행시간이 짧은 프로세스 먼저 실행시키는 알고리즘
우선순위 기반 스케쥴러(Priority-Based)
- 정적 우선순위(프로세스마다 우선순위를 미리 지정)
- 동적 우선순위(스케줄러가 상황에 따라 우선순위를 동적으로 변경)
Round Robin 스케쥴러
- 시간 단위마다 각 프로세스마다 돌아가면서 프로세스를 실행시키는 방법(시분할 시스템 기반)
- 자기 차례 이후에도 작업이 더 필요한 프로세스는 RoundRobin queue에 들어가 다시 자기차례가 오기를 기다린다.