CPU 스케줄링 - 1

초보개발·2022년 2월 11일
0

OS

목록 보기
23/38

CPU 스케줄링


CPU And I/O Bursts


사용자 프로그램이 수행되는 과정은 CPU 작업과 입출력 작업의 반복으로 구성된다.

  • CPU burst: 프로그램이 직접 CPU를 가지고 빠른 명령을 수행하는 일련의 단계
  • I/O burst: 입출력 요청이 발생해 커널에 의해 입출력 작업을 진행하는 비교적 느린 단계

CPU bound process, I/O bound process


(a) CPU bound process: 입출력 작업을 거의 수행하지 않아 CPU burst가 길게 나타나는 프로세스, 계산 위주의 프로그램, 소수의 긴 CPU burst를 갖고 있다.
(b) I/O bound process: 입출력 요청이 많아 CPU burst가 짧게 나타나는 프로세스, 대화형 프로그램, 짧은 CPU burst를 많이 갖고 있다.

프로세스들의 CPU burst 분포는 다수의 짧은 CPU 버스트와 소수의 긴 CPU 버스트로 구성된다. 즉, CPU를 한번에 오래 사용하기보다 잠깐 사용하고 입출력 작업을 수행하는 프로세스들이 많다는 뜻이다.
CPU burst가 짧은 프로세스들은 대부분 대화형 작업으로 빠른 응답이 중요하다. 따라서 스케줄링할 때 이 프로세스에게 우선적으로 CPU를 할당할 수 있도록하는 스케줄링이 필요하다. 또한, I/O bound process에게 먼저 CPU 할당하게 되면 CPU를 잠깐만 사용하고 곧바로 입출력 작업을 수행할 수 있으므로 입출력 장치의 이용률이 높아지는 효과도 있다.

CPU 스케줄러

CPU 스케줄러는 준비 상태에 있는 프로세스들 중 어떠한 프로세스에게 CPU를 할당할지 결정한다.

CPU 스케줄링이 필요한 경우

비선점형(nonpreemptive) CPU 스케줄링

CPU를 획득한 프로세스가 스스로 CPU를 반납하기 전까지는 CPU를 빼앗기지 않는 방식의 스케줄링 기법이다.

  • running 상태에서 준비 상태로 바뀌는 경우
  • CPU에서 실행 상태에 있는 프로세스가 종료되는 경우

선점형(preemptive) CPU 스케줄링

프로세스가 CPU를 계속 사용하길 원하더라도 강제로 빼앗을 수 있는 스케줄링 방법을 말한다.

  • time quantum을 둬 타이머 인터럽트를 발생시키는 방법이 대표적이다.
  • running 상태에서 봉쇄 상태로 바뀌는 경우
  • 입출력 요청으로 봉쇄 상태에 있던 프로세스의 입출력 작업이 완료돼 인터럽트가 발생하고 그 결과 이 프로세스의 상태가 준비 상태로 바뀌는 경우

3번은 이번에 입출력 작업이 완료된 프로세스가 인터럽트 당한 프로세스보다 우선순위가 높아서 인터럽트 처리 후 문맥교환을 통해 입출력이 완료된 프로세스에게 CPU를 할당하는 경우(인터럽트 직후 수행되던 프로세스에게 CPU를 재할당하지 않음)

Dispatcher

새롭게 선택된 프로세스가 CPU 할당받고 작업을 수행할 수 있도록 환경 설정을 담당한다.

디스패처가 하는 것들

  • 문맥 교환
  • 사용자 모드로 전환
  • 사용자 프로그램 내의 적절한 위치(PCB 내의 PC)로 이동해 프로그램을 재개

Dispatch latency

디스패처가 하나의 프로세스를 정지시키고 다른 프로세스에게 CPU를 전달하기까지 걸리는 시간이며 대부분 문맥교환 오버헤드가 해당된다.

스케줄링의 성능 평가

  • 시스템 관점 지표: CPU 이용률, 처리량
  • 사용자 관점 지표: 소요시간, 대기시간, 응답시간

Scheduling Criteria

  • CPU utilization: 전체 시간 중에서 CPU가 일을 한 시간의 비율
  • throughput:주어진 시간 동안 준비 큐에서 기다리고 있는 프로세스 중 몇 개를 끝냈는지(CPU burst를 완료한 프로세스의 개수)를 나타냄
  • turnaround time: 프로세스가 CPU를 요청한 시점부터 자신이 원하는 만큼 CPU를 다 쓰고 CPU burst가 끝날 때까지 걸린 시간 (레디 큐에서 기다린 시간 + CPU를 사용한 시간)
  • waiting time: CPU burst 기간 중 프로세스가 준비 큐에서 CPU를 얻기 위해 기다린 시간의 합
  • response time: 프로세스가 레디 큐에 들어온 후 첫번째 CPU를 획득하기까지 기다린 시간

CPU utilization, throughput은 최대로, turnaround time, waiting time, response time은 최소

Scheduling Non-goals

Starvation\color{salmon} Starvation: 다른 프로세스가 계속 CPU를 점유하고 있어서 한 프로세스가 작업을 처리할 수 없는 상태에 지속적으로 놓여있는 상황이다.

  • 좋지않은 스케줄링은 기아 상태를 유발한다.
  • 동기화도 기아 상태를 유발할 수 있다.

0개의 댓글