This document outlines Chapter 6 on synchronization from the textbook "Operating System Concepts" by Silberschatz, Galvin and Gagne. It discusses the critical section problem that can occur when processes access shared resources concurrently. Specifically, it describes how a race condition can cause data inconsistencies. It then presents Peterson's solution for solving the critical section problem with two processes using shared variables in a way that satisfies mutual exclusion, progress, and bounded waiting. Finally, it discusses hardware support for synchronization including memory barriers, compare-and-swap operations, and atomic variables.