2-3. 선점형 vs 비선점형 스케줄링

1. 선점형(Preemptive) 스케줄링 vs 비선점형(Non-preemptive) 스케줄링: 근본적인 차이

운영체제에서 프로세스 스케줄링은 CPU 자원을 효율적으로 관리하기 위한 핵심 기능입니다. 여러 프로세스 중에서 어떤 프로세스에게 CPU를 할당하고, 언제 할당 해제할지를 결정하는 것이죠. 이 결정 방식에 따라 스케줄링은 크게 두 가지 유형으로 나뉩니다. 바로 선점형(Preemptive) 스케줄링비선점형(Non-preemptive) 스케줄링입니다.

두 방식의 가장 큰 차이점은 CPU 자원을 빼앗을 수 있는지 여부입니다. 비유하자면, 도서관에서 책을 빌리는 상황을 생각해 봅시다.

  • 비선점형 스케줄링: 한 사람이 책을 빌리면, 다 읽을 때까지 다른 사람은 기다려야 합니다. 책을 다 읽고 반납해야 다른 사람이 빌릴 수 있는 것이죠. 즉, 현재 CPU를 점유하고 있는 프로세스가 스스로 CPU를 반납할 때까지 기다려야 합니다.
  • 선점형 스케줄링: 책을 읽는 중에 시간이 초과되면, 사서가 책을 뺏어 다른 사람에게 빌려줄 수 있습니다. 즉, 운영체제가 특정 프로세스의 CPU 사용 시간을 제한하고, 필요에 따라 CPU를 강제로 회수하여 다른 프로세스에게 할당할 수 있습니다.

이러한 차이점은 각 스케줄링 방식의 성능, 반응성, 그리고 복잡성에 큰 영향을 미칩니다.

2. 비선점형 스케줄링 (Non-preemptive Scheduling)

비선점형 스케줄링은 현재 CPU를 점유하고 있는 프로세스가 스스로 CPU를 반납할 때까지 다른 프로세스는 기다려야 하는 방식입니다. 프로세스가 CPU를 반납하는 경우는 주로 다음과 같습니다.

  • 프로세스 종료: 프로세스가 자신의 작업을 모두 마치고 종료되는 경우입니다.
  • I/O 요청: 프로세스가 입출력 작업 (예: 디스크 읽기/쓰기, 네트워크 통신)을 요청하는 경우, 해당 작업이 완료될 때까지 CPU를 반납하고 대기 상태로 전환됩니다.
  • 자발적 양보: 프로세스가 스스로 CPU 사용을 포기하고 다른 프로세스에게 양보하는 경우입니다.

비선점형 스케줄링의 가장 큰 장점은 단순성입니다. 컨텍스트 스위칭(Context Switching)이 발생하는 횟수가 적어 오버헤드가 적고, 구현이 간단합니다. 하지만, 응답 시간이 느리다는 단점이 있습니다. CPU를 오래 사용하는 프로세스가 실행되면 다른 프로세스들은 그 프로세스가 CPU를 반납할 때까지 하염없이 기다려야 하기 때문입니다. 이는 시스템의 반응성을 저하시키고, 긴급한 작업의 실행을 지연시킬 수 있습니다.

1) 비선점형 스케줄링의 예시

비선점형 스케줄링의 대표적인 예시로는 FCFS (First-Come, First-Served) 스케줄링이 있습니다. FCFS는 먼저 도착한 프로세스에게 CPU를 할당하는 방식입니다. 간단하지만, CPU 사용 시간이 긴 프로세스가 먼저 도착하면, 짧은 작업을 가진 프로세스들이 오랫동안 기다려야 하는 현상이 발생합니다.

2) 비선점형 스케줄링의 장점과 단점

  • 장점:

    • 단순성: 구현이 쉽고, 컨텍스트 스위칭 오버헤드가 적습니다.
    • 기아(Starvation) 방지: 특정 프로세스가 CPU를 영원히 얻지 못하는 현상(기아)을 방지할 수 있습니다. (CPU를 스스로 반납해야 하기 때문)
    • 단점:
    • 응답 시간 저하: CPU 사용 시간이 긴 프로세스 때문에 짧은 작업을 가진 프로세스들이 오래 기다려야 합니다.
    • 실시간 시스템 부적합: 실시간으로 응답해야 하는 시스템에서는 적합하지 않습니다.

3. 선점형 스케줄링 (Preemptive Scheduling)

