CPU 스케쥴링 알고리즘에는 현재 처리중인 작업을 모두 완료하고 다음 작업을 처리하는 비선점 방식과, 정해진 규칙에 따라 우선순위가 높은 다음 프로세스로 작업을 이행하는 선점 방식이 있다.
먼저 도착한 프로세스부터 처리하고, 도착한 순서대로 다음 프로세스를 처리하는 방식이다.
작업 시간이 긴 프로세스가 도착하면 뒤에 프로세스가 오래 대기해야하는 단점이 있다.

도착한 프로세스들 중에서 작업 시간이 가장 짧은 프로세스 부터 처리하는 방식이다.
작업 시간이 짧은 프로세스를 우선적으로 처리함으로써 평균 대기시간을 낮출 수 있는 장점이 있다.

작업 대기 큐에 있는 프로세스가 정해진 우선순위에 따라 처리되는 방식이다.
실행 중에 더 높은 우선순위를 가진 프로세스가 도착하면 문맥 교환이 일어나는 선점 방식의 우선 순위 스케쥴링 방식도 존재한다.

프로세스를 정해진 Time Slice (시간 할당량) 만큼 처리한 후 대기 큐에 있는 프로세스를 처리하는 방식이다. 새로 도착한 프로세스와 정해진 시간만큼 실행이 완료된 프로세스는 대기 큐의 끝에 들어간다.
타임 슬라이스를 작게 할당하면, 멀티 쓰레드 상에서 동시에 프로세스를 처리하는 것 같이 보이는 효과를 낼 수 있지만, 잦은 문맥 교환(Context Switching)에 작업 효율이 떨어지게된다.
반대로 타임 슬라이스를 너무 크게 할당하면, 먼저 도착한 프로세스를 끝까지 처리하는 FCFS 방식과 유사하게 된다.

SJF의 선점형 방식으로, 프로세스 처리 중간에 남은 작업 시간이 더 짧은 프로세스가 들어오면, 해당 프로세스에 작업을 넘겨주는 방식이다.

참고