1

私は、CPUが論理アドレスを生成するとき、ページテーブルを使用して物理アドレスに変換されることを教えています。これは通常、オペレーティングシステムのメモリ空間に割り当てられた連続配列です。この配列へのインデックスは、仮想アドレスの最上位ビット(別名ページ番号)です。ページテーブルは、スタックアドレスとヒープメモリアドレスの両方をどのように扱いますか?

また、スタックアドレスが0xffffffffffffffffから始まるスタックで反対方向に成長するので、ヒープアドレスの論理アドレスは低、スタックアドレスの論理アドレスは高いことがわかります。

私の質問は、ヒープアドレスは低いがスタックアドレスは非常に高いので、CPUが生成するページ番号(またはページテーブルのインデックス)は連続していませんが、非常に高いか非常に高い低い。次に、非常に大きなページテーブルを作成せずにページテーブルのインデックスを作成する方法を説明します。

また、ページ番号が制限(プロセス外に割り当てられたページ数/フレーム数)より大きい場合は、プロセスのサイズを維持し、セグメンテーション違反を発生させる必要があります。有効なページ番号が連続していない場合、これはどのように行われますか。

答えて

0

だから私の質問は、ページ番号がヒープアドレス のための低しかしCPUが生成するスタックのアドレス、ページ番号(または ページテーブルのインデックス)のための非常に高いですので、することはcontigousではなく、どちらかであるということです非常に 高いまたは非常に低い。次に、非常に大きなページテーブルを作成することなく、どのようにページテーブルをインデックス化するのに使用されますか。 生成どのようなCPU

仮想メモリ(本物ではない仮想の手段)であり、それは実際物理メモリ(とも呼ばれるメインメモリ)と全く関係を持っていません。 仮想メモリは1つだけ大きいです想像上連続したメモリブロックです。

これは、これらの仮想アドレスの世話をし、実際物理アドレスあなたのRAM(またはメインメモリ)のに変換し、ページテーブル(メモリ管理ユニット)の義務です。

virtual page number iは、物理メモリのframe number 2000にマッピングすることができ、非常に次virtual page number i + 1は、物理メモリのframe number 10000にマッピングすることができます。ページテーブルが非常に大きい場合には、簡単に大規模なページテーブルの問題に取り組むことができmulti-level page tablesと呼ばれるメカニズムは、そこにある:それはだからあなたの質問に来るnon-contiguous memory allocation.

することができますので、それは、ページングの美しさです。

また、我々は、プロセスのサイズを維持し、ページ数が制限(アウトプロセスに割り当てられたページ/フレームの 数)よりも大きい場合 セグメンテーションフォールトを調達する必要があります。 有効なページ番号がすべての

まず、セグメンテーションフォールト、連続でない場合、これはどのように行われている、あなたの非連続メモリ割り当て方式としてセグメンテーションている場合に発生します。 ページングおよびセグメンテーションは、非連続メモリ割り当ての2つの異なる方式です。無効なページ番号は、有効/無効の各ページテーブルエントリに関連付けられたビットで処理されます。

関連する問題