Skip to content

Latest commit

 

History

History
23 lines (14 loc) · 2.9 KB

[#41] 스케줄링은 왜 필요한가요.md

File metadata and controls

23 lines (14 loc) · 2.9 KB

스케줄링은 왜 필요한가요?

스케줄링은 다중 프로그램 운영체제에서 CPU 이용률을 최대화하기 위해서 스케줄링 알고리즘을 이용하여 현재 프로세스가 점유하고 있는 CPU를 다른 프로세스에게 양도하는 것을 의미합니다. 프로세스 스케줄링이 필요한 이유는 CPU를 사용하는 패턴이 상이한 여러 프로세스가 동일한 시스템에서 함께 실행되기 때문인데 CPU 버스트가 균일하지 않은 다양한 프로그램이 공존하는 시분할 시스템에서는 스케줄링을 통해 CPU 이용률을 최대화 할 수 있습니다.

만약 스케줄링이 없다면 CPU를 점유한 프로세스가 모든 작업을 끝마칠 때 까지 기다려야 하는데 해당 프로세스가 CPU 버스트가 낮고 IO 버스트가 상대적으로 높은 프로그램이라면 다른 프로세스들은 수행되지 못하고 CPU를 낭비한채로 대기해야 합니다. 이러한 비효율적인 부분을 스케줄링을 통해 개선하여 CPU 이용률을 최대화 하는 것이 스케줄링의 궁극적인 목표입니다.


스케줄링의 성능을 어떠한 기준으로 판단할 수 있나요?

다양한 스케줄링 알고리즘들이 존재하고 각각의 알고리즘의 성능을 평가하기 위해 여러가지 지표들이 사용되지만 일반적으로 시스템의 관점과 사용자의 관점이라는 두 가지 측면으로 나누어서 생각해볼 수 있습니다.

먼저 CPU의 관점에서 스케줄링의 성능을 평가하는 요소로는 CPU활용도와 처리량이 있습니다. CPU의 입장에서는 가능한 CPU의 이용률을 극대화하고 주어진 시간내에 최대한 많은 프로세스를 처리하는 것이 목표이기 때문에 CPU가 휴면상태에 머무르는 시간을 최대한 줄이면서 CPU 버스트가 짧은 프로세스에게 우선적으로 CPU를 할당하는 것을 목적으로 합니다.

다음으로 사용자의 관점에서 스케줄링의 성능을 평가하는 요소로는 소요시간, 대기시간, 응답시간을 들 수 있습니다. 먼저 소요시간은 프로세스가 CPU를 요청한 시점부터 CPU를 반납할 때 까지의 시간을 의미하며, 대기 시간은 프로세스가 CPU를 할당받기 위해 준비 큐에서 대기한 시간을 의미합니다. 마지막으로 응답시간은 준비큐에 들어온 다음부터 첫번째 CPU를 획득하기 까지 걸린 시간을 의미합니다. 사용자는 프로세스의 시작부터 작업을 완료할 때 까지의 걸린 시간이 최대한 적게 들 수 있도록 스케줄링하는 것을 목적으로 합니다.

결론적으로 스케줄링의 성능은 위의 평가 요소들을 종합적으로 판단할 수 있는데 CPU 이용률과 처리량을 최대화하고 소요시간, 대기시간, 응답시간을 최소화하는 것이 가장 이상적인 스케줄링 기법입니다.