`open()`, `mmap()` がもっと基本的な機能なのか、それとも両方ですか?

`open()`, `mmap()` がもっと基本的な機能なのか、それとも両方ですか?

Linuxカーネル内でファイルにアクセスするより基本的な方法ですかopen()mmap()「基本」とは、「最終的に別の関数を呼び出すのか、それとも別の関数の単純なヘルパー関数なのか」を意味します。

スタックネットワークには、これら2つの機能のパフォーマンスに関する質問がたくさんあります。この質問の目的は、まずLinuxカーネル内で何が起こっているのかを理解することです。open()呼び出しmmap()または本質的に実装されたヘルパー機能はありますかmmap()?それとも、デフォルトで実装されているいくつかのヘルパー関数をmmap()呼び出すか呼び出しますか?open()open()

質問のポイントは、これら2つのシステムコールが有効かどうかです。オリジナル他のものか一方が別のものの「利便性」かどうか。

ベストアンサー1

参考にしてくださいマッピング(2)しばしば一つが欲しいファイル記述子一般的に構成オープン(2);この意味でopenより根本的です。また参考にしてください仮想アドレス空間一部プロセス合格できるだけでなくmmap、、munmap保護(2)しかし、他人を通してシステムコール(含む実行(2);あなたはまた見ることができますshm_概要(7))

しかし、Linuxカーネルはそうではありません。使用 mmapまたはopenこれを提供して実装します(アプリケーションレベルの場合)。ユーザースペースプログラム)。

しかし、Linuxカーネル管理するページキャッシュこれはより基本的で関連性が高いです。両方 システムコール。また、見ることができますLinuxAteMyRamそして考慮おそらく使用クレイジーウェス(2)posix_fadvise(2)先読み(2)ページ・キャッシュ・サブシステムにメッセージを表示します。

これら2つのシステムコールは基本的に異なりますか?

すべてのシステムコール(リスト:システムコール(2)...) 違う。

また読んでください高度なLinuxプログラミングそしてオペレーティングシステム:3つの簡単な部分(どちらも無料でダウンロードできます)。

おすすめ記事