포시코딩

[운영체제] 4. CPU Scheduling (1) 본문

CS (Computer Science)

[운영체제] 4. CPU Scheduling (1)

포시 2023. 4. 28. 23:43
728x90

키워드

cpu scheduling, cpu burst, i/o burst, i/o-bound process, cpu-bound process, cpu scheduler, dispatcher, nonpreemptive, preemptive

 

CPU Scheduling

  • CPU burst: CPU만 연속적으로 쓰는 단계
  • I/O burst: I/O만 연속적으로 쓰는 단계

어떤 프로그램이든 프로그램이 실행된다는 것은 CPU burst와 I/O burst를 반복하며 실행된다.

 

컴퓨터 안에는 똑같은 종류의 프로그램이 있는게 아니라 아래의 종류가 섞여있음

  • CPU를 짧게 쓰고 중간에 I/O 작업이 들어오는 작업을 I/O bound job이라 함
  • CPU를 굉장히 오랫동안 쓰는 작업을 CPU bound job이라 함

이렇게 여러 종류의 job(=process)이 섞여 있기 때문에 CPU 스케줄링이 필요

  • 사실 CPU bound job은 문제가 되지 않음
  • I/O bound job은 주로 interaction한 job이다 보니
    즉, CPU가 너무 오랫동안 잡고 있으면 사람이 답답해지기 때문에
    CPU를 공평하게 주는걸 넘어 사람하고 interaction한 job한테
    CPU를 더 우선적으로 주는게 필요하다는게 CPU 스케줄링의 필요성이자 중요한 역할 중 하나

 

프로세스의 특성 분류

I/O-bound process

  • I/O-bound job이라고도 함
  • CPU를 잡고 계산하는 시간보다 I/O에 많은 시간이 필요한 job
  • (many short CPU bursts)

CPU-bound process

  • CPU-bound job이라고도 함
  • 계산 위주의 job
  • (few very long CPU bursts)

 

CPU Scheduler & Dispatcher

CPU Scheduler

  • Ready 상태의 프로세스 중에서 이번에 CPU를 줄 프로세스를 고르는 역할
    즉, 결정하는 역할
  • 운영체제 안에서 CPU 스케줄링을 하는 코드를 CPU scheduler라고 부름

Dispatcher

  • CPU의 제어권을 CPU scheduler에 의해 선택된 프로세스에게 넘기는 역할
    즉, 제어권을 넘기는 역할
  • 이 과정을 context switch(문맥 교환)라고 함
  • CPU scheduler와 마찬가지로 운영체제의 기능 중 하나

 

필요한 경우

  • 1. Running -> Blocked
    ex) I/O 요청하는 시스템 콜
  • 2. Running -> Ready
    ex) 할당시간 만료로 timer inerrupt
  • 3. Blocked -> Ready
    ex) I/O 완료 후 interrupt
  • 4. Terminate
    ex) 프로세스의 종료

  • 1, 4에서의 스케줄링은 *nonpreemptive(=강제로 빼앗지 않고 자진 반납)
  • 2, 3에서의 스케줄링은 *preemptive(=강제로 빼앗음)
728x90