본문 바로가기

운영체제

2. CPU 스케줄링

인프런의 [그림으로 쉽게 배우는 운영체제] 강의를 듣고 정리한 내용이다.

간단하게 들은 내용을 정리한 것으로, 더 자세한 내용을 원한다면 위 강의를 구매하는 것을 추천한다.

짧은 강의 형태로 단시간에 운영체제를 배우고 싶은 사람, 쉽게 운영체제를 배우고 싶은 사람에게 적합하다고 생각한다.

 

 

✏️ CPU 스케줄링 개요

  • 운영체제가 모든 프로세스에게 CPU를 할당/해제하는 일
  • 어떤 프로세스들에게 할당해야 하는가? 또 얼마나 할당해야 하는가?
  • 프로세스를 담고 있는 PCB가 준비상태의 다중 큐를 참조
    • 다중 큐는 큐(queue)라는 자료구조로 관리 

 

✏️ 스케줄링 목표

  1. 리소스 사용률 - CPU 사용률이나 I/O 사용률 높이기
  2. 오버헤드 최소화
  3. 공평성 - 모든 프로세스에게 공평하게 CPU가 할당되어야 함. 우선순위는 시스템에 따라 달라질 수 있음.
  4. 처리량 - 같은 시간 내 더 많은 처리를 하는 것이 목표
  5. 대기시간 - 작업을 요청하고 실제 작업이 이루어지기 전까지 대기하는 시간이 짧은 것을 목표로 함
  6. 응답 시간 - 사용자의 요청이 얼마나 빨리 처리되는지

📌 처리량과 응답 시간의 목표를 같이 달성할 수 없음. 시스템에 따라 목표를 다르게 설정.

 

  • CPU burst time - CPU가 일을 수행하는 시간
  • I/O burst time - I/O 요청에 대한 응답을 기다리는 시간

 

✏️ FIFO

  • First-In First-Out
  • 일괄처리 시스템에 적절
  • 먼저 들어온 프로세스가 완전히 끝나야 다음 프로세스 실행 가능 (ex. 마트 계산대)
  • 단순하고 직관적
  • Burst Time이 짧은 게 먼저 실행되면, 평균 대기 시간이 짧아짐
  • Burst Time이 긴 게 먼저 실행되면, 평균 대기 시간이 길어짐
  • 프로세스의 burst time에 따라 성능의 차이가 심하게 남 → 현대 운영체제에서 잘 쓰이지 않음

 

 

 

✏️ SJF

  • Burst Time이 짧은 프로세스가 먼저 실행됨 → Burst Time이 짧은 프로세스가 계속 들어오면, Burst Time이 긴 프로세스는 계속 기다려야 함(알고리즘 구현 실패)
  • 프로세스의 종료 시간 예측 힘듦
  • FIFO보다 성능이 더 좋음

 

 

✏️ RR

  • Round Robin
  • 시분할 시스템에 적절
  • FIFO 알고리즘의 단점 해결 - 할당된 시간을 정해두고, 그 시간이 지나면 강제로 다른 프로세스에게 일정 시간만큼 할당
  • 타임 슬라이스 / 타임 퀸텀 - 프로세스에게 할당하는 일정 시간
  • 오버헤드가 너무 크지 않는 최적의 타임 슬라이스를 찾는 것(windows-20ms, Unix-100ms)
    • 오버헤드 - 어떤 처리를 하기 위해 들어가는 간접적인 처리 시간/메모리 등을 말함

 

 

✏️ MLFQ

  • Multi-Level Feedback Queue
  • 오늘날 운영체제에서 가장 일반적으로 쓰이는 CPU 스케줄링
  • RR의 상위 호환
  • CPU Bound Process - CPU 작업만, CPU의 사용률과 처리량이 제일 중요.
  • I/O Bound Process - 1초 CPU, 10초 I/O. 응답 속도.
  • 우선순위가 낮을수록 타임 슬라이스 크기가 커짐

 

'운영체제' 카테고리의 다른 글

4. 데드락  (0) 2022.05.14
3. 프로세스 동기화  (0) 2022.05.14
1. 프로세스와 쓰레드  (0) 2022.05.06
0. 운영체제 들어가기  (0) 2022.05.06
23. Disk Management & Scheduling 1, 2  (3) 2022.04.23