[OS]4. 스케줄링 알고리즘 선점 vs 비선점

안녕하세요. 꿀발자입니다. 운영체제에서 자원을 효율적으로 관리하기 위해 다양한 스케줄링 알고리즘이 사용됩니다. 스케줄링 방식은 크게 선점형(Preemptive)비선점형(Non-preemptive)으로 구분되며, 각 스케줄러의 특성에 따라 적합한 방식이 적용됩니다. 프로세스 스케줄러, 디스크 스케줄러, 메모리 스케줄러, 네트워크 스케줄러 등 다양한 스케줄러들이 각각의 자원에 맞춰 선점 또는 비선점형 알고리즘을 사용하여 최적의 성능을 발휘하게 합니다. 지금부터 이 두 가지 방식의 스케줄링 알고리즘과 그 예시들을 자세히 알아보겠습니다.

프로세스 스케줄러 (Process Scheduler)

프로세스 스케줄러는 CPU를 각 프로세스에 적절하게 할당하는 역할을 담당하는 시스템 소프트웨어입니다. 이 스케줄러는 프로세스가 효율적으로 실행되도록 관리하며, 두 가지 주요 스케줄링 방식이 있습니다. ( Wikipedia – CPU Scheduling )

선점형 스케줄링 알고리즘

선점형 스케줄링은 실행 중인 프로세스를 강제로 중단하고, 다른 프로세스에 CPU를 할당하는 방식입니다. 시스템 자원의 효율적인 분배를 위해 사용되며, 주로 우선순위가 높은 작업이 있을 때 사용됩니다.

스케줄링 알고리즘설명
Round Robin (RR)모든 프로세스에게 동일한 시간 할당량을 제공하며, 그 시간이 지나면 다른 프로세스로 교체.
Priority Scheduling (선점형)더 높은 우선순위를 가진 프로세스가 등장하면 현재 실행 중인 프로세스를 중단하고, 우선순위가 높은 프로세스를 실행.
SRTF (Shortest Remaining Time First)남은 실행 시간이 가장 짧은 프로세스가 CPU를 차지하며, 더 짧은 작업이 나타나면 현재 작업을 중단하고 새로운 작업을 처리.

선점형 스케줄링 알고리즘

비선점형 스케줄링은 실행 중인 프로세스가 자발적으로 종료될 때까지 CPU를 계속 사용하게 하는 방식입니다. 프로세스가 CPU 사용을 끝내기 전까지 다른 프로세스가 CPU를 차지할 수 없습니다.

스케줄링 알고리즘설명
FCFS (First-Come, First-Served)도착한 순서대로 프로세스를 처리하며, 한 번 CPU를 할당받은 프로세스는 종료될 때까지 실행.
SJF (Shortest Job First)실행 시간이 가장 짧은 프로세스를 먼저 처리하되, 한 번 할당되면 끝날 때까지 계속 실행.
Priority Scheduling (비선점형)우선순위가 높은 작업을 먼저 실행하되, CPU를 할당받은 프로세스는 완료될 때까지 중단되지 않음.

이 두 가지 방식은 시스템의 성능과 응답 속도에 큰 영향을 미칩니다.

디스크 스케줄러 (Disk Scheduler)

디스크 스케줄러는 디스크 I/O 요청을 효율적으로 처리하여 디스크 헤드의 이동을 최소화하는 역할을 합니다. 이는 디스크의 물리적 특성 때문에 중요한데, 불필요한 이동을 줄이면 입출력 성능이 크게 향상됩니다.

대부분의 디스크 스케줄링 알고리즘은 비선점형으로 작동합니다. 이는 CPU 스케줄링과 달리 디스크 작업은 중간에 중단될 수 없고 연속적으로 진행되어야 하기 때문입니다. 디스크 스케줄러는 이러한 특성을 고려해 최적의 순서로 작업을 처리하여 시스템 성능을 높입니다.

선점형 스케줄링 알고리즘

