본문 바로가기

Computer Science/운영체제

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

CH5. CPU Scheduling

CPU and I/O Bursts in Program Execution

모든 프로그램은 실행하면서 거치는 다음과 같은 일련의 path가 존재한다.

프로그램의pathCPU를 사용하는 일과 I/O 요청에 대한 응답을 기다리는 일을 반복한다.

CPU를 연속적으로 사용하면서 인스트럭션을 수행하는 단계를 CPU Burst이라고 부르고,

I/O를 수행하는 단계를 I/O Burst라고 부른다.

 

CPU-burst Time의 분포

I/O작업이 빈번한 작업(I/O bound job)이 있는 반면, CPU를 많이 사용하는 작업도 있다(CPU bound job).

사용자와 직접적으로 연관이 많은 interactive job에게 적절한 response를 제공해주어야 한다. 사용자가 너무 오래 기다리지 않도록 스케줄링을 해주어야 하기 때문이다.

이처럼 여러 종류의job(=process)이 섞여 있기 때문에CPU Scheduling이 필요하다.

따라서, 프로세스는 그 특성에 따라 다음 두가지로 나뉘게 된다.

  • I/O-bound process
    • CPU를 잡고 계산하는 시간보다 I/O에 많은 시간이 필요한 job
    • 짧고 잦은 CPU burst
  • CPU-bound process
    • 계산 위주의 job
    • 길고 빈번하지 않은 CPU burst

 

CPU Scheduler / Dispatcher

CPU SchedulerReady 상태의 프로세스 중에서 CPU를 줄 프로세스를 고른다.

Dispatcher는 CPU의 제어권을 CPU Scheduler에 의해 선택된 프로세스에게 넘긴다. 이 과정을 Context Switch(문맥 교환)이라고 한다.

다만 이들은 하드웨어나 소프트웨어를 지칭하는 것이 아니라, 운영체제 내부에서 이러한 역할을 하는 코드의 일부분을 말한다.

 

 

CPU 스케줄링이 필요한 경우

CPU 스케줄링에는 크게 preemptive(=강제로 빼앗음)nonpreemptive(=강제로 빼앗지 않고 자진 반납)의 경우가 있다.

preemptive

timer interrupt - 할당 시간 만료로 CPU를 강제로 빼앗고 다른 프로세스에게 넘겨주어야 하는 경우

device controller의 I/O 완료 interrupt - I/O 작업을 마쳤으므로 해당 프로세스를 Ready queue에 대기시켜주어야 하는 경우

nonpreemptive

I/O interrupt - CPU가 어떤 프로세스에게 할당되어 있다가 I/O 요청이 들어오면 그 프로세스에게 CPU를 넘겨주어야 하는 경우

Terminate - 프로세스가 일을 모두 마치고 종료가 되면 CPU를 다른 프로세스에게 넘겨 주어야 하는 경우

 

 

스케줄링의 성능 척도(Scheduling Criteria) - Performance Index(=Performance Measure)

 

1. 시스템 입장에서의 성능 척도 - CPU가 얼마나 일을 많이 하는가

CPU utilization(이용률)

전체 시간 중에서 CPU가 놀지 않고 일한 시간의 비율

Throughput(처리량)

주어진 시간동안 처리한 작업의 양

 

2. 프로그램(프로세스) 입장에서의 성능 척도 - 작업을 얼마나 빨리 처리하는가

Turnaround time(소요 시간, 반환 시간)

CPU를 받아서 모든 작업을 마치고 CPU를 다시 반환하기까지 걸린 시간. 프로세스가 시작되고 종료되는 시간이 아니라, CPU를 할당받기 위해 Ready queue 에 들어온 시간과 프로세스가 종료된 시간의 차다. 기다리는 시간 + CPU를 사용하는 시간

Waiting time(대기 시간)

CPU를 할당받기 위해 Ready queue에서 대기한 시간의 총합.

Response time(응답 시간)

Ready queue에 들어와서 처음 CPU를 얻기(첫 번째 반응)까지 걸린 시간. Turnaround time 보다 작다.

이때 Waiting timeResponse time을 포함하는 개념이다.

 

시간에 대한 내용을 왜 세분화했을까?

사용자의 입장에서 뭔가 하나라도 동작하는 것이 마음이 놓인다. 이러한 부분을 측정해 보여주는 시간이 바로 Response time인 것이다.

 

 

 

 

 

 

 

본 포스팅은 이화여대 반효경 교수님의 강의와 경북대 탁병철 교수님의 강의를 토대로 작성한 글입니다.