@ 지금까지 설명한 Scheduling 기법은
// 모듈을 위한 Scheduling 기법입니다.
> 굉장히 General한 부분이죠
@ Real Time System
// 비행기 항법장치 등
// 이런 System은 주어진 시간 안에 완전하게 수행되어야 합니다.
> 이런 시스템에서는 OS가 Critical한 시스템을 먼저 수행시켜야 합니다.
.. 이런 경우에는 Process 선호도를 먼저 수행시키는 Scheduling을해야 합니다.
.. 이를 Priority-based Scheduling 우선순위 스케쥴링이라고 합니다.
@ 이를 General한 곳에 사용하면
// 우선순위 매기는 것이 중요해지고
> Starvation이라는 문제가 생깁니다.
.. 수행할 준비를 받고 프로세스가 CPU를 무기한 기다리는 문제 (우선순위 하락)
@ 이와 같이 Application에 따라서 Policy가 바뀌는 경우가 많습니다.
@ 그 다음 Scheduling Fair Share Scheduling입니다.
// Bandwidth, Proportial로도 불리는 것으로
> 앞에서 나온 것들과 살짝 다른 기법입니다.
@ CPU라고 하는 Resource는 주어진 용량이 있으며,
// 그 용량을 Bandwidth라고 하면
> 각, Process마다 달리 가져가게 됩니다.
// 단, 이럴 때, 특정한 Application이 CPU를 독점하게 되면 문제가 생깁니다.
> 예를 들어 Continuos media에 있어서는 일정 CPU가 무조건 필요하기 때문입니다.
// 그렇기에 어떤 프로세스가 필요한 CPU를 정해두고 이에 따라 Bandwidth를 할당하는 것입니다.
@ 자동차 OS에 있어서를 생각해보겠습니다.
// 예를 들어 자동차의 Head unit이 다양한 일들을 해준다고 생각하겠습니다.
> 주어진 CPU에서 웹브라우저가 CPU를 차지하는 영향을 30%로 한계를 두는 것을 요구할 수 있습니다.
.. 이런 Bandwidth Scheduling이 필요합니다.
@ 이게 가능하도록 하는 Bandwidth 관련 함수가 존재합니다.
// CFS (complitely fair Scheduling)
@ 지금까지 많은 Scheduling을 살펴보았습니다.
// 이를 다시 정리해보겠습니다.
> Shortist Job First
.. 하지만 waiting time을 예상하기 힘들었습니다.
> FIFO - Round Robin Scheduling 도임
.. 하지만 아직 잠재적인 문제가 존재했습니다.
> MLFQ를 도입
.. Mission Critical 문제가 존재하게 됩니다.
> 우선순위 스케쥴링
.. Bandwidth Scheduling의 필요성이 증가합니다.
> Linuxd에서 Rotating Staircase Deadline Scheduler를 도입합니다. (Fair Share)
.. MLFQ에서 제일 뒤로 가는 것이 아니라 Deadline 값에 따라 Queue의 원하는 위치로 갈 수 있습니다.
.. 이 Deadline은 Bandwidth에 따라 정해지게 됩니다.
> 그러나 결국은 CFS를 만들고 Linux의 기본적인 커널 스케쥴러로 받아들입니다.
@ 지금은 기본적으로 모두 CFS를 가집니다.
@ 학부에서는 MLFQ까지 알고 있으면 되고,
// 그 이후의 내용은 좀더 현실적인 부분에서 생각하시면 되겠습니다.