[유혁 교수의 운영체제] 7.CPU Scheduling

CPU Scheduling

스케줄링이란 무엇인가

  • CPU 스케줄링
    • 어떻게 프로세스에게 CPU의 사용을 분배할 것인가
      • Multiprogramming과 시분할에 기반함
      • 메모리 내 실행 준비된 프로세스들 가운데 하나를 선택하여 CPU를 할당함
        • 질문: 멀티코어는 어떻게 할까
  • CPU 스케줄링의 목표
    • CPU를 최대로 활용하는 것:
      • idle 최소화 = CPU를 100% 사용하려 하는 것 = CPU를 saturate
        • CPU를 saturate해야하는 상황은 대부분 공유된 클라우드 컴퓨터 자원을 사용하여 서버를 돌려야하는 경우이다.
      • 질문: 커널이 사용하는 CPU 시간은

스케줄링의 종류

  • CPU scheduling의 결정은 다음 상태 변화에서 이뤄짐
    1. “Running”에서 “Waiting” 상태로 (I/O를 하는 경우->sleep큐)
    2. “Running”에서 “Ready” 상태로 (Timer 인터럽트->ready큐)
  • 비선점형 스케줄링(Non-preemptive Scheduling)
    • 프로세스가 I/O를 하는 상황에서만 수행되는 스케줄링
    • Multiprogramming의 기본 스케줄링 - OS가 강제로 CPU 사용을 중단시키지 않음
  • 선점형 스케줄링(Preemptive Scheduling)
    • 타임퀀텀을 소진한 상황에서 스케줄링
    • OS가 현재 CPU를 사용하고 있는 프로세스의 수행을 강제적으로 정지할 수 있음

Scheduling Criteria

  • CPU 활용률 (CPU utilization)
    • 전체 시스템 시간 중 CPU가 작업을 처리하는 시간의 비율
  • 처리량 (Throughput)
    • CPU가 단위 시간 당 처리하는 프로세스의 개수
  • 응답시간 (Response time)
    • 프로세스가 입출력을 시작해서 첫 결과가 나오는 데까지 걸리는 시간
      • 사용자가 무언가를 작성하고 엔터를 치고 난 후, 이에 따른 첫 결과가 화면에 나타날때까지의 시간
      • 질문: 큐로 설명해보기 레디큐에 기다리는 시간, 슬립 큐에 기다리는 시간 모두 응답시간이다.
  • 대기 시간(Waiting time)
    • 프로세스가 Ready Queue 내에서 대기하는 시간의 총합
  • Turnaround time
    • 프로세스가 시작해서 끝날 때까지 걸리는 시간
    • 프로세스가 생성된 후 terminate될 때까지

이 모든 기준을 다 만족시키는 스케줄러는 존재하지 않는다. 서로 상충되는 기준이 있기 때문이다. 최선의 스케줄러를 모색할 때에는 어떤 기준에서 최선인지를 따져야 한다.

Q : 런큐 레디 큐에 관련해서 질문이 있는데요, 런 같은 경우에는 어떤 시각 t에서 실행 중인 프로세스는 한개라고 하셨는데 굳이 큐로 관리할 필요가 있나요? A : 그렇다. single core에서 한 순간에 동작하는 프로세스는 하나 뿐이므로, 런큐는 사실 굳이 필요가 없다. 그런데 이제 현실적으로는 multicore 환경에서부터는 런 큐가 필요해지기 시작한다.

Q : 교수님 I/O는 interrupt의 형태인가요 아니면 system call로 봐야하는건가요? A : system call은 문맥교환이 없다. I/O는 시스템 콜의 호출로 인해서 voluntary한 sleep으로 이뤄지므로 I/O 자체는 인터럽트가 아니다. I/O가 완료되었음을 알리는 것이 인터럽트인 것이다.

Q : I/O를 하는데오 문맥 교환이 일어나지 않는 경우도 있나요? A : 문맥 교환은 프로세스가 sleep할때 일어난다. 그런데 만약 sleep하기도 전에 벌써 read할 데이터가 들어와있다면 다른 프로세스로 넘어가지 않고, 바로 read를 한 후 다음 작업을 수행하게 될 것이다.

Scheduler - design

  • 이상적인 스케줄러
    • 최대의 CPU 사용률
    • 최대의 처리량
    • 최소의 응답시간
    • 최소의 대기시간
  • 모든 조건을 만족 시키는 스케줄러를 만드는 것은 현실적으로 불가능
  • 시스템의 용도에 따른 요구사항이 달라짐.
    • 슈퍼 컴퓨터 – CPU 사용률
    • 개인용 컴퓨터 – 응답시간
    • 워크 스테이션 – 처리량

Comments