This document discusses distributed operating systems and CPU scheduling. It covers basic concepts of CPU scheduling like processes, context switching, and dispatching. It then discusses different scheduling algorithms like first-come first-served, shortest job first, priority scheduling, and round robin. It also covers multiple processor scheduling, real-time scheduling, and algorithm evaluation. Deadlocks are discussed including characterization, handling methods like prevention, avoidance, and detection. Memory management techniques like swapping, paging, segmentation and their implementation are also summarized.