oplock の種類

この記事では、便宜的ロックの種類について説明します。

  • 4 種類の便宜的ロックが現在の状態です。
  • 4 つの便宜的ロック型はレガシと見なされます。

従来の便宜的ロック

次の 4 つの便宜的ロックは、Windows NT 3.1 (レベル 1、レベル 2、バッチ) と Windows 2000 (フィルター) で実装され、"レガシ便宜的ロック" と見なされます。

  • レベル 1 (排他) 便宜的ロックを使用すると、クライアントは排他的アクセス用にストリームを開き、任意のバッファリングを実行できます。 この便宜的ロックは、クライアントの読み取りキャッシュと書き込みキャッシュをサポートします。

  • レベル 2 (共有) 便宜的ロックは、ストリームのリーダーが複数あり、ライターがないことを示します。 この便宜的ロックは、クライアントの読み取りキャッシュをサポートします。

  • バッチ」便宜的ロック (排他) を使用すると、クライアント コンピューター上のローカル アクセサーがストリームを閉じている場合でも、クライアントはサーバー上でストリームを開いたままにできます。 この便宜的ロックは、バッチ スクリプトの実行中など、クライアントが同じファイルを繰り返し開いたり閉じたりする必要があるシナリオをサポートします。 クライアント読み取りキャッシュ、書き込みキャッシュ、およびハンドル キャッシュをサポートします。

  • フィルター」便宜的ロック (排他) を使用すると、他のアプリケーション、クライアント、またはその両方が同じストリームにアクセスしようとしたときに、ストリーム データを開いて読み取るアプリケーションおよびファイル システム フィルター ドライバーを "バックアウト" できます。 この便宜的ロックは、クライアントの読み取りキャッシュと書き込みキャッシュをサポートします。

現在の "Windows 7" 便宜的ロック

次の便宜的ロックは Windows 7 で追加され、総称して "Windows 7 便宜的ロック" と呼ばれます。

  • 読み取り」 (R) 便宜的ロックは、ストリームのリーダーが複数あり、ライターがないことを示します。 この便宜的ロックは、クライアントの読み取りキャッシュをサポートします。

  • 読み取りハンドル」 (RH) 便宜的ロック (共有) は、ストリームのリーダーが複数あり、ライターがなく、クライアント コンピューター上のローカル アクセサーがストリームを閉じても、クライアントがサーバー上でストリームを開いたままにできることを示します。 この便宜的ロックは、クライアントの読み取りキャッシュとハンドル キャッシュをサポートします。

  • 読み取り/書き込み」 (RW) 便宜的ロック (排他) を使用すると、クライアントは排他的アクセス用にストリームを開き、クライアントは任意のバッファリングを実行できます。 この便宜的ロックは、クライアントの読み取りキャッシュと書き込みキャッシュをサポートします。

  • 読み取り/書き込み ハンドル」 (RWH) 便宜的ロック (排他) を使用すると、クライアント コンピューター上のローカル アクセサーがストリームを閉じている場合でも、クライアントはサーバー上でストリームを開いたままにできます。 便宜的ロックはクライアント読み取りキャッシュ、書き込みキャッシュ、およびハンドル キャッシュをサポートします。

一部の従来の便宜的ロックは、Windows 7 便宜的ロックと似ているように見える場合があります。 特に、R は「レベル 2」に似ており、RW は「レベル 1」に似ており、RWH は「バッチ」に似ています。 しかし、実際には異なります。 Windows 7 便宜的ロックは次の機能に追加されました。

  • 呼び出し元がキャッシュの意図を表現するための柔軟性を高めます。
  • 便宜的ロックの中断とアップグレードを許可する。つまり、1 つのレベルからより大きなキャッシュ レベルへの便宜的ロック状態の変更を許可します (たとえば、読み取り便宜的ロックを読み取り/書き込み便宜的ロックにアップグレードする)。

この柔軟性は、従来の便宜的ロックでは実現できません。