web-dev-qa-db-ja.com

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

オペレーティングシステムに関する本では、通常、ページサイズはプロセッサアーキテクチャによって決定されると記載されています。たとえば、Intelx86は4KBのページサイズをサポートしています。私たちがハードウェアにオペレーティングシステムをインストールしているとき、OSはハードウェアから4KBのページサイズを読み取り、仮想アドレス空間をそれぞれ4KBサイズのページに、メモリをフレームに論理的に分割したと思います。

私の認識が正しい場合、オペレーティングシステムはハードウェアのどこから、またはどの場所からこの4KBの値をプロセッサから読み取りますか? OSは、ハードウェアによって提供されるページサイズを決定するためにどのようなメカニズムを使用しますか?誰かがこれについて私に教えてもらえますか?どのように(どのような基準で)Intelは4KBのページサイズを維持することを決定します。

1
user127956

オペレーティングシステムは、アーキテクチャ(場合によってはビルド時のカーネル構成)に応じてページサイズをハードコーディングします。たとえば、x86では、基本的なページサイズは常に4KiBです。これはCPUアーキテクチャのプロパティです。 Linuxでは、これが定義されていることがわかります 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ページを使用します。多くのアーキテクチャは、他のページサイズを使用するように構成できます。

3
Stephen Kitt