스케줄러를 소개하기 앞서서 프로그램이 실행되는 단계를 간략히 살펴보겠습니다.
1. CPU and I/O Bursts in Program Execution (CPU 스케줄링 도입 배경)
컴퓨터 프로그램이 실행될 때는 아래와 같은 단계를 거칩니다.
CPU에서 인스트럭션을 실행하는 단계와 오래 걸리는 I/O 단계를 번갈아가며 실행하는 것이 모든 프로그램의 실행에서 거치는 path입니다.
프로그램 종류마다 다르게, I/O가 많이 끼어들지 않는 프로그램의 경우에는 CPU에서 인스트럭션을 실행하는 단계인 CPU burst가 길게 나타나고 반대로 I/O와의 상호 작용이 많은 프로그램 같은 경우에는 CPU를 연속적으로 쓰는 단계가 짧습니다.
그래서 CPU를 연속적으로 쓰는(CPU burst)를 아래와 같은 그래프로 뽑아보면, CPU burst 가 짧은 경우가 빈번하고 CPU burst가 긴 경우는 간혹 나타나는 것을 볼 수 있습니다. 컴퓨터 시스템에서 돌아가는 프로그램들은 모두 동일한 패턴을 가진 것이 아닌 CPU burst가 긴 경우와 짧은 경우가 섞여있는 것입니다.
CPU를 짧게 쓰고 중간 중간에 I/O요청이 많이 들어오는 작업을 I/O bound job 이라고 하고, CPU를 길게 쓰고 I/O 요청이 적은 작업을 CPU bound job 이라고 합니다.
특히 I/O bound job같은 경우는 일반적으로 사람과 상호 작용을 하는 작업이기 때문에, 만약 이런 작업에 CPU를 너무 늦게 주면 응답 시간이 길어져서 사용자 입장에서 불편한 상황이 생길 수 있습니다.
그래서 CPU 스케줄링이라는 개념이 등장합니다.
2. CPU Scheduler & Dispatcher
CPU 스케줄링은 현재 Ready queue에 들어와 있는 프로세스(CPU를 얻기 위해 기다리는 프로세스) 중에서 어떤 프로세스에게 CPU를 줄 것인지 결정하는 매커니즘입니다.
여기서 Ready 상태의 프로세스 중에서 어떤 프로세스에게 CPU를 넘겨 줄지를 고르는 것이 CPU Scheduler, 그리고 CPU를 누구한테 줄 지 결정했으니, 그 프로세스에게 CPU를 넘겨주는 역할을 하는 운영체제 커널 코드를 Dispatcher라고 합니다.
3. Scheduling Criteria
(1) 시스템입장에서의 성능 척도
시스템 입장에서는 CPU 하나를 통해 최대한 많은 일을 시키면 좋을 것입니다.
1. CPU utilizaion(이용률)
전체 시간 중에 CPU가 놀지 않고 일한 비율을 말합니다.
CPU는 비싼 자원이기 때문에, 놀지 말고 최대한 일을 시켜 전체 시간 중에 일하는 비율을 높게하는 것이 시스템 입장에서는 CPU를 효율적으로 쓰고 있는 방법일 것입니다.
2. Throughput(처리량)
주어진 시간 동안에 몇 개의 작업을 완료했는지 나타냅니다.
(2) 프로그램 입장에서의 성능 척도
프로그램, 프로세스 입장에서의 성능 척도는 프로그램이나 프로세스 자신이 CPU를 빨리 얻어서 빨리 끝날수록 성능이 좋을 것입니다.
1. Turnaround time(소요시간, 반환시간)
CPU를 사용하러 들어와서 나갈 때까지 걸린 시간을 의미합니다.
프로세스가 CPU를 사용하러 Ready queue에 줄을 서기 부터 CPU burst가 다 끝나고 나갈 때까지의 시간입니다.
2. Waiting time(대기 시간)
CPU가 하나 밖에 없기 때문에 쓰고자 하더라도 Ready Queue에 줄을 서서 기다리게 되는 시간을 웨이팅 타임이라고 합니다.
3. Response time(응답 시간)
Ready queue에 들어와서 처음으로 CPU를 얻기까지 걸린 시간입니다.
waiting time과의 차이점은 선점형 스케줄링일 경우 CPU를 한번 얻었다고 끝까지 쓰는 것이 아닙니다. CPU 얻었다가 뺏기는 것을 반복하면서 CPU를 쓰다가 다시 줄을 서서 기다리고 CPU를 사용하고 다시 줄을 서서 기다리는 과정이 반복됩니다. 그러면 줄 서는 시간이 여러 차례 발생하는데 그 기다리는 시간들을 전부 합친 것이 waiting time입니다.
반면, response time은 최초의 CPU를 얻기까지 기다리는 시간을 의미합니다.
그럼 바로 다음 포스팅에서 스케줄링 알고리즘의 종류에 대해서 알아보겠습니다.
참고자료
[KOCW 이화여대 반효경 교수님 - CPU Scheduling 1]
https://core.ewha.ac.kr/publicview/C0101020140328151311578473?vmode=f
[ Chapter5 Operating System Concepts - Abraham Silberschatz ]
https://www.yes24.com/Product/Goods/89496122