Kernel synchronization methods are required to prevent race conditions when shared resources are accessed concurrently by multiple threads. The Linux kernel supports various synchronization primitives including atomic operations, spin locks, semaphores, mutexes, completion variables, and the big kernel lock. Each method has advantages and limitations depending on whether the resource can be accessed in interrupt context or while sleeping. More complex schemes like reader-writer locks and sequential locks also provide alternatives to binary locks.