스케줄링 알고리즘설명
FCFS (First-Come, First-Served)디스크 요청을 순서대로 처리합니다.
SSTF (Shortest Seek Time First)디스크 헤드의 이동 거리가 가장 짧은 요청을 먼저 처리합니다.
SCAN디스크 헤드가 한 방향으로 이동하며 그 경로의 요청을 처리하고, 끝에 도달하면 반대 방향으로 돌아와 처리.
C-SCAN (Circular SCAN)디스크 헤드는 한 방향으로만 이동하며 끝에 도달하면 처음으로 돌아가 다시 진행.

메모리 스케줄러 (Memory Scheduler)

메모리 스케줄러는 시스템 메모리의 할당과 해제를 관리하여 효율적인 메모리 사용을 보장하는 역할을 합니다. 프로세스가 필요한 메모리를 할당받으면 작업이 완료될 때까지 메모리를 유지하며, 필요한 경우 스와핑을 통해 메모리를 관리합니다.

대부분의 메모리 스케줄링은 비선점형 방식으로 작동하며, 프로세스가 자발적으로 종료될 때까지 할당된 메모리를 사용합니다. 이러한 방식은 메모리 충돌을 줄이고, 안정적인 메모리 관리에 기여합니다. ( IEEE Xplore )

선점형 스케줄링 알고리즘

스케줄링 알고리즘설명
페이징 (Paging)메모리를 고정된 크기의 페이지로 나누고, 프로세스에 페이지를 할당.
세그먼테이션 (Segmentation)프로세스를 논리적 세그먼트로 나누어 메모리를 할당.
스와핑 (Swapping)메모리가 부족할 때 실행 중인 프로세스를 보조 기억장치로 이동시킨 후 다시 불러옵니다.

네트워크 스케줄러 (Network Scheduler)

네트워크 스케줄러는 네트워크 패킷을 효율적으로 관리하여 트래픽을 최적화하고 서비스 품질(QoS)을 보장하는 역할을 합니다. 실시간으로 발생하는 네트워크 트래픽을 처리하기 위해, 선점형 스케줄링 방식이 주로 사용됩니다. 이는 우선순위나 대역폭을 보장하기 위해 특정 패킷의 전송을 선점적으로 관리해야 하기 때문입니다. 이를 통해 중요한 데이터가 지연 없이 전달되도록 합니다.

선점형 스케줄링 알고리즘

스케줄링 알고리즘설명
Priority Queuing우선순위가 높은 패킷이 먼저 처리됩니다.
WFQ (Weighted Fair Queuing)패킷의 우선순위에 따라 대역폭을 가중치로 나누어 처리.
Round Robin (RR)네트워크 패킷을 순차적으로 공평하게 처리.
FIFO (First-In, First-Out)먼저 도착한 패킷을 먼저 처리.

I/O 스케줄러 (I/O Scheduler)

I/O 스케줄러는 디스크, 네트워크, 프린터 등 다양한 입출력 장치의 I/O 요청을 효율적으로 처리하는 역할을 합니다. 주로 비선점형 방식이 사용되며, 이는 한 번 시작된 I/O 작업이 중단되기 어렵기 때문입니다. 일반적으로 대기 중인 I/O 요청을 순서대로 처리하여 시스템의 안정성과 성능을 유지합니다. ( Oracle Documentation )

선점형 스케줄링 알고리즘

스케줄링 알고리즘
설명
FCFS (First-Come, First-Served)I/O 요청을 순서대로 처리.
SSTF (Shortest Seek Time First)요청된 장치에서 가장 가까운 위치의 I/O 작업을 먼저 처리.

배터리 스케줄러 (Battery Scheduler)

배터리 스케줄러는 모바일 시스템에서 배터리 자원을 효율적으로 관리하는 역할을 합니다. 배터리 소모를 줄이기 위해, 선점형 스케줄링 방식이 주로 사용됩니다. 이 방식에서는 더 중요하거나 긴급한 작업이 있을 때 덜 중요한 작업을 중단하거나 제한하여 배터리 자원을 최적화합니다. 이를 통해 모바일 기기의 전력 효율성을 극대화하고, 배터리 수명을 연장할 수 있습니다.

선점형 스케줄링 알고리즘

스케줄링 알고리즘
설명
Dynamic Voltage and Frequency Scaling (DVFS)CPU의 전압과 주파수를 동적으로 조정하여 배터리 소모를 줄임.
Task Scheduling with Priority중요하지 않은 작업을 일시 중단하거나 배터리 소모를 최소화하는 작업을 우선 처리.

