스케쥴링 알고리즘에 대하여
메모리에 올려져 실행중인 프로그램을 프로세스라 한다.
프로게스란 실행중인 프로그램이고, 코드 이미지(바이너리)는 실행파일 그 자체를 뜻한다.
프로세스라는 단어는 task, job, 작업 과 같은 용어와 혼용된다.
응용프로그램 = 프로세스 인 것은 아니다!
누가 프로세스 실행을 관리하는가? – 스케쥴러가 프로세스를 관리한다.
프로세스를 관리하는 것은 스케쥴러인데,
스케쥴러가 프로세스를 관리하는 기법을 스케쥴링 알고리즘이라고 한다.
“어느 순서대로 프로세스를 실행시킬까?”
스케쥴링 알고리즘의 목표는 다음과 같다.
가장 기본적인 스케쥴링 알고리즘은 다음과 같다.
FIFO 스케쥴러는 가장 간단한 스케쥴러이며, Queue 자료구조를 활용한 스케쥴러이다.
First In, First Out, 즉 대기열에 가장 먼저 들어온 프로세스를 가장 먼저 실행한다는 것이다.
이 FIFO스케줄러는 배치처리 시스템과 유사한 스케쥴링 알고리즘이다.
최단작업우선 스케쥴러로, 가장 프로세스 실행시간이 짧은 프로세스부터 실행시키는 알고리즘이다.
예를 들어, 다음과 같은 Tasks가 있을 때 ( [프로세스 번호 / 실행 시간])
[1번 / 5초] , [2번 / 2초] , [3번 / 1초]
가장 실행시간이 짧은 3번부터 먼저 실행시키는 알고리즘이다.
우선순위 기반 스케쥴러로, 가장 우선순위가 높은 프로세스부터 실행시키는 알고리즘이다.
우선순위를 어떻게 정하는가?
우선순위를 정하는 방식은 동적 /정적방식이 있으며,
스케쥴러가 상황에 따라 우선순위를 동적으로 변경하는지, 우선순위를 미리 지정하는지의 차이로 보면 된다.
FIFO와 유사하나, 프로세스가 끝나지 않아도 다시 Queue로 넘기는 알고리즘.
Task3가 CPU에서 특정 정해진 시간만큼 실행되다가,
완료되지 않으면 남은 프로세스는 다시 Request Queue로 insert되는 알고리즘이다.
CPU가 시분할 시스템으로 동작하는 것이다.
위 내용은 ‘패스트캠퍼스’의 컴퓨터공학 강좌 내용을 요약 정리한 것임을 밝힙니다. (https://www.fastcampus.co.kr/)