본문 바로가기
교육, 학습/CS스터디_반효경 운영체제

운영체제 - CPU스케줄링이 필요한 이유, CPU스케줄링 성능척도

by 개발하는 경제학도 2022. 1. 8.

 

강의 소개

현재 수강하고 있는 KOCW 내 이화여자대학교 운영체제(2017, 반효경) 강의의 내용을 정리하였습니다.

개발자 관점에서 운영체제 기초를 학습하는 무료 강의로 자세한 강의 내용은 수강을 추천드립니다.


 

CPU 스케줄링

 

CPU스케줄링이 필요한 이유

이렇게 여러 종류의 프로세스들(CPU bound job, I/O bound job)이 섞여 있기 때문에 효율적인 시스템 자원의 사용을 위해 CPU 스케줄링이 필요하다.

또한, **I/O bound job(사람하고 상호작용하는 Interactive job)에게 적절한(혹은 빠른) 응답을 제공하기 위해서 스케줄링이 필요하기도 하다.

 

더보기

** CPU bound job과  I/O bound job (자세히)

 

CPU bound job: CPU burst 시간이 긴 작업들이다.

I/O bound job: CPU를 사용하는 시간이 대체적으로 짧다. CPU로 계산하는 시간보다 I/O에 많은 시간이 필요하다.

 

2022.01.08 - [교육, 학습/CS스터디] - 운영체제 - CPU burst와 I/O burst, CPU bound job과 I/O bound job

 

CPU Scheduler

운영체제 코드의 일부이다. Ready 상태의 프로세스 중에서 이번에 CPU를 줄 프로세스를 고른다.

Dispatcher

운영체제 코드의 일부이다. CPU의 제어권을 CPU Scheduler에 의해 선택된 프로세스에게 넘긴다. (이를 문맥 교환이라 한다)

 

 

 

CPU 스케줄링이 필요한 경우(프로세스의 상태변화 별)

- 자진반납(= nonpreemptive)

1) Running -> Blocked

CPU를 쓰다가 오래 걸리는 작업(I/O 등)이 있어 Blocked 되는 경우(CPU가 있어도 사용하지 못하는 상황) 다른 프로세스에게 CPU를 주기 위해

2) Terminated

프로세스가 종료되었을 때 CPU를 누구에게 줄지 고려해야 한다.

 

- 강제로 빼앗김(= preemptive)

1) Running -> Ready

CPU를 쓰고 싶은데 빼앗겨서 Ready로 돌아가는 경우이다. 한 프로세스만 오래 CPU를 사용하면 응답 시간이 길어진다. 따라서 다른 프로세스에게 CPU를 주기 위해 timer interrupt를 사용해서 강제적으로 빼앗는 경우이다.

2) Blocked -> Ready
I/O작업을 하던 프로세스가 작업이 끝난 경우 CPU를 얻을 수 있는 권한이 있는 Ready가 된다.

만약 이 프로세스가 우선순위가 매우 높다면 I/O가 끝나자마자 CPU를 얻게 될 수도 있다.

 

 


 

CPU 스케줄링의 성능 척도

스케줄링 알고리즘 별 성능을 비교하기 위한 척도이다. 크게 시스템 관점과 사용자 관점으로 나눌 수 있다.

 

- 시스템 관점

1) CPU utilization(CPU 이용률)

CPU가 쉬지 않고 일한 시간의 비율이다. CPU 이용률은 높을 수록 좋다.

CPU 스케줄링(어떤 프로세스를 먼저하는지 등)에 따라서 이용률이 달라질 수 있다.

 

2) Throughput(처리량)

단위시간 당 처리량(프로세스를 얼마나 처리했는가)이다. 시스템 입장에서 얼마나 많은 일을 했는가이다. 처리량은 높을수록 좋다.

 

- 사용자 관점. 시간관련 척도이며 시간은 짧을수록 좋다.

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

CPU burst에 들어와서, I/O burst가 될 때까지의 전체 시간의 합이다.

Ready queue에서 기다린 시간 + 실제로 CPU를 사용한 시간이다.

ex. 중국집에 들어와서 다 먹고 나간 시간의 총합

 

4) Waiting time(대기시간)

CPU를 쓰러와서 기다린 전체 시간의 합이다.

CPU burst에 들어와서 프로세스는 CPU를 얻었다가, 빼앗겼다를 반복하는데

이런 반복 후 I/O burst상태에 되기 직전까지 Ready queue에서 CPU 사용을 위해 기다린 전체 시간의 합이다.

ex. 짜장면을 기다린 시간, 탕수육을 기다린 시간의 합

 

5) Response time(응답 시간)

어떤 프로세스가 CPU를 사용하기 위해 들어와서 CPU를 최초로 사용하기까지 걸리는 시간이다.

CPU burst로 들어와서 최초로 CPU를 얻기까지 걸리는 시간이다. (프로그램이 실행되고 나서가 아님에 주의하자)

대부분의 프로세스는 preemptive이다. 따라서 CPU를 빼앗길 수 있기 때문에 '최초'로 CPU를 얻기까지 걸린 시간을 응답 시간으로 측정한다.

ex. 중국집에서 단무지를 언제 내주는지

 

 

출처: 운영체제와 정보기술의 원리(반효경 )

댓글