オペレーティングシステムの本では、一般に、ページサイズはプロセッサアーキテクチャによって決定されると言われている。たとえば、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ページを使用しています。異なるページサイズを使用するように多くのアーキテクチャを設定できます。