oplock 的类型

本文介绍 oplock 的类型

  • 当前有四种 oplock 类型。
  • 四种 Oplock 类型被视为旧版的。

旧版 oplocks

以下四种 oplock 在 Windows NT 3.1(Level 1、Level 2、批量)和 Windows 2000(筛选器)中实现,并被视为“旧版 oplock”:

  • 级别 1 (独占) oplock 允许客户端打开流进行独占访问和执行任意缓冲。 此 oplock 支持客户端读取缓存和写入缓存。

  • 级别 2(共享)机会锁表示一个流中有多个读取者,而没有写入者。 此 oplock 支持客户端读取缓存。

  • Batch oplock(独占)允许客户端在服务器上保持流打开状态,即使客户端计算机上的本地访问器已关闭流。 此 oplock 支持客户端需要重复打开和关闭同一文件的情况,例如在批处理脚本执行期间。 它支持客户端读取缓存、写入缓存和处理缓存。

  • 筛选器 用于排他锁(exclusive oplock)允许应用程序和文件系统筛选器驱动程序在其他应用程序、客户端或两者都尝试访问同一流时打开和读取流数据,这提供了一种在必要时撤回的途径。 此 oplock 支持客户端读取缓存和写入缓存。

当前“Windows 7” oplocks

在 Windows 7 中添加了以下 oplock,因此统称为“Windows 7 oplocks” :

  • 读取(R)oplock(共享)表示流有多个读取者,并且没有写入者。 此 oplock 支持客户端读取缓存。

  • 读取句柄(RH)oplock(共享)指示流有多个读取器,没有编写器,客户端可以在服务器上保持流打开状态,即使客户端计算机上的本地访问器已关闭流。 此 oplock 支持客户端读取缓存和句柄缓存。

  • 读写(RW)oplock(独占)允许客户端打开流进行独占访问,并允许客户端执行任意缓冲。 此 oplock 支持客户端读取缓存和写入缓存。

  • 读写句柄(RWH)oplock(独占)允许客户端在服务器上保持流打开状态,即使客户端计算机上的本地访问器已关闭流。 此 oplock 支持客户端读取缓存、写入缓存和处理缓存。

某些旧版 oplock 似乎类似于 Windows 7 oplock。 具体而言,R 似乎类似于级别 2,RW 似乎类似于级别 1,RWH 似乎类似于 Batch。 但他们确实不同了。 已将机会锁添加到 Windows 7:

  • 为调用方表达缓存意图提供了更大的灵活性。
  • 允许 oplock 中断和升级,也就是说,允许将 oplock 状态从一个级别修改为更高的缓存效率(例如,将读取 oplock 升级到 Read-Write oplock)。

旧版 oplock 无法实现这种灵活性。