Типы оплоков

В этой статье описываются типы oplocks.

  • Существует четыре типа оплоков.
  • Четыре типа oplock считаются устаревшими.

Устаревшие оплоки

В Windows NT 3.1 (Уровень 1, Уровень 2, Пакетный) и Windows 2000 (Фильтр) были реализованы четыре оплока, которые считаются устаревшими.

  • Оплок уровня 1 (эксклюзивный) позволяет клиенту открывать поток для монопольного доступа и выполнять произвольную буферизацию. Эта операция поддерживает кэширование и кэширование записи клиента.

  • Оплок уровня 2 (общий) указывает, что существует несколько читателей потока и нет средств записи. Эта oplock поддерживает клиентское кэширование чтения.

  • Пакетная блокировка (эксклюзивная) позволяет клиенту удерживать поток открытым на сервере, даже если локальный доступ на клиентском компьютере закрыл поток. Эта оплок поддерживает сценарии, в которых клиенту необходимо многократно открывать и закрывать один и тот же файл, например во время выполнения пакетного скрипта. Он поддерживает кэширование клиентского чтения, кэширование записи и кэширование хендлов.

  • Фильтр oplock (монопольный) предоставляет приложениям и драйверам фильтров файловой системы, которые открывают и считывают потоковые данные, возможность "откатываться", когда другие приложения или клиенты пытаются получить доступ к тому же потоку. Оплок поддерживает кэширование чтения и кэширование записи клиента.

Текущие операции с Windows 7

Следующие оплоки были добавлены в Windows 7, и поэтому совместно называются "Windows 7 oplocks":

  • Оплок Read (R) (общий доступ) указывает на наличие нескольких читателей потока и отсутствие писателей. Эта oplock поддерживает кэширование чтения клиента.

  • Read-Handle (RH) оплок (общий) указывает, что имеется несколько читателей потока, без писателей, и что клиент может удерживать поток открытым на сервере, даже если локальный доступ на клиентском компьютере закрыл поток. Этот oplock поддерживает кэширование для чтения и кэширование дескрипторов.

  • Оплок чтения и записи (RW) позволяет клиенту эксклюзивно открывать поток для монопольного доступа и выполнять произвольную буферизацию. Этот оплок поддерживает кэширование чтения и кэширование записи клиента.

  • Эксклюзивная блокировка RWH (чтение-запись-управление) позволяет клиенту сохранять поток открытым на сервере, даже если локальный потребитель на клиентском компьютере закрыл поток. Эта оппортунистическая блокировка поддерживает кэширование чтения, кэширование записи и кэширование дескрипторов.

Некоторые устаревшие oplocks могут показаться похожими на oplocks в Windows 7. В частности, R кажется похожим на уровень 2, RW кажется похожим на уровень 1, и RWH кажется похожим на пакетную обработку. Но они действительно разные. Функция оппортунистических блокировок (oplocks) была добавлена в Windows 7:

  • Обеспечивает большую гибкость для вызывающего абонента, чтобы выразить намерения кэширования.
  • Разрешить прерывания и обновления оплоков; то есть, позволить изменять состояние оплока с одного уровня на уровень с большим кэшированием (например, обновление оплока чтения до оплока Read-Write).

Эта гибкость не достижима при использовании устаревших оплоков.