그림으로 쉽게 배우는 운영체제 - 섹션2 CPU 스케줄링

이지섭·2023년 6월 27일
0

섹션2 CPU 스케줄링

  • CPU 스케줄링이란?
    • 프로세스들에게 CPU를 할당/해제하는 순서
    • 고려 사항
      • 어떤 프로세스에게 CPU 사용권을 줘야 하는가?
      • CPU를 할당받은 프로세스가 얼마나 CPU를 사용해야 하는가?
    • CPU burst : CPU를 할당받아 실행하는 것
    • I/O burst : 입출력 작업
  • 프로세스 준비(실행대기)와 대기(I/O대기) 상태는 큐로 관리된다.
    • 우선순위 다중 큐
    • I/O별 큐
  • CPU 스케줄링 목표
    • 리소스 사용률 향상
    • 오버헤드 최소화 - 컨텍스트 스위칭 줄이기
    • 공평성
    • 처리량 향상
    • 대기시간 감소 - 작업요청 후 실제 작업까지 대기하는 시간
    • 응답시간 감소 - 사용자 요청에 얼마나 빨리 반응하는지
    • 서로 상반된 목표들이기 때문에 모두 다 준수하기는 힘들다
  • FIFO
    • First In First Out, 구현이 간단
    • 한 프로세스가 완전히 끝나야 다음 프로세스가 시작되기 때문에 비효율적
    • I/O 작업이 끝날 때 까지 CPU가 쉬어야 함
    • 현대 운영체제(시분할)에선 잘 쓰이지 않고, 일괄처리 시스템 등에서 사용된다
  • SJF
    • Shortest Job First, 이론적으로 구현
      • 어떤 프로세스가 얼만큼 실행된 지 예측할 수 없다.
      • Burst Time이 긴 프로세스는 계속 뒤로 밀려서 영원히 실행되지 않을 수 있다.
  • RR
    • Round Robin, FIFO 알고리즘의 단점을 해결
    • 한 프로세스에게 일정 시간만큼(Time Slice, Time Quantum) CPU를 할당하고,
      시간이 다 되면 큐에서 다음 프로세스를 실행
    • 타임 슬라이스 값에 따라 성능이 달라진다.
      • 프로세스가 동시 실행되는 것 처럼 느껴지면서, 오버헤드가 크지 않은 값
      • 20~100ms
    • FIFO와 비교하여, 평균 대기 시간이 비슷하다면 RR이 더 비효율적일 수도 있다.
      • 컨텐스트 스위칭 시간이 더 추가되기 떄문
  • MLFQ
    • Multi Level Feedback Queue, 가장 일반적으로 쓰임. RR 상위호환
    • CPU Bound Process - 처리량이 중요
    • I/O Bound Process - 응답속도가 중요
    • 타임 슬라이스가 크면
      • CPU Bound Process에는 좋지만, I/O Bound Process에 대기시간 발생하여 손해
    • 타임 슬라이스가 작으면
      • 여전히 CPU 사용률은 좋지만 I/O Bound Process 대기시간 감소
      • 하지만 컨텍스트 스위칭이 CPU Bound Process에서 여러번 일어나 손해
    • 어떻게 하면 둘 다 손해를 덜 볼까…
      • 기본적으로는 타임슬라이스를 작게,
        하지만 CPU Bound Process에게는 타임슬라이스를 크게 준다
      • 프로세스가 실행하가 타임슬라이스 안에 스스로 반납하면 CPU 사용량이 적은 것
        • I/O Bound Process일 확률이 높다
      • 타임슬라이스를 넘겨서 CPU 스케줄러에 의해 강제로 CPU를 빼앗기면
        • CPU Bound Process일 확률이 높다
      • 이것을 기준으로 우선순위 큐를 여러개 놓고 관리
        • 우선순위가 높을 수록 타임슬라이스가 작아지고
          우선순위가 낮을 수록 타임슬라이스가 커진다
        • 강제로 CPU를 뺏긴다면 우선순위가 낮은 큐로 이동
          • 다음에 실행될 떄는 타임슬라이스가 조금 더 커지게 된다

출처 : 인프런, 그림으로 쉽게 배우는 운영체제

profile
Stop thinking. Just do it.

0개의 댓글

관련 채용 정보