본문 바로가기

별걸다하는 IT/운영체제 OS

[운영체제]Multilevel Queue 다단계큐, 멀티레벨큐

[운영체제(OS) 목차 &책 추천]

Multilevel Queue 다단계 큐란?


이 포스팅을 보기전에 RR FCFS에 대해서 이해를 하고 오셔야합니다

RR과 FCFS가 무엇인지 잘 모른다면 이전 포스팅을 보고 오시는 것을 추천드려요

Multilevel ->여러 개의 레벨! 즉 프로세스들을 중요한거 안중요한거 여러 레벨의 그룹으로 분류한다는 것.


어떤 프로세스냐에 따라서 여러 종류의 그룹으로 나누고 여러 개의 큐에 다양한 알고리즘을 적용하는 스케줄링 기법이예요.


운영체제는 프로세스들을 분류할 때 보통 사용자와 상호작용하는 앞단의 프로세스들은 중요하다고 판단하고 백그라운드에서 돌아가는 프로세스(일괄처리형 batch processes)들은 상대적으로 덜 중요하다고 판단하여 분류하는 것이 일반적이에요.


이렇게 분류를 해서 서로 다른 스케줄링 기법을 적용하는 것이 다단계 큐 알고리즘입니다.


왜 이렇게 여러개로 쪼게서 다른 스케줄링 기법을 적용하는가?


우리와 interactive하게(상호작용적) 작동하는 프로세스는 요구되는 응답시간이 백그라운드 프로세스보다 당연히 더 짧겠죠?

그니까 우리 구글링하는데 결과 바로 바로 안뜨면 짜증나서 창 꺼버리죠 ㅎㅎ

그러나 뒤에서 압축풀기하거나 영화 다운로드 등 이런 백그라운드 작업은 실행시켜놓고 오래걸려도 딱히 크게 신경 안써요. 

(이 포스팅에서도 언급했었죠~!)


무슨말이냐~! 우리는 뒤에서 조용히 돌아가는 프로그램보다는 당장 내가 하고 있는 작업에 대해 반응이 느릴 때 답답해하니까요

내가 당장 하고 있는 작업 == 상호작용적인 작업

response time == 반응 속도 (클릭했을 때 빨리 페이지가 떠야지~! 굼뜨면 빡쳐)

이러한 이유로 앞단의 프로세스들은 백그라운드에서 조용히 돌아가는 프로세스들보다 더 높은 우선순위를 갖게 되고, 빠른 응답 시간을 주기 위해서 당연히 다른 알고리즘이 적용되어야 더 효율적으로 성능을 끌어낼 수 있는거예요.



그림을 보니 시스템 프로세스 즉 운영체제가 만들어낸 프로세스가 우선순위가 가장 높고 사용자와 interactive하게 동작하는 프로세스가 그 다음의 우선순위를 차지하고 있네요. 

background queue는 보통 FCFS 알고리즘이 작동할 것이고 - ex) 내가 온라인홈쇼핑에서 쇼핑하는 동안 뒤에서 다운로드는 쭈우우욱 끝날때까지 한번에 실행되어야 하니까요.

우선순위가 높은 foreground queue에는 아마 RR알고리즘이 적용되겠죠!? (내가 쇼핑하는데 CPU가 자꾸 다른 프로세스 처리하느라 로딩이 느려지면 짜증나잖아요.)


우리가 컴퓨터를 사용할 때를 상상해보면 이해하기가 쉽습니다.

학생 프로세스가 우선순위 최하위에 놓여있군요. 운영체제는 여러분들이 만들어내는 것들을 가장 하찮게 생각합니다 ㅋㅋㅋ

이렇게 큐를 여러 개로 분리해놓고 큐 별로 스케줄링 알고리즘을 지정하는 것이 다단계 큐 즉 multi level queue입니다.


어느덧 여기까지 포스팅이 왔네요! 아직도 기어가야할 내용들이 싼더미같아요ㅎㅎ




이 다단계 큐가 실제로 작동하는 방식?


No process in the batch queue could run unless the queues for system processes, interactive processes, and interactive editing processes were all empty.

이 문장은 프로세스는 절대적인 우선 값을 지니고 있어서 나보다 중요한 프로세스들이 완료되지 않으면 하위 프로세스들은 실행되지 못한다는 내용입니다. 


배치 큐에 있는 프로세스가 실행되려면 앞의 큐들이 다 비어있어야 한다는 거죠!

앞의 큐들이 다 비어있어서 배치 큐에 있는 프로세스가 실행이 되고 있는 데 갑자기 편집 프로세스가 ready queue에 들어오면?! 그러면 배치 프로세스는 잠시 뒤로 물러나고 우선순위가 더 높은 편집 프로세스가 실행이 됩니다. (preemptive 방식!)


이외에, 큐 사이에 time-slice를 적용하는 방식도 있어요. RR방식을 도입한거죠! (당연히 이게 더 많이 사용되겠죠 이것이 결국 priority + RR방식) 각각 큐에게 다른 time quantum을 설정해줍니다.

예를 들어 foreground - background 큐 방식에서는, 중요한 foreground 큐에는 총 CPU burst의 80퍼센트를 커버칠 수 있도록 설정해주고, background 에는 20퍼센트만 주는거예요. RR 포스팅에서 배웠듯이, time quantum이 길어질수록 FCFS방식을 뛴다고 했죠?! 결국 우선순위가 낮은 background 프로세스에 상대적으로 더 긴 time quantum을 할당함으로써 FCFS 느낌을 띄게 되는 겁니다.


다음 포스트에는 다단계 큐의 확장 버전인 Multilevel Feedback Queue Scheduling에 대해서 다뤄볼게요!