05. 스케쥴링 알고리즘
프로세스란?
메모리에 올려져서 실행 중인 프로그램
코드 이미지(바이너리): 실행 파일, 예: ELF format
작업, task, job이라는 용어와 혼용 됨
응용프로그램 != 프로세스
응용프로그램은 여러 개의 프로세스로 이루어질 수 있음.
하나의 응용프로그램은 여러 개의 프로세스가 상호작용 하면서 실행될 수 있음.
간단한 C/C++ 프로그램을 만든다면 => 하나의 프로세스 여러 프로그램을 만들어서 서로 통신하면서 프로그램 작성상(IPC 기법)
스케쥴러와 프로세스관계
스케쥴러 : 프로세스 실행을 관리
스케쥴링 알고리즘
어느 순서대로 프로세스를 실행시킬까?
목표
시분할 시스템 예: 프로세스 응답 시간을 가능한 짧게
멀티 프로그래밍 예: CPU 활용도를 최대로 높혀서 프로세스를 빨리 실행
기본 스케쥴링 알고리즘
FIFO
프로세스가 저장 매체를 읽는다는지, 프린팅을 한다든지 하는 작업 없이 쭉 CPU를 처음부터 끝까지 사용한다.
가장 간단한 스케쥴러
배치 처리 시스템과 유사
FCFS(First Come First Served) 스케쥴러
최단작업우선(SJF: Shortest Job First) 스케쥴러
가장 프로세스 실행 시간이 짧은 프로세스부터 먼저 실행시키는 알고리즘
장점: 응답 시간이 짧은 프로세스부터 실행되어 FIFO보다는 응답 시간이 짧을 수 있음. 줄줄이 지 되는 경우는 발생하지 않는다.
단점: 단, 실행 시간을 알아야 한다.
우선순위 기반(Priority-Based) 스케쥴러
프로세스에 우선순위를 메겨둠.
정적 우선순위
프로세스마다, 우선순위를 미리 지정
(웹을 1순위로 해 놓는 다는지 그런)
동적 우선순위
스케쥴러가 상황에 따라 우선순위를 동적으로 변경
Round Robin 스케쥴러
시분할 시스템을 위해 설계된 선점형 스케쥴링의 하나.
시간 단위로 CPU(process) 할당
단위 시간 안에 해당 프로세스가 모두 실행되지 않았을 경우, 다시 준비 queue로 돌아가서, CPU 할당 받을 준비를 다시 함.
잠깐!(SJF에 참조)
RealTime OS(RTOS): 응용프로그램 성능 보장을 목표로 하는 OS
정확하게 프로그램 시작, 완료 시간을 보장.
Hardware RTOS, Software RTOS
시간에 민감한 컴퓨팅 환경에 적합
General Purpose OS(GPOS)
프로세스 실행 시간에 매우 민감하진 않고, 일반적인 목적으로 사용되는OS
예: Windows, Linux등 (일반적인 OS)
Last updated