@ Process Scheduling은 Process와 관련하여
// OS의 가장 중요한 Operation입니다.
@ Scheduling은 행위입니다.
// 각 Process들이 fair하게 CPU를 Share할 수 있도록
> 다음에 수행시켜야 할 Process들을 선택하는 작업입니다.
@ 위의 Goal인 CPU share에는 위에서도 보이듯이 제약조건이 있습니다. 다시 정리하면,
// Fair하게 해야 한다는 것과
// CPU Protection을 해줘야 한다는 것이지요.
@ Fair하다는 것은 상대적인 개념입니다.
// 이는 OS에서도 똑같이 적용이 됩니다.
> 같은 조건에서 같은 것을 받지 못하는 상황
> 혹은 다른 조건에서 같은 것을 받고 있는 상황
// 위의 상황들만 보았을 때에도 Application Specific한 상황이 됩니다.
// 한 마디로 OS가 절대적으로 만족시켜야 하는 상황은 아닌 것입니다.
@ 하지만 우리가 지금 보고 있는 것은 General Performence time sharing Operation이기에
// 일단 Fairness를 CPU를 1/n을 받는 것으로 정의하겠습니다.
> 각 Process들이 언젠가는 CPU를 할당받아 수행을 완료해야 합니다.
@ Protection은 무엇일까요?
// 한 Process가 CPU를 사용하다가, 다른 Process에게 양보했다가
> 그 Process의 Program에 문제가 생기면 안됩니다.
// 이러한 상황을 막는 것이 바로 CPU Protection입니다.
@ 어떤 상황이 발생하여 CPU를 다른 Process에게 넘겨주어야 하는 상황이 발생합니다.
// 이 때 어떤 Process에게 넘겨줄 것인지가 이슈라고 생각할 수 있습니다.
> 이는 상황에 따라 그 중요도가 다를 수 있습니다.
.. 원자력 발전소와 같은 곳에서는 안전에 관련한 프로그램이 우선순위를 가져야 할 것입니다.
.. 하지만 일반적인 서버에서는 웬만한 Process는 같은 순위를 가지고 있어야 합니다.
> 각각의 상황에서 Fair의 의미가 다르다는 것은 이것을 의미합니다.
> 이것이 Application Specific하다는 것이며, 의사결정의 형태도 달라지게 됩니다.