This document discusses CPU scheduling algorithms. It begins by defining key concepts like multiprogramming, jobs, processes, and preemptive scheduling. It then covers scheduling criteria for performance evaluation like utilization, throughput, and response time. The rest of the document explains common scheduling algorithms like first-come first-served (FCFS), shortest job first (SJF), preemptive scheduling, priority-based scheduling, and round robin scheduling. It provides examples to calculate metrics like average wait time under each algorithm.