CS:APPの本のこの図はよくわかりません。
これは、プロセスのカーネル仮想メモリが他のプロセスとどのように異なる領域を持つかを示しています。
これはカーネルが次のことを意味しますか?プロセスA、コンテキストでプロセス固有のデータを表示できません。プロセスB?
これは、カーネルがコンテキストスイッチを介してこのデータにアクセスできる唯一の方法です。プロセスBそして使用第二ページテーブルまたは以下から入手できます。プロセスA?
答え1
あなたの混乱は理解できます。図のように図が間違っています。この本の正誤表:
血。 829、図9.26。アドレス空間のカーネル部分はすべてのプロセスで同じです。各プロセスにカーネル仮想メモリの他の部分はありません。
(具体的には、図に使用されているアーキテクチャであるx86-64では(参照%rsp
)、カーネルは物理メモリの完全なマッピングを持っているため、メモリ内のすべてのページはとにかくカーネルの仮想メモリに表示されます。64ビットLinuxプロセスの仮想メモリカーネル部分には何がありますか?)