카테고리
태그
Algorithm AWS Backend C,C++ cloud computing Computer Science concept Concept Data Structure Database EC2 Frameworks Game global top 100 Gradle Hash Infrastructure Inversion Of Control JAVA Java JPA JWT Network OCI OOP Operating System Programming Basics Programming Language Projects Retrospect Security Sort Spring Spring IOC SpringBoot Study Tomcat TroubleShooting Web basics Web Basics 글쓰기 사색
1186 단어
6 분
[ OS ] 4. Multi-Level Feedback Queue
들어가며
지금까지 여러가지 스케줄링 알고리즘들을 알아봤었다. 그런데 마지막 가정인, 작업에 대한 사전 지식이 없다면 어떤 방식으로 스케줄링을 해야 할까? 이 글에서는 마지막 가정을 해결하는 스케줄링 방식인 MLFQ에 대해 알아보려 한다.
스케줄링 평가 항목(Scheduling Metrics)
추가적인 스케줄링 평가 항목을 알아보자.
Turnaround time(반환 시간)
- OS는 보편적으로 프로세스가 얼마나 걸릴지 모른다.
Response time(응답 시간)
- OS는 유저 상호적으로 시스템을 만드는데 책임이 있다.
문제
지금까지의 스케줄러는 3가지 문제가 있었다.
- 상호적인 작업 응답 시간 최소화
- 반환 시간 최소화
- 작업에 대한 사전 지식 없이
이 3가지를 동시에 만족하는 스케줄러가 있다. 바로 MLFQ이다.
Multi-Level Feedback Queue(MLFQ)
MLFQ(Multi-Level Feedback Queue)는 프로세스 스케줄링 알고리즘으로, 여러 개의 큐를 사용하여 프로세스의 우선순위를 동적으로 조정한다. 이 알고리즘은 프로세스의 특성을 학습하고 그에 따라 우선순위를 변경함으로써, 시스템의 전반적인 성능을 향상시키는 것을 목표로 한다.
MLFQ의 주요 특징
- 여러 개의 우선순위 큐를 사용
- 프로세스의 행동에 따라 우선순위 동적 조정
- CPU 집중 프로세스와 I/O 집중 프로세스를 효과적으로 구분
- 응답 시간과 처리량 사이의 균형 유지
기본 규칙
- 만약 Priority(A) > Priority(B) 일 때, A가 실행,B는 실행되지 않는다.
- 만약 Priority(A) = Priority(B) 일 때, A와 B는 RR로 실행된다.
- 작업이 시스템에 들어가면 최상위 큐에 배치된다.
- a: 주어진 타임 슬라이스를 모두 사용하면 우선순위는 낮아진다. 즉, 한 단계 아래 큐로 이동한다.
- b: 타임 슬라이스를 소진하기 전에 CPU를 양도하면 같은 우선순위를 유지한다.
기존 규칙의 문제
Starvation
- 만약 시스템이 너무 많은 작업이 있을 경우 할당받지 못하는 작업이 있을 수 있다.
Gaming the scheduler
- 타임 슬라이스(time slice)가 끝나기 전에 I/O 작업을 요청하는 경우, 우선순위가 낮아지지 않는다.
Priority Boost: Starvation, Changing behavior에 대한 해결책
- 주기적으로 모든 시스템에 있는 작업들의 우선순위를 끌어올린다.(규칙 추가)
- starvation, changing behavior에 대한 문제해결을 할 수 있다.
- 만약 Priority(A) > Priority(B) 일 때, A가 실행,B는 실행되지 않는다.
- 만약 Priority(A) = Priority(B) 일 때, A와 B는 RR로 실행된다.
- 작업이 시스템에 들어가면 최상위 큐에 배치된다.
- a: 주어진 타임 슬라이스를 모두 사용하면 우선순위는 낮아진다. 즉, 한 단계 아래 큐로 이동한다.
- b: 타임 슬라이스를 소진하기 전에 CPU를 양도하면 같은 우선순위를 유지한다.
- 일정 주기 S 이후, 모든 작업들을 시스템의 최상위 큐에 이동시킨다.
Better Acounting: gaming the scheduler 해결책
- 규칙 4a와 4b를 수정
- 만약 Priority(A) > Priority(B) 일 때, A가 실행,B는 실행되지 않는다.
- 만약 Priority(A) = Priority(B) 일 때, A와 B는 RR로 실행된다.
- 작업이 시스템에 들어가면 최상위 큐에 배치된다.
- 작업이 지정된 단계에서 배정받은 시간을 소진하면(CPU를 포기한 횟수와 상관없이), 작업의 우선순위는 감소한다.(즉, 한 단계 아래 큐로 이동한다.)
- 일정 주기 S 이후, 모든 작업들을 시스템의 최상위 큐에 이동시킨다.
MLFQ의 최종 규칙
- 만약 Priority(A) > Priority(B) 일 때, A가 실행,B는 실행되지 않는다.
- 만약 Priority(A) = Priority(B) 일 때, A와 B는 RR로 실행된다.
- 작업이 시스템에 들어가면 최상위 큐에 배치된다.
- 작업이 지정된 단계에서 배정받은 시간을 소진하면(CPU를 포기한 횟수와 상관없이), 작업의 우선순위는 감소한다.(즉, 한 단계 아래 큐로 이동한다.)
- 일정 주기 S 이후, 모든 작업들을 시스템의 최상위 큐에 이동시킨다.
[ OS ] 4. Multi-Level Feedback Queue
https://blog-full-of-desire-v3.vercel.app/posts/operating_system/-os--4-multi-level-feedback-queue/