Process synchronization coordinates processes accessing shared resources to maintain consistency. When multiple processes access the same data concurrently, the outcome depends on the execution order. A critical section is code that can only be executed by one process at a time. It contains shared variables and resources. The critical section problem aims to satisfy mutual exclusion, progress, and bounded waiting to fairly control access to the critical section.