<aside>
💡 “운영체제 : 아주 쉬운 세가지 이야기”를 읽으면서 핵심 내용을 정리하였습니다.
이화여대 반효경 교수님의 운영체제 강의를 듣고 복습 차원에서 책 한권을 완독해보고자 합니다.
잘못된 정보가 있다면 댓글 남겨주시면 감사하겠습니다!
</aside>
스케줄링 정책
지금까지는 CPU 가상화를 구현하는 저수준의 기법인 “제한적 직접 실행”에 대해 알아 보았다. 제한적 직접실행을 통해 프로세스간 전환이 되는 과정(문맥 교환)을 이해하고 어떻게 운영체제의 주도하에 시스템(물리 장치들)을 관리 할 수 있는지 알 수 있었다.
그렇다면 운영체제는 어떤 원칙을 통해 프로세스를 전환할까?
- A 프로세스 실행중 타이머 인터럽트가 발생 했다. 수많은 프로세스중 어떤 프로세스로 전환할까?
운영체제는 특정한 원칙을 가지고 있고 이를 “스케쥴링 정책” 이라고 한다. 아래의 질문을 통해 어떻게 정책들이 발전해 왔는지 알아보고자 한다.
- 핵심 가정은 무엇일까?
- 어떤 평가 기준으로 정책을 평가할 수 있을까?
핵심 가정
아래의 가정들은 비현실적이긴 하지만 차차 가정을 줄여 나가면서 최종적으로 제대로 동작하는 스케쥴링 정책을 만들 수 있다.
- 모든 작업은 같은 시간동안 실행된다.
- 모든 작업은 동시에 도착한다.
- 각 작업은 시작되면 완료될 때 까지 실행된다.
- 모든 작업은 CPU만 사용한다.(입출력 등등 안함)
- 각 작업의 실행 시간은 사전에 알려져있다.
평가 항목
- 성능 측면
- 반환 시간 (turnaround time)
- 작업이 완료된 시간 - 작업이 도착한 시간
- 작업은 동시에 도착한다고 가정하였으므로 반환 시간은 작업이 완료된 시간임.
- 응답시간
- 작업이 도착할 때부터 처음 스케줄 될 때까지의 시간
- 시분할 컴퓨터의 등장으로 사용자가 터미널을 통해 시스템과 상호작용을 하기 시작하면서 요구됨
- 상호작용이 중요한 프로그램일 경우 짧을 수록 좋다
- 공정성 측면
- 기아 현상이 발생되지 않는지?
- 프로세스들이 공정하게 CPU를 차지할 수 있는지?
→ 성능과 공정성은 trade-off 관계에 있음
여러 스케쥴링 정책들
선입 선출 (FIFO)