Оппортунистические блокировки
Сетевая производительность увеличивается, если клиент может локально буферизовать данные файла. Это связано с тем, что клиент не должен записывать информацию в файл на сервере, если знает, что никакой другой процесс не получает доступа к данным. Таким же образом клиент может буферизовать данные опережающего считывания из файла, если знает, что никакой другой процесс не записывает данные.
Оппортунистические блокировки, или oplocks, позволяют клиентам динамически изменять их стратегию буферизации согласованным образом. Все версии SMB из LAN-MAN 1.0 способствуют поддержке oplocks.
Три различных вида оппортунистических блокировок перечислены ниже.
1. Исключающая oplock позволяет клиенту открыть файл для своего собственного персонального использования, чтобы выполнить произвольную буферизацию.
2. Пакетная oplock позволяет клиенту держать на сервере открытый файл, даже если локальное средство доступа (accessor) на клиентской м шине закрыло файл.
3. Level II oplock позволяет нескольким машинам читать файл, если среди них нет записывающих клиентов. Level II oplock поддерживаются в том случае, если согласованный диалект будет LM 0.12 или больше.
Открыв файл, клиент запрашивает сервер задать на файле определенную oplock. Ответ сервера указывает тип oplock, предоставленный клиенту, позволяя ему соответствующим образом настроить свою политику буферизации.
SMB_COM_LOCKING_ANDX SMB используется для передачи информации ответа и прерывания oplock. Рассмотрим каждый из этих механизмов блокирования более подробно.
