250x250
기리도
기리도의 개발새발 개발 일지
기리도
전체 방문자
오늘
어제
  • 분류 전체보기 (44)
    • Unity (6)
      • 모듈식 프로그래밍 (1)
    • C# (10)
    • 자료구조,알고리즘 (2)
    • 운영체제 (10)
      • 공룡책 (3)
      • 그림으로 쉽게 배우는 운영체제(인프런 강의) (7)
    • 리팩토링 (1)
    • 네트워크 (13)
      • 네트워크 장비 (13)
    • C, C++ 문법 (1)
      • 기타 (0)
      • C (1)
      • C++ (0)
    • 디자인 패턴 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 게임개발
  • 브릿지
  • 개발공부
  • 알고리즘
  • 탄환
  • 네트워크
  • 유니티
  • 네트워킹
  • 길찾기
  • 스위치
  • 인프런
  • C#
  • 네트워크 게임
  • 프로그래밍
  • 통신
  • 공부
  • Unity
  • 운영체제
  • OS
  • 개발

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
기리도

기리도의 개발새발 개발 일지

운영체제/그림으로 쉽게 배우는 운영체제(인프런 강의)

CPU 스케줄링

2022. 3. 25. 18:00
728x90

https://inf.run/bXfg

 

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

이 강의를 통해 모든 개발자들이 필수로 알아야하는 운영체제의 원리를 알 수 있습니다., - 강의 소개 | 인프런...

www.inflearn.com

본 포스팅은 위 링크의 강의를 요약/정리한 것으로, 지식의 공유보다는 개인적으로 공부하고 복습하기 위해 기록한 것입니다.

 

CPU스케줄링 개요

 

CPU 스케줄링

🔗운영체제가 프로세스에 CPU를 할당하고 해제하는 것

🔗스케줄러(운영체제)가 고려하는 것

  • 어떤 프로세스에 CPU 리소스를 줘야 하는가?
  • 프로세스가 얼마나 오래 CPU를 사용해야 하는가?

🔗CPU Burst: CPU를 할당받아 실행하는 것

🔗I/O Burst: 입출력 작업


다중 큐

 

다중큐

🔗프로세스의 상태 중 준비와 대기는 큐(Queue) 자료구조로 관리된다.

🔗프로세스가 실행 상태에서 준비 상태로 갈 때 운영체제는 해당 프로세스 PCB를 우선 순위에 따라 적합한 준비 큐에 넣는다.

🔗CPU 스케줄러는 준비 상태의 다중 큐에 들어 있는 프로세스 중에 적당한 프로세스를 선택해서 실행 상태로 전환한다.

🔗프로세스가 실행 상태에서 대기 상태로 오게 되면 해당 프로세스의 PCB가 I/O 작업 종류에 따라 분류된 큐에 들어간다.


스케줄링 목표

 

스케줄링 목표

🔗CPU 사용률을 높이거나 I/O 디바이스의 사용률을 높인다.(리소스 사용률 증가)

🔗스케줄링을 하는 계산이 너무 복잡하거나 컨텍스트 스위칭을 자주 하면 오버헤드가 발생한다. 스케줄러는 오버헤드를 최소한으로 줄여야 한다.(오버헤드 최소화)

🔗모든 프로세스에 CPU를 공평하게 할당해야 한다.(공평성)

  • 공평성의 의미는 시스템에 따라 달라진다. 예를 들어, 자율주행 자동차에서는 안전과 관련된 프로세스가 가장 중요하다.

🔗같은 시간 내에 더 많은 작업을 처리해야 한다.(처리량)

🔗작업을 요청하고 실행하기까지의 대기 시간이 짧아야 한다.

🔗응답 시간이 짧아야 한다.

🔗모든 목표를 최고 수준으로 달성하기는 어렵다. 목표간에 상반되는 상황이 있기 때문이다. 따라서 사용 환경을 고려해 목표를 다르게 설정한다.

  • ex) 터치스크린은 응답시간을 줄이는 데에 초점을 맞추고 과학 계산은 처리량이 높이는 데에 초점을 맞춘다.

CPU 스케줄링 알고리즘

 

FIFO

🔗First In First Out

🔗스케줄링 큐에 들어온 순서대로 CPU를 할당받는다. 먼저 들어온 프로세스가 완전히 끝나야만 다음 프로세스를 실행할 수 있다.

