本文說明 oplocks 的類型。
- 目前有四種 oplock 類型。
- 四種 oplock 類型會被視為舊版。
舊版 oplocks
下列四種 oplock 是在 Windows NT 3.1(Level 1、Level 2、Batch)和 Windows 2000(Filter)中實作的,並被視為「舊版 oplocks」:
層級 1 (獨佔) oplock 可讓客戶端開啟數據流以進行獨佔存取,以及執行任意緩衝處理。 此 oplock 支援用戶端的讀快取與寫快取。
層級 2 (共用) oplock 表示數據流有多個讀取器且沒有寫入器。 此 oplock 支援用戶端讀取快取。
Batch oplock (獨佔) 可讓用戶端在伺服器上保持數據流開啟,即使用戶端電腦上的本機存取子已關閉數據流也一樣。 此 oplock 支援用戶端需要重複開啟和關閉相同檔案的案例,例如在批次腳本執行期間。 它支援用戶端讀取快取、寫入快取,以及處理快取。
當其他應用程式、用戶端或兩者同時嘗試存取相同的數據流時,Filter oplock(獨佔)允許應用程式和檔案系統過濾器驅動程式以開啟和讀取串流數據的方式「退出」。 此 oplock 支援客戶端讀取快取和寫入快取。
目前的 「Windows 7」 oplocks
Windows 7 中新增了下列 oplock,因此統稱為“Windows 7 oplocks” :
Read (R) oplock (shared) 表示數據流有多個讀取器且沒有寫入器。 此 oplock 支援用戶端讀取緩存。
讀取-處理(RH)oplock(共享)表示數據流有多個讀取器,但沒有寫入器,且即使用戶端電腦上的本機應用程式已關閉數據流,用戶端仍能在伺服器上保持數據流開啟。 此 oplock 支援客戶端讀取快取和處理快取。
讀寫(RW)獨佔鎖允許客戶端開啟數據流以獨佔存取並執行任意緩衝處理。 此 oplock 支援用戶端讀取快取和寫入快取。
讀寫處理(RWH)獨佔 oplock 可以讓客戶端在伺服器上保持數據流持續開啟,即便客戶端本機上的存取子已關閉數據流。 此oplock支援用戶端讀取快取、寫入快取,以及處理快取。
某些舊版 Oplocks 可能看起來與 Windows 7 的 Oplocks 相似。 特別是 R 似乎與層級 2 類似,RW 似乎與層級 1 類似,而 RWH 似乎與 Batch 類似。 但他們確實不同了。 Windows 7 oplocks 已新增至:
- 提供呼叫者更多的彈性,以表達快取目的。
- 允許 oplock 中斷和升級;也就是說,允許將 oplock 狀態從一個層級修改為更高快取層級(例如,將 Read oplock 升級至 Read-Write oplock)。
舊版 oplocks 無法達成此彈性。