GNU/Linux >> Linux の 問題 >  >> Linux

free コマンドと dmidecode で表示される RAM の値が異なるのはなぜですか?

32 ビット カーネルでは、利用可能な アドレス空間 は 4GB しかありません .このアドレス空間の一部は、システム内の (仮想または物理) ハードウェア (ビデオ カード、NIC など) によって独自の目的で使用される必要があります。この使用量は、特定のハードウェアが必要とするアドレス空間の大きさに応じて、通常 256MB から 1GB の間です。

そのアドレス空間はハードウェアによって使用されるため、通常、対応する RAM は 32 ビット システムからアクセスできません。

いくつかのオプションがあります:

<オール>
  • 推奨されるオプションは、64 ビットのオペレーティング システムを実行することです。これにより、アドレス空間が大幅に拡張されるため、すべての RAM とハードウェアに十分なスペースが確保されます。また、32 ビット プログラムを実行する機能を維持しながら、アプリケーションの 2GB/3GB 32 ビット制限を破ります。一般に、2 GB 以上の RAM を搭載したシステムでは、これらの問題を回避するために 64 ビット OS を実行する必要があります。
  • もう 1 つのオプションは、PAE を有効にして 32 ビット カーネルを実行することです。これにより RAM が表示されますが、カーネル ビルドの詳細に応じて、各プロセスは 2GB/3GB のアドレス空間に制限されます。 64 ビット OS は 32 ビット アプリケーションを完全に正常に実行するため、これには利点がなく、多くの欠点 (アップグレード パスがないなど) があります。

  • free の出力 コマンドは、予約されたカーネル メモリと他のいくつかの小さなビットをカウントしません。この不一致は、64 ビット カーネルでも <2GB RAM でも見られます。


    物理 RAM マップの重要な行は次のとおりです。

     BIOS-e820: 0000000100000000 - 0000000140000000 (usable)
    

    この行は、システムの物理 RAM の 1 GB (0x40000000 バイト、16 進数) が BIOS によって 4 GB の制限を超えてマップされていることを示しており、PAE を使用しない 32 ビット システムではアクセスできません。


    Linux
    1. `builtin`ビルトインが必要ですか?

    2. Ls -lがすべてのファイルの時間や年を表示しないのはなぜですか?

    3. Linuxデバイスは、サイズ変更後に正しいディスク容量を表示しません

    1. コマンドがパイプされたときに slabtop -o が最初の 23 行しか返さないのはなぜですか?

    2. Linux では、free コマンドによって報告されるバッファとキャッシュの違いは何ですか?

    3. 「set -e」は何をしますか?なぜ危険と見なされるのでしょうか?

    1. Linux用の最高の無料のオープンソースおよびエンタープライズ電子メールクライアントの6つ

    2. ワイルドカード文字*がZipコマンドとRmコマンドで大きく異なるのはなぜですか?

    3. ティーコマンドはどのように機能しますか?