GPU 스케줄러 (GPU Scheduler)

GPU 스케줄러는 GPU를 사용하는 작업을 효율적으로 관리하여 그래픽 처리 및 병렬 연산 성능을 최적화하는 역할을 합니다. 주로 선점형 스케줄링을 사용하며, 이는 빠른 응답이 중요한 그래픽 작업이나 병렬 연산 작업에서 우선순위가 높은 작업이 GPU 자원을 우선적으로 사용할 수 있도록 하기 위함입니다. 이를 통해 GPU 성능을 극대화하고 중요한 작업의 처리 속도를 높일 수 있습니다. ( The Linux Kernel Archives )

선점형 스케줄링 알고리즘

스케줄링 알고리즘
설명
Fair Scheduling여러 프로세스가 GPU 자원을 공평하게 나눠서 사용하도록 관리.
Priority-Based Scheduling더 중요한 그래픽 작업이나 연산 작업에 우선순위를 부여하여 처리.

실시간 스케줄러 (Real-Time Scheduler)

실시간 스케줄러는 실시간 시스템에서 반드시 정해진 시간 내에 완료되어야 하는 작업을 관리하는 역할을 합니다. 이러한 시스템에서는 선점형 스케줄링 방식이 주로 사용되며, 이는 데드라인이 중요한 작업다른 작업을 중단하고 CPU 자원을 우선적으로 사용할 수 있도록 하기 위함입니다. 이를 통해 실시간 시스템의 정확성과 신뢰성을 보장합니다.

선점형 스케줄링 알고리즘

스케줄링 알고리즘
설명
Rate Monotonic Scheduling (RMS)주기적 작업의 우선순위를 주기의 역수에 비례해 결정하는 알고리즘.
Earliest Deadline First (EDF)데드라인이 가장 임박한 작업을 우선 처리.

가상 머신 스케줄러 (Virtual Machine Scheduler)

가상 머신 스케줄러는 가상화 환경에서 여러 가상 머신(VM)이 호스트 시스템의 자원을 효율적으로 사용할 수 있도록 관리하는 역할을 합니다. 주로 선점형 스케줄링 방식을 사용하여, 우선순위가 높은 VM이 자원을 먼저 사용할 수 있도록 조정합니다. 이를 통해 여러 VM 간 자원 분배를 최적화하고, 시스템의 성능과 안정성을 유지합니다.

선점형 스케줄링 알고리즘

스케줄링 알고리즘
설명
Credit-Based Scheduling각 VM에 일정한 CPU 크레딧을 부여하고, 이 크레딧에 따라 자원을 사용.
Fair Sharing Scheduling가상 머신들 간에 자원을 공평하게 나누어 사용할 수 있도록 관리.

https://honey-dev.com/라즈베리파이-vs-오렌지파이-비교/

Final Thoughts

이번 포스팅에서는 스케줄링 알고리즘의 두 가지 방식인 선점형비선점형 스케줄링에 대해 알아보았습니다. 선점형 스케줄링은 프로세스, 네트워크, GPU, 실시간 시스템, 배터리, 가상 머신 스케줄러 등에서 주로 사용되며, 우선순위가 높은 작업이 현재 작업을 중단시키고 자원을 사용할 수 있도록 하는 방식입니다. 반면에, 비선점형 스케줄링은 디스크, 메모리, I/O 스케줄링에서 사용되며, 작업이 끝날 때까지 자원을 유지하는 특징을 가지고 있습니다. 두 스케줄링 방식은 자원의 특성과 목적에 따라 선택되어 운영체제의 성능을 최적화하는 데 기여합니다.

이처럼 운영체제의 스케줄링 알고리즘은 시스템 자원의 효율적인 관리를 위해 매우 중요한 역할을 합니다. 선점형비선점형 스케줄링 방식은 각각의 자원 특성에 맞춰 적용되며, 최적의 성능을 제공하기 위해 필수적입니다. 이번 포스팅을 통해 두 스케줄링 방식의 차이와 그 적용 예시를 이해하는 데 도움이 되었기를 바랍니다

Leave a Comment