This document discusses CPU scheduling algorithms in operating systems. It begins with an overview of basic CPU scheduling concepts like multiprogramming and context switching. It then discusses important scheduling criteria like CPU utilization, throughput, response time, waiting time and turnaround time. Common single-processor scheduling algorithms are introduced, including First Come First Served (FCFS), Shortest Job First (SJF), priority scheduling, and round robin. Examples are provided to illustrate how each algorithm works. Key scheduling terms are also defined.