CPU나 자원을 효과적, 생산적으로 사용하기 위한 소프트웨어적 계획이다.
이는 공정한 처리, 처리율 증가, 이용률 증가, 오버헤드 최소화, 응답/반환 시간 최소화, 무한대기 상태 회피 등 여러가지 목적을 갖는다.
프로세스 스케줄링 기법은 크게 선점형(Preemptive), 비선점형(Non-Preemptive)으로 나눌 수 있다.
먼저 도착한 프로세스를 먼저 처리하는 비선점형 알고리즘.

평균 반환 시간은 (3+4+8)/3=5
평균 대기 시간은 (0+3+4)/3=2.5xx
실행 시간이 가장 짧은 프로세스에 먼저 프로세서를 할당하는 비선점형 알고리즘

평균 반환 시간은 (1+4+8)/3=4.33
평균 대기 시간은 (0+1+4)/3=1.66
대기 시간과 서비스 시간을 이용하는 비선점형 알고리즘.
우선순위를 계산하여 그 숫자가 가장 높은 것부터 프로세서를 할당하며 우선 순위 계산식은 다음과 같다.
우선순위 = (대기시간 + 서비스시간) / 서비스시간

프로세스에게 일정한 시간을 주어 그 시간 안에 프로세스를 완료하도록 하는 기법
시스템은 프로세스에게 할당할 정확한 시간을 추정해야함.
FCFS 스케줄링을 변경한 선점형 알고리즘으로 할당시간(Time slice)를 설정하여 그 시간 동안만 프로세스가 수행할 수 있도록함. 단, 할당시간이 너무 길면 FCFS와 동일해지고, 너무 짧으면 Context switching, Overhead가 증가하는 문제가 발생함.

현재 실행 중인 프로세스의 남은 시간과 준비 상태 큐에 새로 도착한 프로세스의 실행 시간을 비교하여 가장 짧은 실행시간 먼저 처리
프로세스들을 우선 순위에 따라 단계 별 큐를 배치하는 스케줄링 기법