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를 뺏기면, 원래의 더 낮은 우선순위큐로 이동하는 방식
그림으로 쉽게 배우는 운영체제 강의 | 감자 - 인프런
감자 | , 개발자의 필수 지식 운영체제를 배워서뿌리 깊은 나무가 되어 봐요 🌳 강의 주제 📖 [임베딩 영상] 주위에 기본기가 부족한 개발자가 어떤 것을 학습할지 몰라서 방황하는 것을 보면
www.inflearn.com
'스터디 > 운영체제' 카테고리의 다른 글
[인프런 CS 전공지식 스터디 3기_운영체제] 5. 데드락 (0) | 2025.03.16 |
---|---|
[인프런 CS 전공지식 스터디 3기_운영체제] 4. 프로세스 동기화 (0) | 2025.03.16 |
[스터디] 인프런 CS 전공지식 스터디 3기_운영체제(1주차) (0) | 2025.03.09 |