🔗단순하고 직관적이지만 CPU 사용률이 떨어지고 평균 대기 시간이 길다. 때문에 현대 운영체제에서는 잘 쓰이지 않고 일괄처리시스템에 쓰인다.

 

SJF

🔗Shortest Job First

🔗처리 시간이 짧은 작업 먼저 처리한다. 이론적으로 FIFO 방식보다 성능이 좋음.

🔗문제점

  • 어떤 프로세스가 얼마나 실행될지 모른다.(ex 사용자가 언제 유튜브를 종료할지 알 수 없다)
  • Burst Time이 긴 프로세스는 아주 오랫동안 실행되지 않을 수도 있다.

 

RR

🔗Round Robin

🔗프로세스가 CPU를 사용하는 시간에 제한을 둬서 일정 시간이 지나면 강제로 다른 프로세스가 CPU를 사용하게 하는 알고리즘. CPU 할당을 뺏긴 프로세스는 큐의 가장 뒷부분으로 밀려나서 다시 차례가 오기를 기다린다.

  • 프로세스가 할당받는 일정 시간을 타임 슬라이스 혹은 타임 퀀텀이라고 부른다.

🔗일반적으로 RR 알고리즘은 FIFO 알고리즘보다 평균 대기 시간이 짧다.

🔗RR 알고리즘이 FIFO 알고리즘보다 비효율적인 경우

  • 타임 슬라이스가 너무 큰 경우
    • 타임 슬라이스가 너무 크면 FIFO 알고리즘과 평균 대기 시간이 비슷해진다. 평균 대기 시간이 비슷하다면 컨텍스트 스위칭을 처리해야 하는 RR 알고리즘이 FIFO 알고리즘보다 비효율적이다.
  • 타임 슬라이스가 너무 작은 경우
    • 타임 슬라이스가 너무 작으면 컨텍스트 스위칭이 더 자주 일어나고, 컨텍스트 스위칭 처리량이 프로세스의 처리량보다 더 커져서 비효율적이다.(오버헤드가 커짐)

🔗최적의 타임 슬라이스 값은 여러 프로세스가 버벅이지 않고 동시에 실행되는 것처럼 느껴지면서 오버헤드가 작은 값이다.

 

MIFQ

🔗Multi Level Feedback Queue

🔗RR의 단점을 개선한 알고리즘으로 오늘날 운영체제에서 가장 많이 쓰인다.

🔗기본적으로는 크기가 작은 타임 슬라이스를 선택해 CPU 사용률과 I/O 사용률을 높이지만 I/O Bound 프로세스보다 CPU Bound 프로세스에 더 큰 타임 슬라이스를 부여한다.

  • CPU Bound 프로세스: CPU Burst가 많은 프로세스
  • I/O Bound 프로세스: I/O Burst가 많은 프로세스
  • 운영체제는 프로세스의 CPU 사용량을 보고 프로세스가 CPU Bound인지 I/O Bound인지 판단한다.(ex 타임 슬라이스를 초과해 CPU 사용권을 뺏긴다면 CPU Bound일 확률이 높음)

🔗알고리즘

  • 우선순위 큐를 여러 개 생성한 뒤 우선순위가 높을수록 작은 타임 슬라이스를 부여한다.
  • 프로세스가 타임 슬라이스를 초과해 CPU 사용권을 뺏기면 기존에 있던 큐보다 우선순위가 더 낮은 큐로 이동한다.
  • 다음 실행에서도 타임 슬라이스를 초과해 CPU 사용권을 뺏기면 또 우선순위가 더 낮은 큐로 이동한다.
  • 이렇게 반복하다 보면 프로세스가 점점 더 많은 타임 슬라이스를 할당받기 때문에 FIFO처럼 연속적으로 작업을 마칠 수 있게 된다.
728x90
저작자표시 (새창열림)

'운영체제 > 그림으로 쉽게 배우는 운영체제(인프런 강의)' 카테고리의 다른 글

메모리 종류  (0) 2022.03.29
데드락  (0) 2022.03.29
프로세스 동기화  (0) 2022.03.28
프로세스와 쓰레드  (0) 2022.03.24
운영체제 들어가기  (0) 2022.03.21
    '운영체제/그림으로 쉽게 배우는 운영체제(인프런 강의)' 카테고리의 다른 글
    • 데드락
    • 프로세스 동기화
    • 프로세스와 쓰레드
    • 운영체제 들어가기
    기리도
    기리도
    공부한 내용을 정리해서 올리는 블로그입니다.

    티스토리툴바