Существует несколько критических операций с памятью, для которых процессор устанавливает сигнал LOCK# автоматически. Эти операции:
Квитирующие прерывания. После запроса на прерывание внутренний контроллер использует шину данных для посылки процессору вектора прерывания для источника прерывания. Процессор устанавливает сигнал LOCK#, чтобы исключить появление в это время на шине любых других данных.
Установка бита Занят в дескрипторе TSS. При переключении на задачу процессор проверяет и устанавливает бит Занят поля Типа в дескрипторе TSS. Для исключения одновременного переключения двух процессоров на одну и ту же задачу процессор устанавливает во время проверки и установки этого бита сигнал LOCK#.
Обновление дескрипторов сегментов. При загрузке сегментного дескриптора процессор устанавливает бит Доступа, если этот бит очищен. Во время данной операции процессор также устанавливает сигнал LOCK#, чтобы дескриптор не мог быть модифицирован другим процессором в процессе его обновления данным процессором. Для эффективности этих действий процедуры операционной системы, выполняющие обновление дескрипторов, должны использовать следующие шаги:
Использовать при обновлении байта прав доступа для маркировки дескриптора как не-Присутствующего операцию с захватом, и задать значение поля Типа, указывающее на то, что происходит обновление дескриптора.
Обновить поля дескриптора. (Это может потребовать несколько операций доступа к памяти; следовательно, префикс LOCK неприменим).
Использовать при обновлении байта прав доступа для маркировки дескриптора как Достоверного и Присутствующего операцию с захватом.
Отметим, что процессор 386 DX всегда обновляет бит Доступа, независимо от того, очищен он или установлен. Процессор i496 обновляет бит Доступа только если он еще не установлен.
Обновление элементов каталога страниц и страничных таблиц. При обновлении элементов каталога страниц и страничных таблиц процессор использует циклы с захватом при установке битов Доступа и "Грязный".
Выполнение команды XCHG. Процессор i486 всегда устанавливает сигнал LOCK# во время команды XCHG, обращающейся к памяти (даже при отсутствии префикса LOCK).