운영체제의 CPU 스케쥴러는 Ready 상태의 프로세스중에서 어떤 프로세스에게 CPU를 할당할지 결정하는데 이를 CPU 스케줄링이라고 한다. 즉, OS가 CPU를 사용하려고 하는 프로세스들 사이의 우선순위를 관리하는 작업으로 자원을 어떤 프로세스에 얼마나 할당하는지 정책을 만드는 것이라고 볼 수 있다.
멀티프로세스 환경에서 CPU가 어떤 하나의 프로세스를 실행하고 있는 상태에서 인터럽트 요청에 의해 다음 우선 순위의 프로세스가 실행되어야 할 때 기존의 프로세스의 상태 또는 레지스터 값(Context)을 저장하고 CPU가 다음 프로세스를 수행하도록 새로운 프로세스의 상태 또는 레지스터 값(Context)를 교체하는 작업을 Context Switching이라고 한다.
비선점형의 경우에는 어떤 프로세스가 실행 상태에 들어가면 그 프로세스가 끝나거나 CPU를 자진 반납하는 경우가 아니라면 계속 실행되는 것을 말한다. Context Switch에 대한 오버헤드도 없고 스케쥴러가 할 일도 적어져 효율적일 수 있으나 전체 시스템의 처리율이 떨어지게 된다.
FCFS / SJF / 우선순위 스케줄링 등이 이에 해당한다.
선착순 처리 방식이다.
작업 시간이 짧은 순서대로 CPU가 처리하는 방식이다.
선점형의 경우에는 운영체제가 필요하다고 판단하면 실행 상테에 있는 프로세스의 작업을 중단시키고 새로운 작업을 시작할 수 있다. Timeout 상황, I/O Interrupt, System call 등이 발생한 경우에 현재 실행 상태에 있는 프로세스의 CPU를 강제 회수하고 다른 프로세스에게 CPU를 할당해줄 수 있는 스케줄링 방식이다.
라운드 로빈 / SRT / 다단계 큐 / 다단계 피드백 큐 스케줄링 등이 이에 해당한다.
작업 시간이 짧은 순서대로 CPU가 처리하되, 더 짧은 작업이 오면 진행중이던 프로세싱도 멈추고 처리하는 방식이다.
대기 큐의 순서대로 처리하되, 정해진 시간만큼만 작업을 처리하고 다음 작업으로 넘기는 방식이다.
작업 그룹별로 별개의 큐를 운용하는 스케줄링 기법이다.
새로운 프로세스에 높은 우선권을 주되, 점차 낮은 우선순위로 밀려나 라운드 로빈을 수행하게 되는 방식이다.
https://star7sss.tistory.com/931
https://kjhoon0330.tistory.com/entry/%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9COS-CPU-%EC%8A%A4%EC%BC%80%EC%A4%84%EB%A7%81
https://velog.io/@mooh2jj/CPU-%EC%8A%A4%EC%BC%80%EC%A5%B4%EB%A7%81-%EC%A0%95%EB%A6%AC
https://velog.io/@mooh2jj/CPU-%EC%8A%A4%EC%BC%80%EC%A5%B4%EB%A7%81-%EC%A0%95%EB%A6%AC
https://dev-coco.tistory.com/162