Защелки. (Latching)

Защелки используются для защиты структур памяти от записи другим процессом. По смыслу это тоже самое что и локировка, но защелка имеет более ограничивающий характер – eсли процесс залокировал от записи ресурс памяти с помощью защелки, то другие процессы не могут даже читать этот ресурс. Защелка также более простая структура, за счет отсутствия поддержки очередей ожидания. Здесь также используются простые и атомарные операции работы с CPU (tests and sets, load and clear, compare and swap). Благодаря этому, использование защелки требует мало ресурсов и поэтому эффективнее других механизмов защиты памяти.

Защелка применяется в основном для защиты памяти SGA, там где требуется скорость, но по причине эксклюзивного доступа, защелка не должна быть использована продолжительно. (Эксклюзивный доступ как пример источника проблем хорошо иллюстрирует проблемы с парсингом shared pool’a, где защелка держится на весь период парсинга)

Если процесс хочет получить доступ к ресурсам защищаемым защелкой, то используются два режим ожидания: willing to wait или immediate. В первом случае, процесс предполагает что ресурс скоро освободится, поэтому он решает ждать. В этом случае, для ожидания, процесс делает холостую нагрузку на процессор. Для операционной системы, однако, эта нагрузка вполне реальная загрузка процессора которая влияет на работу всей системы. Зачем же тогда для ожидания использовать процессор таким влияющим на работу другим способом? Почему бы просто не освободить процессор и сделать его доступным для других процессов?

Дело в том, что бы освободить процессор необходимо переключение контекста процессора. Переключение контекста – дорогостоящая операция: освобождение значений регистров, их сохранение, поиск следующего процесса и заполнение значений регистров, поиск и изменение структур ядра, которые защищены локировками оп. системы. Поэтому в большинстве случаев, простое ожидание на CPU, выгоднее чем переключение контекста (кончно, в случае когда выполняется условие кратковременности использования защелки).

Следует заметить, что использование такого ожидания имеет смысл только для многопроцессорных систем, для однопроцессорной системы, такое ожидание не выгодно и использоваться не будет.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s