Cooperating processes work together to complete tasks by sharing resources like CPU, memory, and I/O devices. They communicate using shared memory or message passing. Shared memory allows faster communication by sharing an address space, while message passing is slower but can be used across devices. The critical section problem occurs when multiple processes access shared resources simultaneously, potentially corrupting data. Solutions ensure mutual exclusion so only one process is in the critical section at a time through techniques like disabling interrupts or using lock variables.