선점형 스케줄링은 운영체제가 특정 프로세스의 CPU 사용을 강제로 중단하고, 다른 프로세스에게 CPU를 할당할 수 있는 방식입니다. 선점은 주로 다음과 같은 상황에서 발생합니다.

  • 타임 슬라이스(Time Slice) 만료: 각 프로세스에게 할당된 CPU 사용 시간(타임 슬라이스)이 만료되면, 운영체제가 CPU를 회수하고 다른 프로세스에게 할당합니다.
  • 우선순위가 높은 프로세스 도착: 현재 실행 중인 프로세스보다 우선순위가 높은 프로세스가 도착하면, 운영체제는 현재 프로세스를 중단하고 우선순위가 높은 프로세스에게 CPU를 할당합니다.
  • I/O 인터럽트 발생: 프로세스가 I/O 요청을 완료하고, I/O 인터럽트가 발생하면 운영체제는 해당 프로세스를 준비 완료 큐에 넣고, 다른 프로세스에게 CPU를 할당합니다.

선점형 스케줄링은 비선점형 스케줄링에 비해 응답 시간이 빠르다는 장점이 있습니다. 특히, 실시간 시스템이나 대화형 시스템에서 유용합니다. 하지만, 컨텍스트 스위칭 오버헤드가 발생하고, 구현이 복잡하다는 단점이 있습니다. 컨텍스트 스위칭은 CPU 레지스터의 값을 저장하고 복원하는 과정으로, 이 과정에서 시간과 자원이 소모됩니다.

1) 선점형 스케줄링의 예시

선점형 스케줄링의 대표적인 예시로는 Round Robin 스케줄링, Priority 스케줄링 등이 있습니다. Round Robin은 각 프로세스에게 동일한 타임 슬라이스를 할당하여 CPU를 공정하게 분배하는 방식입니다. Priority 스케줄링은 프로세스에 우선순위를 부여하여 우선순위가 높은 프로세스에게 CPU를 먼저 할당하는 방식입니다.

2) 선점형 스케줄링의 장점과 단점

  • 장점:

    • 빠른 응답 시간: 긴급한 작업이나 짧은 작업에 빠르게 응답할 수 있습니다.
    • 공정성 향상: Round Robin과 같은 스케줄링 알고리즘을 통해 CPU를 공정하게 분배할 수 있습니다.
    • 실시간 시스템 적합: 실시간 요구 사항을 충족하는 시스템에 적합합니다.
    • 단점:
    • 복잡성 증가: 컨텍스트 스위칭을 위한 오버헤드가 발생하고, 구현이 복잡합니다.
    • 기아(Starvation) 발생 가능성: 우선순위가 낮은 프로세스는 CPU를 얻지 못하는 기아 현상이 발생할 수 있습니다.
    • 컨텍스트 스위칭 오버헤드: 잦은 컨텍스트 스위칭으로 인해 전체적인 시스템 성능이 저하될 수 있습니다.

선점형 스케줄링의 동작 방식을 설명하는 부분

4. 선점형 vs 비선점형 스케줄링 비교

특징 비선점형 스케줄링 선점형 스케줄링
CPU 점유 프로세스가 자발적으로 반납할 때까지 운영체제가 강제로 회수 가능
컨텍스트 스위칭 적음 많음
응답 시간 느림 빠름
구현 복잡도 단순 복잡
오버헤드 적음 많음
장점 단순성, 기아 방지 빠른 응답 시간, 공정성, 실시간 시스템 적합
단점 응답 시간 저하, 실시간 시스템 부적합 복잡성, 기아 발생 가능성, 컨텍스트 스위칭 오버헤드
대표적인 알고리즘 FCFS Round Robin, Priority

위 표는 선점형과 비선점형 스케줄링의 주요 특징을 비교한 것입니다. 각 방식은 장단점이 뚜렷하므로, 시스템의 요구 사항에 맞는 스케줄링 방식을 선택해야 합니다.

5. 결론

선점형 스케줄링과 비선점형 스케줄링은 운영체제의 핵심 기능인 프로세스 스케줄링을 구현하는 두 가지 주요 방식입니다. 비선점형 스케줄링은 단순하지만, 응답 시간이 느리다는 단점이 있고, 선점형 스케줄링은 응답 시간이 빠르지만, 구현이 복잡하고 오버헤드가 발생한다는 단점이 있습니다.

어떤 스케줄링 방식을 선택할지는 시스템의 특성, 즉 응답 시간의 중요도, 실시간 요구 사항의 유무, 시스템의 복잡성 등을 고려하여 결정해야 합니다. 예를 들어, 데스크탑 운영체제나 서버 운영체제에서는 빠른 응답 시간을 위해 선점형 스케줄링을 주로 사용합니다. 반면, 일부 임베디드 시스템에서는 단순성과 안정성을 위해 비선점형 스케줄링을 선택할 수도 있습니다.

비슷한 글 추천

Comments (0)

No comments yet. Be the first to comment!