OS 스케줄링에 대해서 설명해보세요.

  • FCFS (First Come First Served)

가장 먼저 들어온 것이 가장 먼저 나간다. 큐 그 자체의 의미와 동일합니다. 먼저 수행되기를 원하는 작업이 가장 먼저 수행이 되기 때문에 보통 별다른 생각 없이 짜다보면 이렇게 나오기도 하고, 특별한 경우가 아니라면, 그렇게 문제가 되는 일도 없습니다. 하지만 단점으로는 먼저 들어간 작업이 굉장히 시간이 오래 걸리는 동작이라면, 배려가 없어지기 때문에 문제가 발생합니다.

  • 우선순위 (Priority Scheduling)

우선순위 스케쥴링. 각각의 작업에 우선순위를 매겨, 해당하는 우선순위가 높은 작업이 들어온 경우 가장 빨리 처리가 된다. 선점에 대한 내용은 뒤에 이야기를 할 것이기 때문에 우선 넘기고,, Ready 큐에 10개의 작업이 있던, 1000개의 작업이 있던지 신경을 쓰지 않고, 자신의 우선순위에 맞추어 줄을 선다는 것입니다. 장점으로는 중요한 작업이 먼저 처리가 되기 때문에 FCFS의 부분적인 단점을 해결한다는 것이 장점이지만, 우선순위가 낮은 작업은 우선순위가 높은 작업이 처리가 될 때까지 무작정 기다리기만 해야 한다는 것과 우선순위가 높은 작업이 들어오더라도 즉시 처리가 되지 않는다는 것이 있습니다.

  • SRTF (Shortest Run Time First)

가장 적은 시간이 남은 작업이 먼저 수행이 된다. 이 부분은 사실 Priority Scheduling과도 연계가 될 수 있습니다. 우선 가장 적은 작업 시간이 남은 것이 먼저 수행이 된다면, FCFS에서 필요로 하는 수행시간이 굉장히 긴 작업을 수행할 때 생기는 문제점을 해결을 할 수 있습니다. 단점으로는 필요한 시간이 긴 작업은 계속해서 자신의 위치를 빼앗긴다는 것, 그리고 새로운 작업이 Ready 큐에 들어오는 순간, 이를 다시 계산을 해야 한다는 단점이 있습니다.

  • 선점 (Preemption)

다양한 조건들에 대해서 선점을 하도록 허용한다. 예를 들어, Priority + Preemption이라면, 리셋 버튼을 누르는 순간 기존의 작업을 쫓아내고 리셋 버튼에 해당하는 동작을 하게 된다. 지금 위의 예로는 Priority와 SRTF만이 이 조건을 만족할 수 있다.

  • 멀티 레벨 큐 (Multilevel queues)

위와 같이 다양한 CPU 스케쥴링 방식을 섞어서 사용하는 멀티 레벨 큐 방식. 보통 Priority로 level을 나누고, 그 안에서는 FCFS를 사용한다고 생각하는 것이 가장 편리하게 이해하는 방법이다.

운영체제

유닉스의 kernel을 설명해보세요.

운영체제

UNIX에 대해 설명해보세요.

커뮤니티 Q&A

이론과 관련된 게시글이에요.

이해가 안 되거나 궁금한 점이 있다면 커뮤니티에 질문해 보세요!

게시글 작성하기