web-dev-qa-db-ja.com

PAE / NXを使用する必要がある場合

Pae/NXを使用する必要がある場合と使用しない場合について教えてください。

常に必要ですか、それとも仮想マシンで使用できませんか?

21
Winnie The Pooh

32ビットOSを仮想化していて、4GBを超えるメモリが必要な場合は、PAEが必要です。

21
ostergaard

comment by @gronostajと answer by @ajostergaardはどちらも、PAE/NXの物理アドレス拡張(PAE)部分についてのみ話します。これらはどちらも優れており、私が説明する必要があるのは、「理由」だけです。 「NX」の部分についても説明します。


私の答え1

おそらく、@ ajostergaardの答えを拡張した、より完全な答えは次のようになります。

仮想の32ビットOSをセットアップしていて、次の場合はPAE/NXが必要です

1)4つ以上必要GiBメモリ(RAM)]

[〜#〜]または[〜#〜]

2)メモリの一部を実行可能コードに使用できないように、それを作成できるようにする必要があります。 NX-bit Wikipedia pageで説明されているような攻撃を含むセキュリティ上の懸念がある場合

[C]特定の種類の悪意のあるソフトウェアは、コードを別のプログラムのデータストレージ領域に挿入し、このセクション内から独自のコードを実行することにより、コンピュータを乗っ取ることができます...

また、私が知る限り、仮想マシンとして64ビットOSを設定する場合、このPAE/NXオプションは必要ありません。 (注意:私はIntelおよびAMDのCPUのみを使用しました-他のプロセッサーではPAE/NXが必要になる場合があります。MAKE SURE YOU CHECK!


さらに下で、PAE/NXのNXの部分が何を意味するか、およびそれがセキュリティ上の懸念とどのように関連するかについて説明します。

(基本的に、私は完全な答えを探していました。Googleがここに連れて行ってくれましたが、「NX」の部分に夢中になりました。私の発見が他の人に役立つことを願っています。)


PAEへのコメント

PAE wikiページ の最初の段落から@ajostergaardの回答に到達するのは難しい場合があります。最初の段落は:

コンピューティングでは、物理アドレス拡張(PAE)(ページアドレス拡張とも呼ばれる)は、x86アーキテクチャのメモリ管理機能です。 PAEはIntelによってPentium Proで最初に導入され、後にAMDによってAthlonプロセッサで導入されました。 2つではなく3つのレベルのページテーブル階層を定義し、32ではなく64ビットのテーブルエントリを使用して、これらのCPUが4ギガバイト(232 バイト)。

何?! 「PAE/NXを有効にする」の横にあるチェックボックスをクリックするかどうかを知るにはどうすればよいですか?幸い、@ ajostergaard 教えてください

32ビットOSを仮想化していて、4GBを超えるメモリが必要な場合は、PAEが必要です。

したがって、仮想OSが32ビットタイプの場合(仮想Windows-NT OSが必要な場合と同様)、16 GBのRAM(すべての使用するには、)PAEオプションが必要です。

理由これについて詳しく説明します。 memory address はメモリの一部(通常は1バイトのメモリ)のラベルであることを知っておく必要があります。 32ビット(4バイト)OSは、そこから移動できるラベルを持っているOSです

zero(_0_)-2進数で32のゼロで表され、16進数で_0x 00 00 00 00_で表されます-

_4 294 967 295_-バイナリ:32個、16進数:_0x FF FF FF FF_。

つまり、43億弱のメモリアドレスがあり、それぞれが1バイトの情報、つまり1バイトのメモリをポイントしています。ポイントはこれです:32ビットマシン(アドレス指定にすべての32ビットを使用)でアドレス指定できるメモリの最大量は4 GiBです。2 RAMにより多くのメモリ領域がある場合、それはいいことですが、コンピュータはデータのラベルを見つけることができません。言い換えると、32ビットマシンは、4 GiBを超えるデータを使用できません。

残酷な詳細にあまり深く入り込むことなく(遅すぎますか?)、PAEは、より大きなメモリに対処できるようにいくつかのトリックを導入します(より多くのバイトのデータのラベルを持つことができます)。したがって、これらのより大きなメモリを使用できます。

次に、メモリのラベル付け/アドレス指定にすべてのバイトを使用した64ビットマシンでアドレス指定できるデータの量を考えてみましょう。ラベルは

ゼロ(_0_)-バイナリで64のゼロ、16進数:_0x0000000000000000_-

_18 446 744 073 709 551 615_ = 18.4五十億= 184億十億-バイナリで64個、16進数_0xFFFFFFFFFFFFFFFF_。 184億バイトのデータのアドレスがあります。これは18.4エクサバイト= _18 447_ペタバイト=約1850万テラバイトです。 Wolfram | Alpha によると、これはすべてのグローバルデータの情報内容の_1/54_と同等です。 Wolfram | Alpha ノートを4GiBで保存できる単層DVDの_9/10_と比較してください。

NXパート

実際には、64ビットマシンはメモリのアドレッシングにすべての64ビットを使用するわけではありません。そうする必要はありません。これは、_1/54_- of-the-planet's-dataの説明で示されたことを願っています。 PAE wikiの記事がsecond段落で述べているように、

X86-64 CPU [64ビットマシン]で使用されるページテーブル構造... 64ビットページテーブルエントリの最上位ビットを非実行ビットまたは「NX」ビットとして使用し、コードを関連ページ。

NX-bit Wikipediaの記事 に詳細があります。 NXビットの基本的な考え方は、64ビットラベル(_plus_NX-bit_plus_other-stuff)によってアドレス指定されたメモリのバイトにマークを付けて、実行中のプログラムで使用できないようにすることです。特に、これにより、この回答の冒頭で説明した種類の攻撃を防ぐことができます。

ここで、チェックボックスがPAE/NX用であることに戻りましょう。より多くのメモリ位置にアクセスできるようにするために使用される同じトリックは、NXビットを追加するためにも使用できます。再びPAEウィキペディアの記事の2番目の段落から、

オペレーティングシステムでPAEが有効になっている場合、これらのCPUが32ビットオペレーティングシステムを実行している場合、NX機能はプロテクトモードでも使用できます。


ノート:

1)この回答は私の発見プロセスを示しています。私が書いたものを誰かが明確にしたり修正したりする必要がある場合、私はもっと幸せになります。

