본문 바로가기
CS/OS

[OS] CPU Scheduling (1차정리)

by 배준오 2023. 3. 17.
반응형

프로그램이 실행이 되면 어떤 프로그램이든 간에

CPU burst와 I/O burst가 번갈아가며 실행이 됩니다..!

즉 프로그램의 실행은 CPU burst와 I/O burst의 연속입니다

CPU burst, I/O burst가 뭐에요?

CPU burst = > CPU명령을 실행하는 것

I/O burst = > I/O를 요청한다음 기다리는

[CPU-burst Time의 분포]

I/O bound job : CPU를 짧게 쓰고 I/O작업을 하는 것 (우선적으로 cpu줘보자 효율성!)

CPU bound job : CPU만 오래 쓰는 작업

결론 : 여러 종류의 job(=process)이 섞여 있기 때문에 CPU 스케듈링이 필요

CPU Schduler & Dispatcher

  • CPU Scheduler(운영체제 안에서 스케듈링하는 코드가 있음,CPU를 누구에게 줄지 결정)
    • Ready 상태의 프로세스 중에서 이번에 CPU를 줄 프로세스를 고른다.
  • Dispatcher(CPU를 넘겨주는 역할)
    • CPU의 제어권을 CPU scheduler에 의해 선택된 프로세스에게 넘긴다.
    • 이 과정을 context switch(문맥 교환)라고 한다.
  • CPU 스케듈링이 필요한 경우는 프로세스에게 다음과 같은 상태 변화가 있는 경우이다.
    • 1. Running -> Blocked (예 : I/O 요청하는 시스템 콜)
    • 2. Running -> Ready (예 : 할당시간만료로 timer interrupt)
    • 3. Blocked -> Ready (예 : I/O 완료 후 인터럽트)
    • 4. Terminate

1 ~ 4에서의 스케쥴링은 nonpreemptive (=강제로 빼앗지 않고 자진 반납)

All other scheduling is preemptive (=강제로 빼앗음)

반응형

'CS > OS' 카테고리의 다른 글

[OS] Deadlock  (0) 2023.04.15
[OS] CPU Scheduling  (0) 2023.03.18
[OS] 프로세스 생성과 종료  (0) 2023.03.17
[OS] 프로세스 입출력 / Thread  (0) 2023.03.17
[OS] 프로세스의 상태 (1차정리)  (1) 2023.03.17