Linuxは利用可能な物理メモリの量をどのように知ることができますか?

Linuxは利用可能な物理メモリの量をどのように知ることができますか?

どのLinuxカーネル関数が使用可能な物理メモリの量を読み取るのかを理解しようとしています。後でこの情報はどこに保存されますか?

答え1

カーネルが使用可能な物理メモリの量を知るだけでは不十分です。また、プロセッサのアドレス空間内のメモリがどこにあるかを知る必要があります。

これを達成する方法は、各ハードウェアアーキテクチャによって異なります。

  • x86システムでは、ファームウェアはチップセット固有の方法を使用してこの値を計算し、この情報をオペレーティングシステムのカーネルに提供します。

    • 以前のバージョンのBIOSを使用しているシステムでは、BIOS機能を使用してこの情報を取得できますINT 0x15, EAX = 0xE820このosdev.org Wikiの記事もっと学ぶ。
    • デフォルトモードでUEFIファームウェアを使用するシステムでは、メモリマップはファームウェアによって次のようにブートローダ/オペレーティングシステムに提供されます。UEFIシステムテーブル、特にGetMemoryMapサービスを使用してUEFIブートサービステーブル
  • 他の多くのアーキテクチャでは、(初期)メモリマップは次のように提供できます。デバイスツリーデータシステムファームウェアが他の方法でカーネルを提供していない場合、またはファームウェアから効率的にインポートする前に、最初に一部のハードウェアモデル固有の情報が必要な場合は、カーネルに接続してください。

関連情報