Kernel synchronization tools like spinlocks and semaphores are required to protect critical sections of code from being accessed simultaneously by different execution paths in the kernel like processes, interrupts, and bottom halves. Spinlocks provide synchronization by disabling interrupts and preemption, causing the locked process to wait actively in a loop. Semaphores block processes waiting for the lock. New ticket spinlocks were introduced to ensure locks are granted in request order on SMP systems. Atomic operations also provide synchronization through load-link/store-conditional instructions.