CPU 스케줄러 : 다중 프로그램 운영체제의 기본
운영체제는 CPU를 프로세스 간에 교환함으로써, 컴퓨터를 보다 생산적으로 만든다.
멀티 프로그래밍의 목적 : CPU 이용률을 최대화하기 위해 항상 실행 중인 프로세스를 가지게 하는데 있다.
Ready Queue에 있는 프로세스 중에 CPU를 **할당(allocate)**할 수 있는 프로세스 선택
다음 프로세스를 어떻게 선택 할 것인지?
→ Linked List or Binary Tree
→ FIFO Queue, Priority Queue
CPU 스케줄링은 4가지 상황에서 발생할 수 있다.
비선점 스케줄링
CPU가 프로세스에 할당되면 프로세스가 종료(ternimate), Waiting으로 전환
→ 운영체제가 실행중인 프로세스로부터 CPU를 회수할 수 없다.(1, 4)
필요한 Context Switch만 일어나므로 overhead가 상대적으로 적지만 프로세스의 배치에 따라 효율성 차이가 많이 난다.
선점 스케줄링
시분할 시스템에서 타임 슬라이스가 소진되었거나, 인터럽트나 시스템 호출 종료시에 더 높은 우선 순위 프로세스가 발생
→ 운영체제가 실행중인 프로세스로부터 강제로 CPU를 회수할 수 있다. (2, 3)
CPU 처리 시간이 매우 긴 프로세스의 CPU 사용 독점을 막을 수 있어 효율적인 운영 가능
잦은 Context Switch가 발생해서 overhead가 커질 수 있다.
