This document discusses CPU scheduling in operating systems. It introduces CPU scheduling as the basis for multiprogrammed operating systems. Various scheduling algorithms are described such as first-come first-served (FCFS), shortest job first (SJF), priority scheduling, and round robin (RR). Evaluation criteria for scheduling algorithms like CPU utilization, throughput, turnaround time, and waiting time are also presented. Multilevel queue and multilevel feedback queue scheduling are discussed as ways to improve performance.