Linuxファイルの処理

Linuxファイルの処理

複数のプロセスで同時にファイルを更新したいと思います。これらのプロセスはすべて並列書き込み用にファイルを開きます。

使用される略語:

  • f:文書、
  • p[i]:プロセスi
  • b[i]i:プロセスによって開かれたFDバッファですi

質問:

  1. ファイルが開き、ストリームが設定されると、fpath内部でinode番号に変換されますか? inodeはパーティション内でのみ一意であることを読みました。
  2. 同じファイルが並列に開くと、Linuxはどのように書き込みを管理しますか?
  3. いっぱいになるとb[1]フラッシュされます。これは誰もがp[i]ファイルの変更を見始めるということですか?これは起こらないでしょう。それでは、バッファの内容が更新される場所はどこですか? COWが発生した場合、Linuxはディスク上にダーティページのコピーを作成することを意味しますか?それともMVCCに似たものはありますか? (すべてのページをコピーするのではなくダーティページのみを書き換えるとします。そうしないと、大容量ファイルを変更するのは面倒です。)
  4. 実験的にviエディタを使ってファイルを開いてみました。端末とエディタを使用してファイルを削除し、ファイルにテキストを追加して保存しました。ファイルが再生成されました。別のケースでは、ファイルを編集せずにエディタで閉じると、ファイルはもう存在しません。 COWが動作しているようです。しかし、2番目のケースではファイルが削除されたため、COWはファイルのメモリページを使用してファイルを再生成しますか?ファイルサイズは10GBですが、すぐにメモリに入らないとどうなりますか?

関連情報