2012-03-21 18 views
0

私はこれらのトピックを検索しましたが、私がその関係を正しく理解しているかどうかはわかりません。私は以下の点を要約してください、修正/補完してください。32ビット/ 64ビットアプリケーション、OS、プロセッサの関係は?

  • 32ビットまたは64ビットプロセッサとは、プロセッサが同時に32/64ビットを処理できることを意味します。 32ビットまたは64ビットプロセッサを使用すると、下位のレジスタ、アドレスバス、またはデータバスも同じサイズであることが示されます。

  • 、32ビット/ 64ビットプロセッサ上で動作するために、32ビット/ 64ビットのOSで動作するために、64分の32ビットOS

  • を持って、我々には、32ビット/ 64ビットのアプリケーションを開発します

  • 64ビットアプリケーションを実行することは不可能である32ビットOS(LinuxPAE64

  • に64ビットOSで32ビットのアプリケーション、ならびに64ビットアプリケーションを実行することが可能です/ OS上の32ビットプロセッサ


また、メモリに関する2つの質問があります。

  1. プロセッサのメモリマップのレイアウトは、プロセッサの命令サイズに依存していないようです。たとえば、ほとんどのIntel Core 2システム(64ビット)では、以下に示す画像にかなり近いメモリマップがあります。 なぜ 64ビットプロセッサは、より広い範囲のメモリマップを選択しませんか?

    enter image description here

  2. まで使用して64ビットのOSを制限何
  3. (2^64 - デバイス/バス・アドレス)RAMの大きさ?

答えて

3

そこにはさまざまな種類のプロセッサがあります(ARM、MIPS、x86、...)。

私はちょうどx86(32bit)/ x86-64(64bit)について話すことができます。

ビット数は、主にレジスタサイズを参照します。 x86では、仮想アドレス空間は32ビット(4GiB)に制限されています。つまり、32ビットアプリケーション(32ビットCPUで動作すると仮定したアプリケーション)では、4GiBを一度に見ることができます。

x86-64の場合、すべての仮想アドレスは64ビットです。しかし、サポートされていないすべてのビットがサポートされている最も重要なビットと同じ値になるように要求することで、CPUはすべての64ビットをサポートしないことが無料です。 OSは、サポートされているビット数を問い合わせる必要があります。 (私のCore i5はここで48ビットをサポートしています)

物理アドレス空間、つまりCPUが実際に扱うことができるメモリ量は、最初の32ビットサイズのx86用です。しかし、Pentium 1以降、CPUはPyisical Address Extension (PAE)をサポートし、最大36ビットのRAMを36ビットの(64GiB)にすることができます。 (OSは拡張機能を有効にする必要があります)

現在、x86-64は物理アドレス空間を52ビットの(4PiB)に制限しています。ここで再びCPUは自由に少ないビットをサポートする。 (私のCore i5はここで36ビットをサポートしています)

意味が少し違う同じオペコードを使用するため、32ビットアプリケーションは64ビットCPUモード/ロングモード)。

しかし、それは32ビットのアプリケーションを実行することができ、いわゆる互換モード、(長いモードのサブモード)、x86-64で有しています。 (OSモードを切り替えなければならない。)

メモリマップは、プロセッサによって選択されません。それはmainbord & BIOSの責任である、と一部がOSによって設定することができます。 mainbord & BIOSの理由は、アドレス空間の下4GiBにすべてのものを維持するために製造し、32ビットのOSとの互換性です。 (古い16ビットDOSアプリケーションとの互換性のために、x86-64 CPUでさえ、物理アドレス空間の2番目のMiBへのアクセスをすべて無効にする)ビットごとに指定します。 CPU実装によって制限されたアドレス空間、さらにはメインボードの実装によってさらに遠く離れた場所です。 (実装コストを削減するために行われたすべて)。したがって、RAMの266をアドレス指定する方法はありません。

関連する問題