この記事では、 oplock の種類について説明します。
- 現在、4種類のoplockが利用可能です。
- 4 つの oplock 型はレガシーと見なされます。
従来の oplocks
次の 4 つの oplock は、Windows NT 3.1 (レベル 1、レベル 2、バッチ) と Windows 2000 (フィルター) で実装され、"レガシ oplocks" と見なされます。
レベル 1 (排他) オペロックを使用すると、クライアントは排他的アクセス用にストリームを開き、任意のバッファリングを実行できます。 この oplock は、クライアントの読み取りキャッシュと書き込みキャッシュをサポートします。
レベル 2 (共有) oplock は、ストリームのリーダーが複数あり、ライターがないことを示します。 この oplock は、クライアントの読み取りキャッシュをサポートします。
Batch oplock (排他) を使用すると、クライアント コンピューター上のローカル アクセサーがストリームを閉じている場合でも、クライアントはサーバー上でストリームを開いたままにできます。 この oplock は、バッチ スクリプトの実行中など、クライアントが同じファイルを繰り返し開いたり閉じたりする必要があるシナリオをサポートします。 クライアント読み取りキャッシュ、書き込みキャッシュ、およびハンドル キャッシュをサポートします。
フィルター 操作ロック (排他) を使用すると、他のアプリケーション、クライアント、またはその両方が同じストリームにアクセスしようとしたときに、ストリーム データを開いて読み取るアプリケーションおよびファイル システム フィルター ドライバーを "バックアウト" できます。 この oplock は、クライアントの読み取りキャッシュと書き込みキャッシュをサポートします。
現在の「Windows 7」オプポーチュニスティックロック
次の oplock は Windows 7 で追加され、総称して "Windows 7 oplocks" と呼ばれます。
Read (R) oplock (共有) は、ストリームに複数のリーダーが存在し、そのストリームに対して書き込みが行なわれていないことを示します。 このオプロックはクライアントの読み取りキャッシュをサポートします。
読み取りハンドル (RH) 操作ロック (共有) は、ストリームのリーダーが複数あり、ライターがなく、クライアント コンピューター上のローカル アクセサーがストリームを閉じても、クライアントがサーバー上でストリームを開いたままにできることを示します。 このオープロックは、クライアントの読み取りキャッシュとハンドルキャッシュをサポートします。
読み取り/書き込み (RW) オペロック (排他) を使用すると、クライアントは排他的アクセス用にストリームを開き、クライアントは任意のバッファリングを実行できます。 この oplock は、クライアントの読み取りキャッシュと書き込みキャッシュをサポートします。
読み取り/書き込みハンドル (RWH) 操作ロック (排他的) を使用すると、クライアント コンピューター上のローカル アクセサーがストリームを閉じている場合でも、クライアントはサーバー上でストリームを開いたままにできます。 この oplock は、クライアント読み取りキャッシュ、書き込みキャッシュ、およびハンドル キャッシュをサポートします。
一部の従来の oplock は、Windows 7 oplock と似ているように見える場合があります。 特に、R はレベル 2 に似ていますが、RW はレベル 1 に似ていますが、RWH は Batch に似ています。 しかし、実際には異なります。 Windows 7 oplock は次の機能に追加されました。
- 呼び出し元がキャッシュの意図を表現するための柔軟性を高めます。
- oplock の中断とアップグレードを許可する。つまり、1 つのレベルからより大きなキャッシュ レベルへの oplock 状態の変更を許可します (たとえば、読み取り oplock を Read-Write oplock にアップグレードする)。
この柔軟性は、従来の oplock では実現できません。