2)実際には、32ビットすべてがメモリのアドレス指定に一般的に使用されるわけではないため、32ビットのマシンでアドレス指定できるメモリのサイズは4 GiB未満になる場合があります。

3)データ量のもう1つの興味深い比較は this source から来ています。

Videomakerによると、「1時間の標準解像度DVフッテージには約12.7GBのストレージ、約217MB /分が必要です。これに対して、1時間のRAW 4Kコンテンツには約110GBのストレージ、約2GB /分が必要です。」

したがって、32ビットマシンでは、15分の標準精細度DV(ビデオ)または2分の生の4Kビデオのいずれかに対して十分なメモリを使用できます。 (ビデオコーデックをそのままにしておくと、以前のAndroid電話が4GBのファイルサイズ制限に達する前に、圧縮されたMP4形式で約12分の4Kビデオを取得できることに注意してください。)

一方、64ビットマシンでは、_165 643_年のSD DV(ビデオ)または_19 131_年の生の4Kビデオのいずれかに十分なメモリを使用できます。


この回答を書く際に役立つと思われる他の参考文献をいくつか記しておきます。

64ビット/ x86_64またはx_64 VS 2ビット/ x86 、Windowsまたは Program Files (x86) フォルダーと考えてください__x86_、_x86_64_、_x64_インストールファイル名に表示されることがあります。

以前の(ビット数ではない)アーキテクチャのソフトウェアを使用

11
bballdave025