Появление многопроцессорных систем стало причиной возникновения нового класса проблем синхронизации. Защита ядра, основанная на отсутствии вытеснения, здесь уже не может быть применена. В одно процессорных системах ядро может производить манипуляции с большинством структур данных, не опасаясь за их целостность, так как работа ядра не может быть вытеснена никем. Необходимо защищать только те данные, которые могут оказаться доступны обработчикам прерываний, а также те, целостность которых зависит от работы вызова sleep().
В многопроцессорных системах два процесса в состоянии одновременно выполняться в режиме ядра на разных процессорах, а также выполнять параллельно одну и ту же функцию. Таким образом, каждый раз, когда ядро обращается к глобальным структурам данных, оно должно защищать их от получения доступа с других процессоров. Сами механизмы защиты также должны быть/защищены от особенностей выполнения в многопроцессорных системах/Если два процесса, выполняющиеся на различных процессорах, попытаются одновременно заблокировать один и тот же объект, только один должен завершить успешно эту процедуру.
Защита от прерываний является достаточно сложной задачей, так как все процессоры могут обрабатывать прерывания. Нецелесообразно производить блокировку на каждом процессоре, так как это чревато значительным снижением производительности системы. Многопроцессорные системы требуют более сложных механизмов синхронизации, которые будут подробнее описаны.