ファイルシステムはどのように同時読み取り/書き込みを処理するのですか?
2023-10-16 11:21:50
質問
ユーザAがシステムに対してファイル
foo
を読み込むように要求し、同時にユーザーBが同じファイルに自分のデータを保存することを望んでいます。この状況は、ファイルシステムレベルでどのように処理されるのでしょうか?
どのように解決するのですか?
ほとんどのファイルシステム (すべてではありません) は、同じファイルへの同時アクセスを保護するためにロックを使用します。ロックは排他的であり、最初にロックを取得したユーザーがアクセスを取得し、それ以降のユーザーは "アクセス拒否" エラーを取得します。この例のシナリオでは、ユーザー A はファイルを読むことができ、ファイル ロックを取得しますが、ユーザー B はユーザー A が読んでいる間、書き込むことができません。
一部のファイル システム (例: NTFS) では、ロック レベルを指定することができ、たとえば、同時読み取りは可能だが書き込みはできないようにすることができます。バイトレンジのロックも可能です。
データベースとは異なり、ファイルシステムは一般的にトランザクションではなく、アトミックでもなく、異なるユーザーからの変更は分離されません (変更が見られるとしても、ロックはこれを禁止しているかもしれません)。
ファイル全体のロックを使用することは、粒度の粗いアプローチですが、一貫性のない更新から保護することができます。すべてのファイルシステムがファイル全体のロックをサポートしているわけではないので、ロック ファイルを使用するのが一般的なプラクティスです。(ファイルの作成は、ほとんどのファイル システムでアトミックな操作です)。
関連
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン