This document discusses processes and threads. It begins by defining processes and describing their states, creation, termination, and hierarchies. It then defines threads as components within processes that can run concurrently. Various methods for implementing and scheduling threads are described, including in user space, kernel space, and hybrid approaches. Interprocess communication techniques like critical sections, semaphores, mutexes, monitors, and message passing are covered. Classical synchronization problems like the dining philosophers, readers/writers, and sleeping barber are also summarized along with their solutions.