1. 프로세스 스케쥴링
멀티 프로그래밍
최대한 CPU를 많이 활용하도록 하는 시스템
응용 프로그램은 온전히 CPU를 쓰기 보다, 다른 작업을 중간에 필요로 하는 경우가 많다. 예를들어, 파일을 읽는다 가 있다.
비슷한 용어로는
시분할 시스템: 다중 사용자 지원, 컴퓨터 응답시간을 최소화하는 시스템
멀티 태스킹: 단일 CPU에서 여러 응용 프로그램을 동시에 실행하는 것처럼 보이게 하는 시스템
멀티 프로세싱: 여러 CPU에서 하나의 응용 프로그램을 병렬로 실행하게 해서, 실행속도를 높이는 기법
멀티 프로그래밍: 최대한 CPU를 일정 시간당 많이 활용하는 시스템
2. 프로세스 (process) 란?
실행 중인 프로그램은 프로세스라고 함
즉, 응용 프로그램 =! 프로세스
응용 프로그램은 여러 개의 프로세스로 이루어질 수 있음
하나의 응용 프로그램은 여러 개의 프로세스(프로그램)가 상호작용을 하면서 실행될 수도 있음
스케쥴러 : 누가 프로세스 실행을 관리한다.
스케쥴링 알고리즘 : 어느 순서대로 프로세스를 실행시킬까?
FIFO 스케쥴러
프로세스가 저장매체를 읽는 다든지, 프린팅을 한다든지 하는 작업 없이,
쭉 CPU를 처음부터 끝까지 사용한다.
가장 간단한 스케쥴러 (배치 처리 시스템)
FCFS (First Come First Served) 스케쥴러 와 비슷하다
3. SJF(Shortest Job First- 최단 작업 우선) 스케쥴러
가장 프로세스 실행시간이 짧은 프로세스부터 먼저 실행을 시키는 알고리즘
RealTime OS(RTOS):
응용 프로그램 실시간 성능 보장을 목표로 하는 OS
정확하게 프로그램 시작, 완료 시간을 보장
(정확한 시간에 무조건 끝내야함 공장 등 시간에 민감함 곳에서 사용 - 현실에서는 안될 수도 있음)
Hardware RTOS, Software RTOS
General Purpose OS(GPOS):
프로세스 실행시간에 민감하지 않고, 일반적인 목적으로 사용되는 OS, 예: Windows, Linux등
우선순위 기반 스케쥴러 (Priority‑Based 스케쥴러)
정적 우선순위 : 프로세스마다 우선순위를 미리 지정
동적 우선순위 : 스케쥴러가 상황에 따라 우선순위를 동적으로 변경
Round Robin 스케쥴러
4. 멀티프로그래밍과 Wait
멀티 프로그래밍 : CPU 활용도를 극대화 하는 스케쥴링 알고리즘
Wait : 간단히 저장매체로 부터 파일 읽기를 기다리는 시간으로 가정
프로세스 상태
running state : CPU에서 실행 상태
ready state : CPU에서 실행 가능한 상태(실행대기 상태)
block state : 특정 이벤트 발생 대기 상태 (예: 저장매체에서 파일을 읽는 중인 상태 등)
프로세스 상태 관계
프로세스가 러닝을 하다가 특정이벤트 대기를 한다.(파일 읽기)
Ready 상태에서 스케줄러에게 선택 받아 Running(실행) 된다.
Running 상태에서 특정한 시점이 되어, 다른프로세스로 변경하기 위해 Ready 상태로 바꾸어 준다.
스케줄러에게 Running 상태로 바꾸어도 된다고 알려주기 위해서 , Ready 상태로 바뀐다.