- 공룡책 10판(Operating System Concepts 10th)과 수업 내용을 참고로 한 내용 정리이다.
- 정리 목적 그리고 배우는 입장의 포스팅이기에 잘못된 내용이 있을 수 있다.
Scheduling(스케줄링)의 개요
운영체제의 핵심을 두 가지로 나타내면 메모리 관리 그리고 프로세스 관리라는 점을 알 수 있다.
스케줄링은 이 중에서 프로세스 관리에 속하니 당연히 중요할 수 밖에 없다.
그렇다면 스케줄링이란 무엇일까? 스케줄링은 다음에 어떤 프로세스를 실행시킬 것인지를 결정하는 과정이다. 실행 가능한 프로세스들이 여러 개 존재할 때, 그 중에서 어떤 프로세스를 선택하여 CPU를 할당할 것인지를 스케줄링 알고리즘을 통해 정한다.
이러한 스케줄링은 자주 일어나기 때문에 오래 걸리면 안된다.
스케줄링 알고리즘의 목표
Starvation 방지
Starvation이란 프로세스가 우선순위(priority)에 밀려 CPU 자원을 할당받지 못하고 계속해서 기다리는 현상을 말한다.
공평성 제공
같은 우선순위의 프로세스들에게 CPU 자원을 공평하게 제공하도록 한다.
균형성
CPU와 I/O가 균형되게 사용될 수 있도록 하는 것이다. 이는 병행이 가능하므로 최대한 같이 돌아가면 자원을 효율적으로 쓰게 된다.
위 3가지는 모든 시스템에 공통적으로 적용되는 목표이다.
Batch System에서의 목표
-
Throughput(처리량): Batch System은 사용자와의 상호작용이 없는(천공 카드 방식) 방식이다 보니 정해진 단위 시간에 최대한 많은 작업을 처리하도록 한다. (maximum is the best)
-
Turnaround Time: 작업전체시간(총처리시간), 어떤 작업이 시스템에 들어온 시각부터 시작돼서 종료되어 나가기까지 걸리는 총 시간이 짧도록 하는 것(프로세스 대기 시간도 여기 포함된다.)
-
CPU 활용: 컴퓨팅 자원을 최대한 비지 않게 사용(Batch system 사용 당시에는 컴퓨팅 자원이 매우 비쌌다.)
Interactive systems에서의 목표
-
Responsive time: 사용자의 요구에 빨리 반응하는 시간, 어떤 요청이 시스템에 전달되고 처음으로 시스템이 반응하기까지 걸리는 시간이라고 생각하자.
-
Proportionality: 비례라는 뜻이지만 여기서는 사용자의 기대(예상)에 최대한 유사하게 대응하는 것을 뜻한다.
여기까지가 우리가 통상적으로 말하는 스케줄링 알고리즘의 목표라고 할 수 있다.
Real time system에서의 목표
-
Deadline: 시간을 엄수해야 하는 특징이 있다.
-
Predictability: 예측성, Real-time의 예시로 최근 사람들이 애용하는 넷플릭스를 들 수 있는데, 만약 네트워크가 좋지 못해 동영상이 자주 끊기면 사용자는 불만을 느낄 것이다. 이를 막기 위해 네트워크의 상태를 모니터링해 미리 데이터를 버퍼링해 놓는 것도 일종의 예측성이라 할 수 있다.
스케줄링의 종류
Non-preemptive scheduling(비선점형 스케줄링)
-
한 프로세스가 CPU를 할당받으면 작업이 종료될 때까지 CPU 자원을 뺏을 수 없는 방식의 스케줄링을 말한다. (선점 = 뺏을 수 있는, 비선점 = 뺏을 수 없는)
-
모든 프로세스가 협력적으로 작동하고 Yield() system call로 CPU 자원을 넘겨주게 된다. 즉 스케줄러는 프로세스가 CPU를 양보할 때까지 기다리게 된다.
preemptive scheduling(선점형 스케줄링)
-
프로세스가 CPU 자원을 가지고 실행되고 있을 때 그걸 OS가 뺏어 우선순위가 높은 다른 프로세스에게 CPU 자원을 넘겨주는 방식이다.
-
스케줄러가 interrupt를 통해 강제로 context switching을 일으킨다.(중요한 CPU의 레지스터 정보를 프로세스의 PCB에 저장하고 새롭게 running시킬 프로세스를 PCB에서 로드한다.)
-
만일 어떤 프로세스가 shared data(공유 데이터)를 업데이트하는 도중에 CPU 자원을 가져가면 미완성으로 끝나게 된다.
요약(좋은 스케줄링의 기준)
-
CPU utilization(max): CPU를 얼마나 잘 활용했는지
-
Throughput(max): 단위시간 당 종료하는 프로세스의 개수(실행되는 프로세스의 개수가 정확하지만 OS가 알기 힘들다)
-
Turnaround time(min): 어떤 프로세스를 실행하는데 걸리는 시간(실행시간 + 대기 시간)
-
Waiting time(min): 위의 대기 시간과 동일(ready queue + waiting queue에서 대기하는 시간)
-
Response time(min): 응답시간, 시스템에 요청이 들어온 시간부터 첫 번째 응답이 발생하기까지의 시간
다음 글에서는 스케줄링 알고리즘의 종류를 알아보도록 하겠다.