This document discusses CPU scheduling and virtual machines. It covers shortest job first (SJF) scheduling, round robin scheduling, and priority scheduling. It defines CPU scheduling as allowing processes to share the CPU while waiting for resources. The dispatcher switches processes and context. Scheduling criteria include CPU utilization, throughput, turnaround time, waiting time, and response time. Virtual machines emulate hardware and allow multiple guest operating systems to run concurrently on a single host machine.