ファイルがメモリマップされているかどうかはどうすればわかりますか?

ファイルがメモリマップされているかどうかはどうすればわかりますか?

メモリマッピングファイルについて混乱しているので、いくつかの質問があります。助けてくれてとても嬉しいです。

  1. ファイルシステムのディレクトリに移動しましたが、そのディレクトリにファイルがあるとします。このファイルがディスク領域ではなくメインメモリ領域を指すことは可能ですか?
  2. これが可能であれば、これは私たちが「メモリマッピングファイル」と呼ぶものですか?
  3. ファイルシステムでこれらのファイルを移動する目的は何ですか(つまり、そのファイルをあるディレクトリから別のディレクトリに移動すること)mv。私が理解しているのは、ファイルがメモリマップされているため、ファイルとやり取りするプロセスは、常にメインメモリの事前定義された領域に書き込んでファイルを開くとき(たとえば、使用してvimディスクを含まない)ということです。したがって、ファイルをどこに移動しても常に機能します。そうですか?もしそうなら、ファイルシステムからファイルを移動することに意味がありますか?
  4. ファイルがメモリマップされているかどうかを知るためのコマンドはありますか?
  5. 最後に、を使用してメモリマップされたファイルを開き、vimいくつかの変更を行った後に保存して閉じるとvimどうなりますか?私の変更は単にメインメモリに書き込まれますか?この場合、そのファイルを使用する他のプロセスで私が変更したばかりのものを見ることができますか?私の経験によれば、ファイルをいくつか変更すると、他のプロセスはファイルへの変更を見ることができませんvim。その理由は何ですか?

ベストアンサー1

メモリマッピングファイルはまったく逆の方法で動作します。メモリマッピングは、ファイルの属性ではなく、ファイルにアクセスする方法です。プロセスは、ファイルの内容(またはファイルのサブセット)をアドレス空間にマッピングできます。これにより、ファイルを読みやすく読みやすくなります。これを行うには、メモリから読み書きするだけです。ディスク上のファイル自体は他のファイルと同じです。

これを設定するために、プロセスは以下を使用します。mmap機能。これは、プロセス間のメモリ共有などの他の目的にも使用できます。

おすすめ記事