선점형 스케줄링

어떤 프로세스가 CPU를 할당받아 실행 중이더라도 운영체제가 CPU를 강제로 빼앗을 수 있는 스케줄링 방식

비선점형 스케줄링

어떤 프로세스가 CPU를 점유하면 다른 프로세스가 이를 빼앗을 수 없는 스케줄링 방식

선점형 스케줄링에서는 운영체제가 필요하다고 판단하면 실행 상태에 있는 프로세스의 작업을 중단하고

새로운 작업을 실행할 수 있다.

대표적인 예로는 인터럽트 처리

CPU가 인터럽트를 받으면 현재 실행중인 작업을 중단하고 커널을 깨워서 인터럽트를 처리하고,

인터럽트 처리가 완료되면 원래의 작업으로 되돌아간다.

선점형 스케줄링은 문맥 교환 같은 부가적인 작업으로 인해 낭비가 생기는 것이 단점이다.

그러나 하나의 프로세스가 CPU를 독점하지 않기 때문에 빠른 응답시간을 요구하는 대화형 시스템이나

시분할 시스템에 적합하다.

비선점형 스케줄링에서는 어떤 프로세스가 실행 상태에 들어가 CPU를 사용하면 그 프로세스가 종료되거나

자발적으로 대기 상태가 될 때까지는 계속 실행된다.

스케줄러의 작업량이 적고 문맥교환에 의한 낭비도 적다. 그러나 하나의 긴 프로세스가 실행된다면

다른 프로세스들이 오래 기다리게 되어 전체 시스템의 처리율이 떨어진다.

선점형 스케줄링 방식의 스케줄러에도 비선점형 프로세스가 존재한다.