CPU 스케줄링이란
CPU 스케줄링은 운영체제가 CPU를 효율적으로 활용하기 위한 방법입니다. 이는 여러 프로세스들 중에서 어떤 프로세스를 먼저 실행할지, 얼마나 오랫동안 실행할지 등을 결정하는 일련의 과정을 말합니다. CPU 스케줄링은 시스템 성능을 높이고, 시스템 자원을 효율적으로 사용하여, 다양한 작업을 보다 빠르게 처리할 수 있도록 도와줍니다.
CPU 스케줄링은 규모에 따라 장기, 중기, 단기 스케줄링으로 구분된다.
CPU 스케줄링은 프로세스들의 우선순위와 요구사항에 따라 CPU 자원을 할당하는 방법입니다. 이러한 CPU 스케줄링 방법은 프로세스의 규모와 적용 시기에 따라 장기, 중기, 단기 스케줄링으로 구분됩니다.
- 장기 스케줄링: 시스템에 새로운 프로세스가 들어올 때, 어떤 프로세스를 메모리에 올릴 것인지 결정하는 단계입니다. 이 단계는 프로세스의 수행 시간, 우선순위, 입출력 요구 등을 고려하여 결정됩니다.
- 중기 스케줄링: 메모리에 올라와 있는 프로세스들 중 어떤 프로세스를 디스크에 swap-out 시킬 것인지 결정하는 단계입니다. 이 단계는 메모리 부족 상황 등에서 필요하며, 프로세스들의 입출력 요구를 고려하여 결정됩니다.
- 단기 스케줄링: CPU를 할당받기 위해 대기 중인 프로세스들 중에서 어떤 프로세스를 선택하여 CPU를 할당할 것인지 결정하는 단계입니다. 이 단계는 프로세스의 우선순위, 수행 시간 등을 고려하여 결정됩니다.
각각의 스케줄링 단계는 시스템 전체의 성능과 CPU 활용률을 결정하는 중요한 역할을 합니다.
선점형 스케줄링과 비선점형 스케줄링이란
선점형 스케줄링은 운영체제가 프로세스 실행 중간에 다른 프로세스로 제어권을 뺏어 해당 프로세스를 일시 중지시키고, 우선순위가 더 높은 프로세스에게 제어권을 넘겨주는 스케줄링 방식입니다. 반면에 비선점형 스케줄링은 프로세스가 종료되거나 입출력 등의 이벤트가 발생할 때까지 해당 프로세스가 제어권을 유지하는 스케줄링 방식입니다.
선점형 스케줄링의 종류로는 Round Robin, Priority Scheduling 등이 있으며, 비선점형 스케줄링의 종류로는 First Come First Served, Shortest Job First 등이 있습니다. 각 방식의 특징과 장단점에 대해 자세히 알아보도록 하겠습니다.
비선점형 스케줄링
FCFS(First-Come, First-Served)
FCFS 방식은 먼저 도착한 프로세스를 먼저 실행하는 방식입니다. 즉, CPU가 현재 수행중인 작업을 완료하면, 대기중인 프로세스 중에서 가장 먼저 들어온 프로세스를 실행합니다. FCFS 방식은 구현이 간단하고 공정한 방식이지만, 대기시간이 길어질 수 있고, 작업시간이 긴 프로세스가 먼저 실행될 경우, 평균 대기시간이 길어질 수 있습니다.
SJF(Shortest Job First)
SJF 방식은 대기시간이 가장 짧은 작업을 우선적으로 실행하는 방식입니다. 따라서, 실행시간이 긴 프로세스보다 짧은 프로세스가 먼저 실행되기 때문에 평균 대기시간이 짧아집니다. 하지만, 작업시간을 미리 알고 있어야 하며, 작업시간을 추정하는 것이 어렵다면, 예측 오류로 인해 평균 대기시간이 길어질 수 있습니다. 또한, 작업시간이 짧은 프로세스가 지속적으로 들어올 경우, 작업시간이 긴 프로세스는 계속 대기해야 하므로, 기아 상태(Starvation)가 발생할 수 있습니다.
선점형 스케줄링
Priority Scheduling
Priority Scheduling 방식은 우선순위가 높은 프로세스부터 실행하는 방식입니다. 각 프로세스는 우선순위를 가지고 있으며, 높은 우선순위를 가진 프로세스가 먼저 실행됩니다. 우선순위는 정적으로 할당되거나, 동적으로 변화할 수 있습니다. Priority Scheduling 방식은 중요한 작업부터 처리하고자 할 때 유용합니다. 하지만, 우선순위가 높은 프로세스가 계속해서 들어올 경우, 우선순위가 낮은 프로세스는 계속 대기하게 되어 기아 상태가 발생할 수 있습니다.
Round Robin
Round Robin 방식은 각 프로세스에게 일정한 시간 할당을 해주고, 할당된 시간이 지나면, 다음 프로세스에게 CPU를 넘기는 방식입니다. 이 때, 넘겨주는 시간을 할당 시간이라고 합니다. 할당 시간이 짧으면, CPU를 빨리 넘겨줄 수 있지만, 문맥 교환(Context Switching)이 자주 발생하여 오버헤드가 커질 수 있습니다. 할당 시간이 길면, 문맥 교환 오버헤드는 줄어들지만, 프로세스의 대기시간이 길어질 수 있습니다.
프로세스 우선순위
커널 프로세스와 일반 프로세스는 운영체제에서 실행되는 프로세스의 두 가지 유형입니다. 이 둘은 각각의 특성에 따라 우선순위를 부여 받습니다.
커널 프로세스
커널 프로세스는 운영체제의 핵심 기능을 수행하기 위한 프로세스입니다. 이 프로세스들은 시스템의 안정성과 보안을 유지하는 역할을 합니다. 그래서 이러한 프로세스들은 일반 프로세스들보다 높은 우선순위를 가지며, 우선적으로 처리됩니다.
일반 프로세스
일반 프로세스는 사용자가 실행하는 일반적인 프로그램입니다. 이러한 프로세스들은 사용자의 요청에 따라 실행되어 작업을 수행합니다. 그러나 이러한 프로세스들은 커널 프로세스보다 낮은 우선순위를 가지므로, 시스템의 자원을 모두 사용하고 있을 때는 느리게 처리될 수 있습니다.
CPU bound process와 IO bound process
전면 프로세스와 후면 프로세스
일반 프로세스는 또한 전면 프로세스와 후면 프로세스로 구분됩니다. 전면 프로세스는 사용자와 상호 작용하는 프로세스로서, 사용자의 입력을 대기하고 있습니다. 그러므로 이러한 프로세스들은 일반 프로세스 중에서도 높은 우선순위를 가집니다. 반면에 후면 프로세스는 백그라운드에서 실행되며, 사용자와 상호 작용하지 않습니다. 그러므로 일반 프로세스 중에서 가장 낮은 우선순위를 가지게 됩니다.
따라서, 일반 프로세스는 우선순위와 함께 전면 프로세스인지 후면 프로세스인지에 따라 처리 속도가 달라질 수 있습니다.
참고
'Computer Science > OperatingSystem' 카테고리의 다른 글
[OS] 프로세스와 스레드는 어떤 차이점이 있나요? (0) | 2023.06.30 |
---|---|
[OS] 요구 페이징 (0) | 2023.04.19 |
[OS] 참조의 지역성과 참조 집합 (0) | 2023.03.05 |
[OS] 가상 메모리(Virtual Memory System) 란? (0) | 2023.02.23 |
[OS] 운영체제 란? (0) | 2023.01.11 |