[운영체제] CPU 스케줄링

이정연·2022년 12월 7일
0

ComputerScience

목록 보기
3/13

Why?

  • CPU burst: CPU가 instruction을 수행하는 과정
  • I/O burst: I/O가 instruction을 수행하는 과정

  • I/O bound job의 시간 << CPU bound job의 시간
  • I/O 👉🏻 사용자와 interactive
  • CPU bound job의 시간이 필요 이상으로 커진다면 ??!
  • 사용자는 답답하다 😒
  • 고로, CPU와 I/O 사이의 적절한 밸런싱이 필요한데 이를 위해 CPU 스케줄링이 필요

When?

  1. Running 👉🏻 Blocked (I/O interrupt)

  2. Running 👉🏻 Ready (timer interrupt)

  3. Blocked 👉🏻 Ready (I/O Finish)

    이 경우에는 두 가지 상황이 발생 가능
    3-1. I/O 완료된 프로세스가 우선순위가 높아서 바로 CPU를 넘겨주어야 할 경우
    3-2. 그렇지 않은 경우에는 일반적으로 기존에 할당하고 있던 프로세스에게 다시 CPU를 넘겨줌

  4. Terminated

용어

  • nonpreemptive: CPU 자진 반납 👉🏻 1번 4번
  • preemptive: CPU 강제 반납 👉🏻 2번 3-1번

선택과 넘김

CPU Scheduler

ready 상태의 프로세스 중에서 CPU를 할당할 프로세스를 선택한다.

Dispatcher

CPU Scheduler에게 선택된 프로세스에게 CPU를 넘긴다.

💡 context switch!!!

... 추가 예정 ...

profile
0x68656C6C6F21

0개의 댓글