CPU Scheduling

ggyu_55·2023년 3월 7일
0

메모

목록 보기
3/46

메모리에 적재된 프로세스를 CPU가 실행하는데, CPU는 사실 한번에 하나의 작업만 수행할 수 있습니다.
즉, 여러 개의 프로세스를 동시에 수행하는 것이 아니라 빠르게 번갈아가면서 처리하는 것이죠.
따라서 프로세스의 전환이 일어날 때, 능률을 어떻게 보장할 것인가 하는 문제가 생기게 되었습니다.


CPU Scheduling이란?

프로세스가 생성되어 실행될 때, 필요한 시스템 자원을 해당 프로세스에 할당하는 작업을 의미합니다.

Scheduling의 특징과 그 목적

1.공정한 스케줄링

모든 프로세스에게 공정하게 할당을 해야합니다.

2. 응답시간 최소화

사용자에게의 최대한 응답시간(response time)을 빠르게 하여야 합니다.

3. 반환시간 최소화

프로세스를 제출한 시간부터 완료시까지 걸리는 반환시간(turn around time)을 최소화해야 합니다.

4. 대기시간 최소화

프로세스 준비 상태 큐에서 대기하는 시간을 최소화 해야합니다.

5. 처리량 최대화

단위시간당 처리량을 최대화 해야합니다.

6. 우선 순위제

먼저 처리해야 하는 것에 우선 순위를 부여해서 먼저 처리합니다.

7. 균형 있는 자원 사용

자원들이 유휴 상태에 놓이지 않도록 최적화하여야 합니다.

8. 무한 연기 회피

한 프로세스가 다른 프로세스가 점유한 자원을 사용하기 위해 무한정 연기하는 경우를 회피하여야 합니다.


Scheduling Algorithm의 종류

1. 선점형 스케쥴링

한 프로세스가 CPU를 사용하고 있을 때, 다른 프로세스가 실행 중인 프로세스를 중지시키고 CPU를 차지할 수 있도록 하는 방식을 선점형 스케쥴링이라고 합니다. 우선순위가 높은 프로세스를 빠르게 처리해야 할 때 유리하고, 빠른 응답시간을 요하는 시분할 시스템에 적합합니다. 다만, Context-Switching에 따른 오버헤드가 심하다는 단점이 있습니다.

  • Round Robin : 정해진 시간에 주어진 만큼 프로세스를 할당한 뒤 작업이 도중에 끝난 프로세스는 ready-Queue의 가장 마지막에 가서 재할당을 기다리는 방식.

  • SRT : Short-Remaining-Time. 대기 큐의 가장 짧은 소요시간을 가진 프로세스가 CPU를 선점 가능한 방식.

  • Multilevel-Queue : ready-Queue를 여러개의 큐로 분류하여 각 큐가 각각 다른 스케쥴링 알고리즘을 가지는 방식. 특정 프로세스가 각개 대기 큐에 고정됩니다.

  • Multilevel-Feedback-Queue : 큐와 큐 사이에 프로세스가 이동하는 것을 허용하는 MultiLevel-Queue 방식. 여러개의 대기 큐를 두고 큐마다 다른 시간 할당량을 부여합니다. 짧은 작업에 유리하고, 입출력 작업에 우선권을 부여합니다.

2. 비선점형 스케쥴링

자원의 사용이 끝나기를 기다린 후, 어떠한 규칙에 따라 프로세스가 할당받은 시간을 모두 소모하는 방식을 비선점형 스케쥴링이라고 합니다. 응답시간을 예측할 수 있고 모든 프로세스에 대하여 공정합니다. 하지만 중요도가 높은 작업이 낮은 작업이 실행되는 동안 기다리게 되는 문제가 발생할 수 있습니다.

  • FCFS : First Come, First Serve, 즉 먼저 도착한 프로세스를 먼저 처리하는 방식

  • SJF : Shorted Job First, 즉 최단 작업을 우선하는 스케쥴링

  • HRN : Highest-Response-Next, 긴 작업과 짧은 작업간의 공정성을 고려하여, Response-ratio ( (대기시간+ 처리시간) / 처리시간 ) 가 높은 작업을 선택합니다. 따라서 짧은 작업이나 대기시간이 길었던 작업의 우선순위가 높아집니다. SJF의 문제점인 Starvation을 해결하기 위한 방식입니다.

  • Priority Scheduling : 프로세스의 우선 순위를 미리 정해놓고, 미리 주어진 우선순위에 따라서 스케쥴링하는 방식


Context-Switching

하나의 프로세스가 CPU를 사용 중인 상태에서 다른 프로세스가 CPU를 사용하도록 하기 위해, 이전의 프로세스의 상태를 보관하고 새로운 프로세스의 상태를 적재하는 작업을 의미합니다.

구체적으로는 동작 중인 프로세스가 대기를 하면서 해당 프로세스의 상태(Context)를 PCB에 보관하고, 대기하고 있던 다음 순서의 프로세스가 동작하면서 이전에 보관했던 프로세스의 상태를 복구하는 하는 것을 말합니다.

Context-Switcing은 운영체제의 CPU자원을 할당하는 스케줄러(Scheuler)에 의해 발생합니다. 스케쥴러가 CPU를 적절하고 효율적으로 사용할 수 있도록 하는 작업을 스케줄링이라고 합니다.


PCB

PCB란,


면접 예상 질문

CPU Scheduling이 무엇인지 설명해 주세요 :

답변 보기 CPU Scheduling은 프로세스가 생성되어 실행될 때, 필요한 시스템 자원을 해당 프로세스에 할당하는 작업을 의미합니다. CPU가 한번에 하나의 프로세스밖에 실행하지 못하기 때문에, 시스템 자원을 효율적으로 사용하기 위해서 스케쥴링이 필요합니다.
CPU Scheduling의 종류는 크게 선점형 알고리즘과, 비선점형 알고리즘으로 나눌 수 있습니다.

비선점형 스케쥴링에 대해서 설명해 주세요 :

답변 보기 다른 프로세스의 작업이 끝나기를 기다린 후, 정해진 규칙에 따라 프로세스가 할당받은 시간을 모두 소모하는 방식을 비선점형 스케쥴링이라고 합니다. 응답시간을 예측할 수 있고 모든 프로세스에 대하여 공정합니다. 하지만 중요도가 높은 작업이 낮은 작업이 실행되는 동안 기다리게 되는 문제가 발생할 수 있습니다.
비선점형 스케쥴링 알고리즘에는 First-Come-First-Serve, Short-Job-Fisrt, Highest-ResponseRatio-Next, 우선순위 스케쥴링 등이 있습니다.

선점형 스케쥴링에 대해서 설명해 주세요 :

답변 보기 한 프로세스가 CPU를 사용하고 있을 때, 다른 프로세스가 실행 중인 프로세스를 중지시키고 CPU를 차지할 수 있도록 하는 방식을 선점형 스케쥴링이라고 합니다. 우선순위가 높은 프로세스를 빠르게 처리해야 할 때 유리하고, 빠른 응답시간을 요하는 시분할 시스템에 적합합니다. 다만, Context-Switching에 따른 오버헤드가 심하다는 단점이 있습니다.
선점형 스케쥴링 알고리즘에는 Round Robin, Short-Remaing-Time, MutilLevel-Queue, MultiLevel-Feedback-Queue 등이 있습니다.

0개의 댓글