cpu 스케줄링

낚시하는 곰·2025년 3월 15일

krafton jungle

목록 보기
14/52

cpu 스케줄링

cpu 스케줄링이란?

CPU 스케줄링은 여러 프로세스(또는 스레드) 중에서 CPU를 어떤 프로세스에게 할당할지 결정하는 과정입니다.

왜 스케줄링이 필요할까? cpu는 한 번에 하나의 프로세스만 실행할 수 있기 때문이다. 그렇다면 한 번에 여러 개의 프로세스를 요청 받았을 때 어떻게 처리해줘야 할까?


CPU 스케줄링이 발생하는 시점

  • 비선점형 스케줄링 (Non-Preemptive)

    CPU를 한 번 할당받으면, 프로세스가 끝날 때까지 점유.
    프로세스가 자발적으로 CPU를 반납해야 함.

🔹 비선점형 스케줄링이 발생하는 경우
1️⃣ 프로세스가 종료될 때
2️⃣ 입출력(I/O) 작업이 필요할 때 (CPU 사용 중단)

  • 선점형 스케줄링 (Preemptive)
    • 운영체제가 강제로 CPU를 빼앗고 다른 프로세스에게 할당
    • 우선순위가 높은 프로세스가 등장하면 현재 프로세스를 중단하고 실행 가능

🔹 선점형 스케줄링이 발생하는 경우
1️⃣ 더 높은 우선순위를 가진 프로세스가 도착했을 때
2️⃣ CPU 할당 시간이 초과되었을 때 (타임 슬라이스 만료)
3️⃣ 입출력(I/O) 작업이 끝나고 준비 상태로 돌아온 프로세스가 있을 때


cpu 스케줄링 알고리즘

  • FCFS
    먼저 도착한 프로세스를 먼저 실행하는 방식(비선점형)
프로세스도착 시간실행 시간
P105
P213
P322

실행 순서:

P1 → P2 → P3

단점: 실행 시간이 긴 프로세스가 먼저 오면 전체 실행이 지연됨

  • SJF (Shortest Job First)
    실행 시간이 가장 짧은 프로세스를 먼저 실행(비선점 & 선점형)
프로세스도착 시간실행 시간
P105
P213
P322

실행 순서:

P3 → P2 → P1

장점: 평균 대기 시간이 짧아짐
단점: 긴 작업이 계속 밀릴 수도 있음

  • RR (Round Robin)
    각 프로세스에 동일한 CPU 시간(타임 슬라이스)을 할당
    타임 슬라이스가 지나면 다음 프로세스로 교체 (선점형 방식)
프로세스도착 시간실행 시간
P105
P213
P322

실행 순서 (타임 슬라이스 = 2ms)

P1(2) → P2(2) → P3(2) → P1(2) → P2(1) → P1(1)

장점: 모든 프로세스가 공평하게 실행됨
단점: 타임 슬라이스 크기에 따라 성능이 달라짐

  • Priority Scheduling (우선순위 스케줄링)
    우선순위가 높은 프로세스를 먼저 실행

장점: 중요한 작업을 먼저 처리 가능
단점: 낮은 우선순위 작업이 계속 밀리는 상황 발생


cpu 스케줄링 동작 과정

프로세서의 상태 변화

🔵 New → 🔄 Ready → 🟢 Running → 🔄 Waiting → 🏁 Terminated

1️⃣ New (새로운 프로세스)

새로운 프로세스가 생성됨
운영체제는 이 프로세스를 Ready 상태로 이동시킴

2️⃣ Ready (준비 상태)

CPU에서 실행되기를 기다리는 상태
여러 개의 프로세스가 Ready Queue(준비 큐) 에 대기

3️⃣ Running (실행 상태)

CPU에서 프로세스가 실행 중인 상태
단 하나의 프로세스만 실행 가능

4️⃣ Waiting (대기 상태)

입출력(I/O) 작업을 기다리는 상태
예: 디스크 읽기, 네트워크 요청

5️⃣ Terminated (종료 상태)

프로세스 실행이 완료됨

좀 더 살펴보면

✅ (1) 프로세스 생성 및 Ready Queue(준비 큐) 대기
새로운 프로세스가 생성되면 Ready Queue(준비 큐) 에 추가됨.
Ready Queue에는 실행 대기 중인 프로세스들이 정렬되어 있음.

✅ (2) CPU가 실행할 프로세스 선택
CPU 스케줄러(Scheduler) 가 Ready Queue에서 프로세스를 선택
스케줄링 알고리즘(예: FCFS, SJF, RR, Priority)에 따라 선택 방식이 달라짐
선택된 프로세스는 CPU에서 실행됨 (Running 상태로 변경)

✅ (3) 프로세스 실행 및 종료 처리
CPU에서 프로세스를 실행함
실행 중인 프로세스는 다음 조건에 따라 다른 상태로 전환됨:
완료되면 → "Terminated(종료)" 상태로 변경
I/O 요청이 있으면 → "Waiting(대기)" 상태로 변경
타임 슬라이스가 만료되면 → 다시 Ready Queue로 이동

✅ (4) 문맥 교환 (Context Switching)
CPU가 현재 실행 중인 프로세스를 중단하고 새로운 프로세스를 실행해야 할 경우 Context Switching(문맥 교환)이 발생

profile
취업 준비생 낚곰입니다!! 반갑습니다!!

0개의 댓글