[OS] 프로세스 스케쥴링(2)

Scheduler Diagram

여기에 깔끔하게 설명된 그림이 하나 더 있습니다. 출처에 보시면 프로세스 상태 변화가 언제 일어나는지 등을 확인할 수 있습니다.

scheduler diagram

CPU Scheduling Criteria (성능 척도)

CPU Scheduling 알고리즘을 알아보기 전, 각 알고리즘들이 어떤 기준으로 평가되는지를 확인하겠습니다. CPU 스케줄링의 성능 척도는 아래와 같이 다섯 가지가 있습니다.

성능 척도 특징
프로세서 이용률
(CPU Utilization)
시간당 CPU를 사용한 시간의 비율
프로세서를 실행 상태로 항상 유지하여 유휴상태가 되지 않도록 함
I/O 중심 작업보다 프로세서 중심 작업을 실행해야 함
처리율
(Throughput)
시간당 처리한 시간의 비율
단위 시간당 완료되는 작업 수가 많도록 정책 수립
짧은 작업을 우선 처리하거나 인터럽트 없이 작업을 실행하는 것을 지향
반환시간
(Turnaround Time)
CPU burst time (쓰고 나갈 때까지 시간)
아래 시간들의 합으로 구성
 ㆍ작업이 시스템에 맡겨져서 메인 메모리에 들어가기까지 시간
 ㆍ준비 큐에 있는 시간
 ㆍ실행 시간
 ㆍ입출력 시간
 ㆍ완료 시간
대기시간
(Waiting Time)
대기열에 들어와 CPU를 할당받기까지 걸린 시간
Ready 상태로 총 얼마나 대기하였는가로 계산
응답시간
(Response Time)
대기열에서 처음으로 CPU를 얻을 때까지 걸린 시간
Ready에서 Running으로 넘어갈 때까지 걸린 시간
대화형 프로그램에서는 응답시간이 빠른 것이 중요함

Types of CPU Scheduling Algorithm (CPU 스케줄링 알고리즘 종류)

주요한 CPU 스케줄링 알고리즘은 아래와 같이 6개가 있습니다.

  1. First Come First Serve (FCFS)
  2. Shortest-Job-First (SJF) Scheduling
  3. Shortest Remaining Time
  4. Priority Scheduling
  5. Round Robin Scheduling
  6. Multilevel Queue Scheduling

scheduling algorithms

First Come First Serve

가장 간단한 스케줄링 방법입니다. 먼저 CPU를 요청하는 프로세스에 CPU 자원이 할당됩니다. FIFO Queue를 이용해 구현될 수 있으며 관리 가능합니다. 프로세스가 Ready Queue에 들어갈 때, PCB(Process Control Block) 이 큐의 끝 부분에 link 되고 작업이 끝나면 시작 주소를 다음 PCB로 넘겨줍니다.

알고리즘의 특징은 다음과 같습니다.

  • 비선점형, 선점형 모두 가능
  • 먼저 요청하는 순서대로 CPU 자원을 할당받음
  • 구현과 사용이 용이함
  • 낮은 성능을 보여주며 대기시간이 굉장히 길어지는 단점이 있음

Shortest Remaining Time

이 알고리즘은 SJF preemptive scheduling 기법으로도 많이 알려져 있습니다. 선점형 최소 작업 우선 알고리즘은 Ready Queue에 있는 프로세스의 작업이 더 빠르다면 현재 Running 프로세스를 멈추고 CPU를 강제로 점유할 수 있음을 뜻합니다.

알고리즘의 특징은 다음과 같습니다.

  • SJF 기반 배치 환경에서 많이 적용됨
  • 프로세스별 정확한 CPU 사용시간을 알 수 없어 실제로 구현되기 어려운 알고리즘
  • 만약 모든 프로세스 동작 시간을 알 수 있다면, Ready Queue를 Heap 구조로 구현하여 가장 빨리 끝나는 프로세스를 찾을 수 있음
  • 기아(Starvation) 현상이 발생할 수 있는데, 이는 대기시간에 비례하는 가중치 부여를 통해 해결할 수 있음

Priority Based Scheduling

프로세스에 부여된 우선순위를 기반으로 동작하는 알고리즘입니다. 선점형과 비선점형 모두 가능합니다. 이 알고리즘 역시 기아 현상이 발생할 수 있습니다. 이 문제는 대기열에 오래 있는 Process들의 우선순위를 높이는 Aging 기법을 통해 해결할 수 있습니다. 우선순위는 프로세스가 요구하는 메모리, 시간 등의 다양한 요소에 따라 결정될 수 있습니다.

Round-Robin Scheduling

제비가 도는 모습을 닮았다는 Round Robin 것에서 유래되었습니다. 가장 오래되고 가장 간단한 방법입니다. 각각의 프로세스들에 동일한 CPU 자원을 할당해주고, 이 시간이 끝나면 다음 대기하고 있는 프로세스에 CPU를 넘겨주게 됩니다. 멀티태스킹에 주로 사용되는 알고리즘으로 기아 현상을 예방할 수 있습니다.

알고리즘의 특징은 다음과 같습니다.

  • 일정 시간에 따라 관리되는 하이브리드 모델
  • 자원을 소유할 수 있는 시간인 Timeslice는 프로세스별로 달라질 수 있음

Shortest Job First

SJF 알고리즘은 가장 짧은 실행 시간을 가진 프로세스가 다음에 실행되는 알고리즘으로 선점 방식과 비선점 방식 모두 구현될 수 있습니다. 선점형 방식이라면 위의 Shortest Remaining Time 알고리즘으로 표현됩니다. SJF 알고리즘은 프로세스 평균 대기 시간을 감소시킬 때 매우 유용한 알고리즘입니다.

알고리즘의 특징은 다음과 같습니다.

  • 각 작업이 끝나는 시간과 관련이 깊음
  • CPU가 사용 가능할 때, 다음에 실행되는 프로세스는 완료시간이 가장 짧은 것
  • 비선점 방식으로 구현될 수 있음
  • 프로그램의 Waiting이 크게 중요하지 않을 때, 이 방법이 매우 효과적일 수 있음
  • Job Throughput을 높일 수 있음

Multiple-level Queues Scheduling

이 알고리즘은 Ready Queue를 여러 종류로 나누어 관리하는 알고리즘입니다. 프로세스는 속성에 따라 구분되고 각 속성에 맞는 큐에 들어가게 됩니다. 각 큐마다 독립적인 프로세스 관리 방법을 적용할 수 있으며, 기아 현상이 발생할 때 우선순위가 높은 다른 큐로 이동하는 방법도 가능합니다.

References

Updated:

Leave a comment