강의

멘토링

로드맵

Inflearn brand logo image

인프런 커뮤니티 질문&답변

jo님의 프로필 이미지
jo

작성한 질문수

그림으로 쉽게 배우는 운영체제

MLFQ

MLFQ 알고리즘

해결된 질문

작성

·

384

2

안녕하세요. MLFQ 강의를 듣다가 궁금한 점이 생겨 질문드립니다.

마지막 부분에 우선순위 별로 큐가 나뉘고 우선순위가 낮으면 탕미슬라이스가 커지는데, 이 때 우선순위는 기준이 무엇인가요?

CPU 연산을 주로 하는 프로세스(P1)와 I/O작업을 주로 하는 프로세스(P2)가 있다고 할 때, P2의 경우는 CPU처리량이 많지 않아 우선순위큐가 항상 상위에 있을 것 같고 P1의 경우는 우선순위가 낮을 것 같은데 이 때 낮은 우선순위큐들은 어떻게 선택되어 실행이 되는건가요? 우선순위가 낮다는 것은 실행이 될 확률이 낮다는 건가요? 우선순위가 낮은 큐에 있는 프로세스들이 기아상태가 될 가능성도 있나요?

 

만약에 P1의 작업시간이 25초이고 우선순위 큐1(타임슬라이스10초)에서 실행상태가 된다고 하면 10초 이후에 CPU를 빼앗겨 우선순위 큐2(타임슬라이스20초)에 들어갔다가 다시 실행상태가 되었을 때 나머지 15초를 실행한 후 CPU를 반납하는건가요? 아니면 처음부터 다시 25초에 대해서 진행해서 CPU를 빼앗기고 우선순위큐3(타임슬라이스 30초)으로 들어가게 되나요?

 

마지막으로 준비상태일 때 준비큐에 있다가 실행상태가 된다고 하였는데 실행상태일 때는 어디에 있는 건가요? 준비큐 I/O큐 이런 것들은 어디에 존재하는건가요?

답변 1

0

감자님의 프로필 이미지
감자
지식공유자

마지막 부분에 우선순위 별로 큐가 나뉘고 우선순위가 낮으면 탕미슬라이스가 커지는데, 이 때 우선순위는 기준이 무엇인가요?

우선순위는 사용자의 용도에 따라 다르겠지만 모든 프로세스를 공평하게 사용하는 OS인 경우 "일반적으로" 실행시간이 기준입니다.
한 프로세스가 너무 길게 실행되면 다른 프로세스들이 실행되지 못하니까 길게 실행되는 프로세스의 우선순위를 낮춰서 다른 프로세스들도 실행되게 만들어줍니다.
다만 사용자가 특정 프로세스를 중요하게 생각한다면 해당 프로세스의 우선순위를 수정하는 방법도 있습니다.

CPU 연산을 주로 하는 프로세스(P1)와 I/O작업을 주로 하는 프로세스(P2)가 있다고 할 때, P2의 경우는 CPU처리량이 많지 않아 우선순위큐가 항상 상위에 있을 것 같고 P1의 경우는 우선순위가 낮을 것 같은데 이 때 낮은 우선순위큐들은 어떻게 선택되어 실행이 되는건가요? 우선순위가 낮다는 것은 실행이 될 확률이 낮다는 건가요? 우선순위가 낮은 큐에 있는 프로세스들이 기아상태가 될 가능성도 있나요?

P2의 경우 처리량이 많지 않기 때문에 항상 상위에 있는 게 맞습니다.
처리량이 많지 않으므로 작업이 끝나면 큐에 들어가지 않고 사라집니다. 작업이 끝났으니 당연한 것이죠.
만약 P2가 타임슬라이스를 오버할 만큼 조금 더 처리량이 많아진다면 CPU를 중간에 뺏기게 될 것이고, 그렇게 되면 똑같이 우선순위가 낮아지고, 같은 우선순위에 큐에서는 순서대로 실행되니 P1이 실행되지 않는 일은 발생하지 않습니다.

MLFQ에서 새로운 프로세스가 계속 생성돼서 우선순위가 높은 큐에 끊임없이 들어온다면 우선순위가 낮은 프로세스는 실행되지 않을 수도 있습니다.
이때는 노화(Aging)기법으로 우선순위를 다시 높여 기아 상태가 발생하지 않도록 합니다.

만약에 P1의 작업시간이 25초이고 우선순위 큐1(타임슬라이스10초)에서 실행상태가 된다고 하면 10초 이후에 CPU를 빼앗겨 우선순위 큐2(타임슬라이스20초)에 들어갔다가 다시 실행상태가 되었을 때 나머지 15초를 실행한 후 CPU를 반납하는건가요? 아니면 처음부터 다시 25초에 대해서 진행해서 CPU를 빼앗기고 우선순위큐3(타임슬라이스 30초)으로 들어가게 되나요?

P1의 25초를 우선순위 큐1에서 10초 처리했다면 나머지를 다른 큐에서 처리합니다.
그럼 우선순위 큐2에서 10초,
우선순위 큐3에서 5초를 처리하겠죠?

마지막으로 준비상태일 때 준비큐에 있다가 실행상태가 된다고 하였는데 실행상태일 때는 어디에 있는 건가요? 준비큐 I/O큐 이런 것들은 어디에 존재하는건가요? 프로세스 내의 메모리에 존재하는 건가요?

프로세스 스케쥴링은 운영체제의 핵심 기능중의 하나라서 커널에서 처리합니다.
프로세스들은 실제로 PCB로 존재하고, 이 PCB들을 큐(Queue) 자료구조로 보관합니다.
그래서 준비 큐(Ready Queue), 실행 큐(Run Queue)라는 이름이 된 것이죠.
두 개 모두 커널영역에 존재합니다!

jo님의 프로필 이미지
jo
질문자

운영체제 처음 공부하면서 헷갈린 부분이 많았는데 상세히 설명해주셔서 감사합니다!

jo님의 프로필 이미지
jo

작성한 질문수

질문하기