본문 바로가기
study/운영체제

운영체제 3 - 스케쥴링 방식: FIFO / SJT / RoundRobin

by 고기만두(개발자) 2021. 12. 5. 16:56
728x90
반응형

운영체제3

이전 글 https://career-gogimandu.tistory.com/60 에서는

배치처리, 시분할시스템, 멀티태스킹, 멀티프로그래밍에 대하여 알아보았다.

 

오늘은 스케쥴링(Scheduling) 방식에 대해 알아보는 시간을 준비하였다.

 

스케줄링언어지문
스케줄링에 대한 비문학 지문으로 당시 꽤나 어려웠던 지문인 걸로 기억하는데

어디선가 어렴풋이 언어 지문이 기억날랑말랑 하여 찾아보니 나온

2012년 6월 언어영역(이때만 해도 국어가 아니라 언어였다) 모의고사 지문.. 라떼는 말이야 흠흠..

 

오늘 포스팅의 내용도 이와 상당히 유사할 것으로 보인다.

아, 그 전에 프로세스에 대해 자세히 이해하고 넘어가야 혼동이 적을 듯 하다.

0. 프로세스(Process) 란?

메모리에 올려져서 '실행 중인 프로그램'을 프로세스라고 말한다.

작업, task, job 과 혼용되어 사용되지만,

엄밀히 말해 응용 프로그램과 프로세스는 같지 않다.

 

뭐 우리가 교육 목적으로 공부하면서 일반적으로 코딩하는 정도의 난이도로는 같다 말할 수도 있겠지만,

하나의 응용프로그램은 일반적으로 여러 개의 프로세스가 상호작용을 하며 실행된다.

그리고 이 프로세스들의 실행을 관리하는 것이 바로 스케쥴러이다.


1. FIFO (First in - First out)

프로세스가 저장 매체를 읽거나, 프린트를 한다거나 하는 작업 없이 CPU를 처음부터 끝까지 쭉 사용하는 작업.

First-come First-served, 즉 선착순이다.

먼저 오는 순서대로 처리하는 방식으로, 가장 간단한 스케줄링 방식이라고 볼 수 있다.

배치처리 시스템과 유사하다고 볼 수 있을 듯 하다.

https://career-gogimandu.tistory.com/16 에서 설명한 Queue와도 유사하다.


2. SJT (Shortest Job First) - 최단작업 우선 스케줄러

가장 짧은 프로세스부터 먼저 실행시키고 치워버린다.

가장 간단한 일부터 빨리 해치우고 어려운 일은 나중에 하려고 드는 직장인 고기만두의 모습과 닮았다.

sjt
들어와 있는 프로세스의 큐는 앞이 1이고 뒤가 3이다. 혼동이 유발될 듯 하여 급히 덧붙임.

한 칸을 1초라고 가정했을 때, 작업 1은 2초, 작업 2는 3초, 작업 3은 1초가 걸린다.

SJT 방식에서는 각 작업의 총 수행시간이 짧은 순서대로

1초짜리 작업 3 -> 2초짜리 작업 1 -> 3초짜리 작업 2 순서대로 처리하게 된다.


3. Round Robin

시분할 시스템에 어울리는 스케쥴링 방식이라고 볼 수 있다. (앞 글 참고)

프로세서가 일정 주기마다 프로세스를 스위칭하고, 끝나지 않았더라도 일정 시간이 지나면 다음 프로세스로 넘어간다.

그리고 하다 만 프로세스는 뒤로 몰아놓는다.

아까 그 예제로 1초에 한번씩 프로세스가 스위칭된다고 가정해보자.

roundrobin

1을 1초 간 실행하고, 1초 남은 1을 맨 뒤로 돌린다.

그 다음 2를 1초 간 실행하고, 2초 남은 2들을 맨 뒤로 돌린다.

3을 실행하고, 1을 실행하고, 2들을 실행한다(이 과정들에서는 남아서 뒤로 돌리는 프로세스가 없게 된다)

 

그래서 실제 수행순서는 1-2-3-1-2-2 순서가 된다.

 

운영체제의 특성에 따라 이 3가지 대표적인 방식 말고도, 다양한 방식이 존재할 수 있다.

728x90
반응형

댓글