[解決済み] メモリマップドファイルの利点は何ですか?
2023-01-23 19:20:14
質問
私はあるプロジェクトのためにメモリ マップ ファイルについて調査しています。以前に使用したことのある人、または使用を断念した人、そしてその理由について、何かご意見をいただけないでしょうか。
特に、重要な順に、以下について懸念しています。
- 並行処理
- ランダムアクセス
- パフォーマンス
- 使いやすさ
- 移植性
どのように解決するのですか?
従来のファイルを読み込む方法よりも、必要なデータのコピー量を減らせるというのが、本当のところメリットだと思います。
アプリケーションがメモリ マップされたファイル内のデータを使用できる場合、データをコピーせずに読み込むことができます。システム コール (たとえば Linux の pread()) を使用する場合、通常カーネルが自身のバッファからユーザー空間にデータをコピーします。この余分なコピーには時間がかかるだけでなく、データの余分なコピーにアクセスすることにより、CPU のキャッシュの有効性を低下させます。
データが実際にディスクから読み込まれなければならない場合 (物理 I/O のように)、OS はまだそれらを読み込む必要があり、ページフォルトはおそらくシステムコールよりもパフォーマンス的に優れていませんが、そうでない場合 (すなわち、すでに OS キャッシュにある場合)、パフォーマンスは理論上はるかに優れているはずです。
欠点は、メモリ マップされたファイルへの非同期インターフェイスがないことです。マップされていないページにアクセスしようとすると、ページフォルトが発生し、スレッドは I/O のために待機することになります。
メモリ マップされたファイルの明らかな欠点は、32 ビット OS 上で、簡単にアドレス空間を使い果たすことができることです。
関連
-
[解決済み] 抽象メソッドと仮想メソッドの違いは何ですか?
-
[解決済み] 並行処理と並列処理の違いは何ですか?
-
[解決済み] べき乗演算とは何ですか?
-
[解決済み] フレームワークとライブラリの違いは何ですか?
-
[解決済み] アプリケーションやプロセスの実際のメモリ使用量を測定するにはどうすればよいですか?
-
[解決済み] Javaで、オブジェクトの大きさを決定する最も良い方法は何ですか?
-
[解決済み】ビットシフト(bit-shift)演算子とは、どのようなもので、どのように機能するのですか?
-
[解決済み] 直交性」とは何ですか?
-
[解決済み] リンクリストはどのような場合に有効か?
-
[解決済み] なぜナップザック問題は擬似多項式なのか?
最新
-
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 実装 サイバーパンク風ボタン