스터디/운영체제

[인프런 CS 전공지식 스터디 3기_운영체제] 3. CPU스케줄링

왹져박사 2025. 3. 11. 17:49

CPU스케줄링 개요

필수장치인 CPU

 

프로그램 실행 → 메모리에 프로세스 생성 → 프로세스는 1개 이상의 쓰레드를 가짐

→ 프로세스는 CPU를 차지하기 위해 OS의 명령 기다림

OS가 모든 프로세스에게 CPU를 할당/해제 (CPU스케줄링)

 

스케줄러(OS)가 고려해야 할 사항

  • 어떤 프로세스에게 CPU 리소스를 줘야하는가?
  • 할당받은 프로세스는 얼마의 시간 동안 CPU를 사용해야 하는가?

→  컴퓨터의 성능에 매우 큰 영향. 

 

CPU를 할당받아 실행하는 작업: CPU Burst

입출력 작업: I/O Burst

 

다중큐

프로세스의 상태 중 준비상태와 대기상태는 자료구조 큐로 관리됨

 

프로세스의 준비상태 → OS가 해당 프로세스의 우선순위를 판단하여 PCB를 준비 큐에 넣음

→ CPU스케줄러에 의해 실행상태로 전환

 

프로세스가 I/O 요청 대기상태, 

I/O 작업 종류에 따라 분류된 큐에 들어가게 됨. 

 

CPU스케줄러는 위 큐들을 참조해 스케줄링함. 

 

스케줄링 목표

1. 리소스 사용률

CPU 사용률

I/O디바이스 사용률 

 

2. 오버헤드 최소화

스케줄링을 위한 계산, 컨텍스트 스위칭 최소화

 

3. 공평성

프로세스의 공평한 할당

공평의 의미는 시스템마다 다를 수 있음

 

4. 처리량

같은 시간 내에 더 많은 처리를 할 수 있는 방법

 

5. 대기시간

작업 요청 후 작업까지 대기 시간이 짧은 것

 

6. 응답시간

사용자의 요청에 빠른 응답

 

사용자가 사용하는 시스템에 따라 위 목표를 다르게 설정

 

 

↓CPU 스케줄링 알고리즘

FIFO

First In First Out

스케줄링 큐에 따라 먼저 들어온 프로세스가 완전히 끝나야 다음 프로세스 실행 

 

장점

 - 단순, 직관적

단점

 - 비효율일 수 있음

 - I/O작업을 대기하는 동안 CPU 사용률 떨어짐  

 

평균대기시간(스케줄링의 성능 평가 기준)

프로세스 모두가 실행되기까지 대기시간의 평균

 

FIFO는 프로세스의 BurstTime에 따라 성능의 차이가 큼

현대의 운영체제에서 잘 쓰이지 않음, 일괄처리시스템에 사용됨

 

 

SJF

Shortest Job First

BurstTime이 짧은 프로세스 먼저 실행

이론적으로 FIFO보다 성능 좋음

 

문제점

어떤 프로세스가 BurstTime이 짧은지 알기 어려움

BurstTime이 긴 프로세스에게 불공평할 수 있음

 

 사용 X

 

 

RR

Round Robin

FIFO알고리즘에서 단점을 해결

 

일정 시간(타임 슬라이스/타임 퀀텀)이 지나면 강제로 다른 프로세스에 CPU 할당

 

평균대기시간

FIFO와 비교하여 평균 대기시간이 비슷하다면, RR이 더 비효율적인 방식

→ 컨텍스트 스위칭 시간이 포함되기 때문

 

RR은 타임 슬라이스 값에 따라 성능이 많이 달라짐

값이 큰 경우 → FIFO알고리즘이 되어 버림

값이 작은 경우 → 오버헤드가 너무 커짐

 

최적의 타임 슬라이스 값

사용자 입장에서 동시에 실행된다고 느껴지며

오버헤드가 너무 크지 않은 값

 

 

MLFQ

Multi Level Feedback Queue

오늘날에 가장 일반적으로 쓰임

RR의 업그레이드 버전

 

CPU 사용률과 I/O 사용률이 좋은 작은 크기의 타임 슬라이스를 기본으로

CPU Boundery Process에는 큰 크기의 타임 슬라이스

 

 Boundery Process를 구분하는 방법?

CPU를 사용하는 프로세스가 스스로 CPU를 반납하면 I/O Boundery Process일 확률 높음

반대로, 타임 슬라이스를 오버해서 CPU를 스케줄러에 의해 강제로 뺏기면 CPU Boundery Process일 확률 높음

 

우선순위 큐를 여러 개 준비 

우선순위가 높을수록 타임 슬라이스 크기 작음

CPU를 뺏기면, 원래의 더 낮은 우선순위큐로 이동하는 방식

 

 

https://www.inflearn.com/course/%EB%B9%84%EC%A0%84%EA%B3%B5%EC%9E%90-%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C/dashboard

 

그림으로 쉽게 배우는 운영체제 강의 | 감자 - 인프런

감자 | , 개발자의 필수 지식 운영체제를 배워서뿌리 깊은 나무가 되어 봐요 🌳 강의 주제 📖 [임베딩 영상] 주위에 기본기가 부족한 개발자가 어떤 것을 학습할지 몰라서 방황하는 것을 보면

www.inflearn.com