This document presents an overview of process synchronization techniques. It discusses the critical section problem and provides solutions like Peterson's algorithm and semaphores. Classical synchronization problems like the bounded buffer, readers-writers, and dining philosophers problems are explained. The document also covers concepts like deadlock, starvation, and monitors. The objectives are to introduce software and hardware solutions for shared data consistency and describe mechanisms for ensuring atomic transactions.