프로세스 스케줄링, 당신의 컴퓨터는 어떻게 일할까?

컴퓨터는 동시에 수많은 프로그램을 실행합니다. 하지만 CPU는 한 번에 하나의 작업만 처리할 수 있죠.

그렇다면 여러 프로그램을 마치 동시에 실행하는 것처럼 만드는 마법같은 기술은 무엇일까요?

 

그것은 바로 프로세스 스케줄링(Process Scheduling) 입니다.

 

이번에는 운영체제가 프로세스를 어떻게 스케줄링하는지, 어떠한 방식들이 있는지, 각 기법들의 장단점을 알아볼게요!


먼저, 프로세스 스케줄링이란?

프로세스 스케줄링은 운영체제가 CPU를 다양한 프로세스에 적절하게 할당하는 방법을 의미합니다. CPU 스케줄러가 이를 담당하며 효율적인 스케줄링을 통해 시스템의 성능을 극대화할 수 있습니다.


🌟 프로세스 스케줄링 이해하는 팁!

  • 스케줄링이 없다면 한 프로그램이 CPU를 독적하며 다른 프로그램이 실행되지 못하는 상황이 발생할 수 있어요
  • 적절한 스케줄링 기법을 선택하면 시스템의 응답속도와 처리량, 공정성이 개선돼요

프로세스 스케줄링의 종류

운영체제에서 사용하는 프로세스 스케줄링은 크게 3가지로 나눌 수 있습니다.

  • 장기 스케줄링 (Long-term)
    • 어떤 프로세스를 메모리에 올릴지 결정 (Job Scheduler)
  • 중기 스케줄링 (Medium-term)
    • 실행중인 프로세스를 일시 중단하거나 다시 실행 (Swapper)
  • 단기 스케줄링 (Short-term)
    • 어떤 프로세스가 CPU를 사용할지 결정 (CPU Scheduler)

🌟 스케줄링 종류 쉽게 이해하는 팁!

  • 장기 스케줄링 : "어떤 프로그램을 실행할까?"
  • 중기 스케줄링 : "잠시 대기하거나 다시 실행할까?"
  • 단기 스케줄링 : "지금 당장 CPU를 누가 사용할까?"

이렇게 운영체제는 단계별로 프로세스를 관리합니다 😄


프로세스 스케줄링 알고리즘

CPU 스케줄러가 프로세스를 효율적으로 배분하는데 사용되는 다양한 기법이 있습니다.

 

1️⃣ 선점형(Preemptive) 스케줄링

CPU를 사용하던 프로세스가 중간에 다른 프로세스에게 CPU를 양보해야하는 방식

(ex. 라운드 로빈) / 선점형 방식은 다중 사용자 환경에서 유용하지만, 문맥 전환(컨텍스트 스위칭) 비용이 발생할 수 있어요!

 

2️⃣ 비선점형 스케줄링

프로세스가 CPU를 할당받으면 끝날 때까지 실행되는 방식

(ex. FCFS) / 비선점형 방식은 처리 순서를 예측하기 쉽지만, 실행 시간이 긴 프로세스가 있으면 대기 시간이 길어질 수 있어요!

 

3️⃣ 대표적인 CPU 스케줄링 알고리즘

알고리즘 방식 특징
FCFS
(First Come, First Served)
비선점형 먼저 도착한 프로세스부터 실행
(줄 서기 방식)
SJF
(Shortest Job First)
비선점형 / 선점형 실행 시간이 짧은 프로세스부터 실행
Priority Scheduling 선점형 / 비선점형 우선순위가 높은 프로세스부터 실행
Round Robin
(RR)
선점형 프로세스마다
일정 시간(CPU 타임 슬라이스)를 할당
Multilevel Queue 혼합형 여러 개의 우선순위 큐를 사용하여
프로세스 그룹화

 

FCFS는 단순하지만 Convoy Effect(호위 효과) 문제로 인해 단점이 있고 SJF는 평균 대기 시간을 줄이지만, 실행 시간을 예측하기 어려워요. 라운드 로빈은 공정하지만, 타임 슬라이스가 너무 크면 FCFS와 비슷해지고 너무 작으면 문맥 전환 비용이 증가합니다.


그럼 어떤 스케줄링이 가장 좋을까?

이 질문에 대한 정답은 없습니다!

각 기법은 특정 상황에서 장점과 단점이 있기에 운영체제는 보통 여러가지 스케줄링 알고리즘을 조합하여 사용합니다.

 

빠른 반응 속도가 필요하다면? ➡️ 라운드 로빈(RR)

실행 시간 짧은 작업을 우선 처리해야한다면? ➡️ SJF

중요한 작업을 먼저 처리한다면? ➡️ Priority Scheduling

단순한 구조가 필요하다면? ➡️ FCFS

 

최신 운영체제들은 다단계 피드백 큐와 같은 하이브리드 기법을 사용하여 여러가지 알고리즘의 장점을 조합합니다! 😄


운영체제의 숨은 영웅, 프로세스 스케줄러

CPU 스케줄링은 우리가 사용하는 컴퓨터와 스마트폰에서 보이지 않게 동작하는 필수적인 요소입니다.

최적의 성능을 위해 다양한 기법들이 활용되며 운영체제의 성능을 결정짓는 중요한 요소 중 하나입니다.