This document covers CPU scheduling in operating systems, discussing various scheduling algorithms and criteria, including fairness, throughput, and resource utilization. It explains fundamental concepts such as the role of the CPU scheduler, dispatcher, and the difference between preemptive and non-preemptive scheduling. Multiple algorithms are introduced, including First-Come, First-Served, Shortest Job First, and Priority Scheduling, along with their advantages and disadvantages in terms of performance and resource management.