オペレーティングシステムはハードウェアからページサイズをどのように読みますか?

オペレーティングシステムはハードウェアからページサイズをどのように読みますか?

オペレーティングシステムの本では、一般に、ページサイズはプロセッサアーキテクチャによって決定されると言われている。たとえば、Intel x86は4KBのページサイズをサポートしています。ハードウェアにオペレーティングシステムをインストールすると、オペレーティングシステムがハードウェアから4KBサイズのページを読み取り、仮想アドレス空間をそれぞれ4KBサイズのページに、メモリをフレームに論理的に分ける感じがする。

私が正しい場合、プロセッサまたはハードウェアのどこでオペレーティングシステムがこの4KBの値を読みますか?ハードウェアが提供するページサイズを決定するために、オペレーティングシステムはどのようなメカニズムを使用しますか?誰かが私を実現できますか? Intelは、4KBのページサイズを任意の基準で予約することにしました。

ベストアンサー1

オペレーティングシステムは、アーキテクチャ(および場合によってはビルド時のカーネル構成)に基づいてページサイズをハードコードします。たとえば、x86では、デフォルトのページサイズは常に4KiBです。これはLinuxのCPUアーキテクチャの属性であり、この定義を見ることができます。存在するinclude/asm/page_types。 64ビットARMでは、ビルド時のページサイズを4KiB、16KiB、または64KiBに設定できます。一部のアーキテクチャでは、さまざまなページサイズ(例えばx86の大きなページ)、すべてのサイズは事前に知られており、デフォルトのサイズは固定されています。

Linuxでは、ページサイズの正式な定義は、アーキテクチャに依存するものを含むPAGE_SIZEページサイズを取得することですasm/page.h(x86で発生するように他のヘッダが導入される可能性があります)。 Elixirは便利なリストを提供しますすべてのPAGE_SIZE定義

Linuxカーネルでサポートされているほとんどのアーキテクチャは4KiBページをサポートしています。ただし、Alpha、ARC、一部のMotorola 68kシステム、OpenRISC、および64ビットSPARCはすべて8KiBページを使用しています。異なるページサイズを使用するように多くのアーキテクチャを設定できます。

おすすめ記事