CS/OS

CPU 스케줄링 - 개념

매실장아찌_ 2023. 6. 5. 18:02

Basic Concepts(기본 상식들)

  • process 의 동작은 크게 CPU 사용, 입출력의 반복으로 볼 수 있다.
  • CPU burst - I/O burst cycle: Process 는 cpu 실행과 I/O 대기로 이루어져있다.
  • CPU burst 를 CPU에 어떻게 분배할지가 주요한 문제이다.
  • CPU burst 의 길이와 분포가 주로 관심을 가져야할 부분이다.

CPU burst 와 I/O burst

  • CPU burst: cpu burst는 Process 가 한번에 CPU를 얼마나 사용하는지에 대한 시간이다. 
  • I/O burst: process 는 waiting 상태로 I/ O 동작이 시작하고 끝날 때까지를 의미한다. 

 

CPU 스케줄러

CPU 가 유휴 상태가 될 때마다 운영체제는 준비 큐에 있는 프로세스 중에서 하나를 선택해 실행해야한다. (short term scheduler)

선택 절차는 CPU 스케줄러에 의해 수행된다. CPU 스케줄러는 다양한 자료구조를 이용하여 선택한다. 보통 대기큐에 있는 process들이 PCB이다.

 

CPU 스케줄링 결정은 4가지 상황에서 발생한다.

  1. Switches from running to waiting state -> 현재 프로세스 기준으로 입출력하는 경우이다.
  2. Switches from running to ready state -> running process 가 cpu 를 너무 오래 사용하려고 하면 뺏는다. cpu burst 가 너무 길면 OS 스스로 끊는다는 이야기이다.
  3. Switches from waiting to ready -> waiting 에서 ready queue 로 들어온 친구가 우선순위가 더 높은 경우 ready 를 바꾼다.
  4. Terminaes -> running process 가 수행을 마치고 exit() system call 을 한 경우이다.

1번 4번에서만 스케줄링이 발생할 경우, nonpreemptive(비선점) 또는 coperative(협조적) 스케줄링 이라고 명명한다. 그렇지 않으면 선점(preemtive) 라고 한다.

 

  • 비선점형 스케줄링은 CPU가 한 프로세스에 할당되면 프로세스가 종료하든지, 또는 대기 상태로 전환되어 프로세스가 CPU 에서 방출될 때까지 사용된다. 비교적 단순하다
  • 선점형 스케줄링은 OS가 CPU의 사용권을 강제로 빼앗을 수 있다. 이 경우에는 처리시간 예측이 어려워진다.

 

현대의 CPU는 대부분 선점형 스케줄링을 사용한다. 이 경우에는 다양한 문제에 대해서 생각할 필요가 있다.

  • 공유데이터에 접근하는 경우 -> 쫒겨나는 process 와 새로들어온 프로세스가 critical section에 대하여 충돌하는 경우 shared data 에 둘 다 접근하는 경우이다.
  • preemption while in kernel mode -> running process 가 kernel 에서 kernel 전역 변수에 접근하고 있었는데 running process 를 쫓아낸 process 도 kernel 전역 변수에 접근하는 경우다.
  • intterrupts 가 critical OS activities 동안에 일어나는 경우다.

 

디스 패처

디스 패처는 CPU 코어의 제어를 CPU 스케줄러가 선택한 프로세스에 주는 모듈이다. 

  • 한 프로세스에서 다른 프로세스로 문맥 교환하는 일
  • 사용자 모드로 전환하는 일
  • 프로그램을 다시 시작하기 위해 사용자 프로그램을 적절한 위치로 이동시키는 일 

디스패처는 모든 프로세스의 문맥 교환 시 일어나기 때문에 가능한 빨리 수행되어야한다. 

 

디스패처 지연: 디스패처가 한의 프로세스를 정지하고 다른 프로세스의 수행을 시작하는데까지의 소요 시간

 

스케줄링 기준

  • CPU 이용률: CPU가 의미있는 작업에 사용된 시간, 사용자 process 를 동작한 시간 -> 최대화
  • Throughput(처리량): 단위 시간당 완료된 프로세스의 개수다. -> 최대화 
  • 총처리 시간(turnaround time): 프로세스의 제출 시간과 완료 시간의 간격을 총처리 시간이라 한다. -> 최소화
  • 대기 시간(waiting time): process 가 동작 중에 ready que 에 머문 시간의 합이다. -> 최소화
  • 응답 시간(response time): 프로그램이 process 를 실행해서 첫번 째 입출력이 나오기까지의 시간이다. -> 최소화

Turnaround time 안에 waiting time 이 포함된다.

preemptive 커널이 non-preemptive 커널보다 응답시간이 좋다.(짧다)

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

Real-Time CPU Scheduling  (0) 2023.06.19
CPU - 스케줄링 알고리즘  (1) 2023.06.06
스레드와 병행성  (0) 2023.06.04
PCB 와 컴퓨터 스케줄링  (0) 2023.06.04
프로세스의 개념과 상태  (0) 2023.05.31