운영체제 - CPU 스케쥴링

2020-09-21

OS를 공부하면서 정리를 한 내용들 입니다.

이번 챕터는 CPU 스케쥴링에 관련해 정리한 챕터입니다.


CPU 버스트

사용자 프로그램이 CPU를 직접 가지고 빠른 명령을 수행하는 일련의 단계

I/O 버스트

I/O 요청이 발생해 커널에 의해 입출력 작업을 진행하는 비교적 느린 단계

그림 출처

컴퓨터 시스템에서 돌아가는 프로그램들은 모두 동일한 패턴을 가지는게 아니라,

CPU 버스트가 긴 경우와 짧은 경우가 섞여있습니다.

그렇기 때문에 CPU 스케쥴링이 필요합니다.

특히, I/O bound job(CPU 버스트가 짧은 프로그램들)은 대게 사람들과 Interaction을 하는 Job들이기 때문에,

이쪽에 CPU를 너무 늦게 주게 되면 응답시간이 길어져서 사람들은 답답함을 느끼게 됩니다.

CPU 스케쥴링은?

현재 Ready Queue에 들어와 있는, CPU를 얻고자 하는 프로세스 중에서 어떤 프로세스에게 CPU를 줄 것인지를 결정하는 매커니즘

CPU 스케쥴링의 성능 척도

CPU 스케쥴링의 성능척도는 크게 2가지로 구별됩니다.

시스템 입장에서의 성능척도(사장의 입장)

CPU 이용률 (CPU utilization)

전체 시간 중 CPU가 놀지 않고 명령을 수행한 시간의 비율을 나타냅니다.

처리량 (throughput)

주어진 시간 동안 몇개의 작업량을 완료했는지를 나타냅니다.

CPU 버스트가 짧은 프로세스에게 우선 CPU 할당하면 처리량은 증가합니다.

프로그램 입장에서의 성능척도(고객의 입장)

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

프로세스가 CPU 요청한 시점부터 CPU 버스트가 끝날 때까지 걸린 시간을 의미합니다.

CPU버스트가 준비 큐에서 기다린 시간과 실제 CPU를 사용한 시간의 합.

대기 시간 (waiting time)

프로세스가 CPU 버스트 기간 중 준비 큐에서 기다린 시간의 합

한 번의 CPU 버스트 중에도 준비 큐에서 기다린 시간이 여러 번 발생할 수 있습니다.(시분할 시스템)

응답 시간 (response time)

프로세스가 CPU요청 시점부터 처음으로 CPU를 얻을 때까지 기다린 시간

타이머 인터럽트가 빈번히 발생할수록 응답 시간이 향상된다.

대화형 시스템에 적합한 성능 척도

waiting time과 response time이 어떻게 다른가?
선점형 스케쥴링은 CPU를 한번 얻었다고 해서 끝까지 사용하는 것이 아닙니다.
그런경우 wating time은 얻고 뺏고를 반복할 때 총 기다린 시간을 waitint time입니다.

그에 반해 response time은 한번 줄을 서고나서 CPU를 얻는 시간까지 만을 의미합니다.

작업이 끝날 때까지 총 기다린 시간CPU를 얻기까지의 시간으로 구분할 수 있습니다.

중국집 예시

  • 활용도 - 전체 시간 중 주방장이 일한 시간의 비율

  • 처리량 - 주방장이 주어진 시간 동안 몇 명의 손님에게 요리를 주었는지

사장의 입장에선 주방장이 쉬지 않고, 일을 했으면 좋겠다고 생각한다.

  • 소요시간 - 손님이 중국집에 들어와 음식을 다 먹고 나가기까지 소요된 총 시간

  • 대기시간 - 중국집에 들어와 순수하게 음식을 기다린 시간, 음식이 조금씩 여러번 나왔다면 각각의 음식이 나오기까지 기다린 시간을 합한 것

  • 응답시간 - 최초의 음식이 나오기까지 기다린 시간

손님의 입장에서 보았을 때, 빨리 음식을 먹고 나가고 싶어한다.

-참고 Kmook 이화여자 대학교 반효경 교수님 : 운영체제 강의