This document discusses various CPU scheduling algorithms used in operating systems. It describes the role of the CPU scheduler and dispatcher in selecting processes to run. Common scheduling criteria like CPU utilization, throughput, turnaround time and waiting time are discussed. First Come First Served (FCFS) scheduling and its example are provided. Shortest Job First (SJF) scheduling, both preemptive and non-preemptive variants, are explained with examples. Round Robin scheduling is described where each process gets a time quantum or time slice before being preempted. Other scheduling algorithms like priority scheduling are also covered briefly.