現在 2008年に発売された iMac(メモリ 4GB)に Bootcamp で Windows XP 32bit 版を動かしているのですが、OS からはメモリが 3GB 程度しか利用できないため、Ramdisk の導入を考えています。通常はハードウェア(BIOS)と Windows でそれぞれ PAE に対応させる設定をしますが、後者の設定はできたのですが、Bootcamp 上の Win で BIOS 設定をどのようにすればわかりません。(この設定をせずに Ramdisk をインストールしても未使用領域は使えませんでした)
調べたところ Mac では BIOS は存在せず、Win 32bit 版を動作させる場合は EFI から BIOS をエミュレートしている(CSM?)ような記述を見つけたのですが、このエミュレートされた BIOS の設定を確認・変更できますか?もしくは、他に Bootcamp 上の Win で ramdisk を動作させる方法があるのでしょうか?
使える場合はあります。
『windows ramdisk 管理外』で検索してOS管理外のメモリを使える幾つかラムディスクソフト試されれば相性の良いソフトが見つかるかも知れません。
※確実性を高める為にはOSが管理しているメモリの物理アドレスを調べて、そのアドレスを除いて割り当てるのが良いでしょう。
まず、誤解されている様ですが、PAEはCPUに備わっている機能です。
OSや他のソフトが提供しているサービスではありません。
OSが物理アドレスの0x00000000-0xFFFFFFFFしか管理しないなら、それ以外の領域はOSの管理を無視して使っても問題にはなりません。(常に使われてない状態のはず)
※OSに管理して貰えないので自動で管理はしてもらえないので、利用者が管理する必要はあります。それは、一つのソフトに占有させるなどで行えば良いです。(2つの管理外を使うラムディスクドライバ使う場合には割り当てるアドレス範囲をOSが管理している領域を避けつつ重複しないように設定するなど)
http://www.atmarkit.co.jp/fwin2k/win2ktips/1140maxmem/maxmem.htm...
> 通常はハードウェア(BIOS)と Windows でそれぞれ PAE に対応させる設定をしますが、後者の設定はできたのですが、Bootcamp 上の Win で BIOS 設定をどのようにすればわかりません。
>(この設定をせずに Ramdisk をインストールしても未使用領域は使えませんでした)
通常のRAMDISKソフトはOSが管理しているメモリを正規の手続きでOSに割り当ててもらって使います。
OS管理外のメモリが使えるソフトは特殊なソフトでその機能を持っているソフト使わないと実現でききない機能です。
引用した部分は誤解でしょうね。上に紹介したページに各OSの制限が書かれていますが、2000のAdvanced ServerやDatacenter Serverなど(このページに書かれている以外にも細かいエディションでいくつか4GBを越えるメモリへ対応した製品があります)では使える場合がありますが、4GBが最大の構成になっている製品では使える物理アドレスの大きさが4GBで、その中にメモリ以外にも様々なハードウェアにアクセスするアドレス領域を含んでいるのでメモリ以外のアドレス範囲を除くと最大で2.5GB-3.5GBくらいになります。
※BIOSは普通に4GBのメモリを認識しているのではありませんか。BIOSの行うのは起動時のメモリチェックや実際にメモリの取り付けられているアドレスの一覧つくる位で利用状況の管理は全く行いません。BIOSから見ればOSが勝手に管理しています。OSの管理している領域外のメモリは使いたければOS以外のソフトで管理して使えば良いものです。
検索してみましたが、この辺りに付いてはデタラメ情報が多いですね。
ざくっと書くとIntelのPentium Proという1995年に発売されたCPUにPAE(物理アドレス拡張[フィジカル=アドレス=エクステンション])という機能が追加されました。
以降の386系CPUのほぼ全てに(PentiumIIにもPentiumIIIにもPentium4にもそれ以降に開発されたCeleronにもCoreにもCore2にもCoreiにも……)搭載されている機能です。
PentiumProでは64GB(36ビット)のアドレスが使えるようになりましたが、PAE機能を持っているCPUの最小アドレスです。(物理アドレス38bitのCPUなど64GBを越える物理アドレス空間を持っているCPUもあります)
最大4GBまでのWindowsは多分起動時認識した時点で使う物理アドレスは固定してしまっていると思います。固定すれば後は全く変える必要がなく管理が楽ですから。PAEでも非PAEでも同じだと。当然使う事のある物理アドレスは全て含めてマッピングしているでしょうから、アドレス空間を必要とする様々なハードウェアも4GBの一部としてマッピングされているはずです。例えば前側3GBはメモリで後ろ側1GBはPCIバスや様々なデバイスのアクセスに使うアドレスとしてという具合に。
結論から書くと、できません。
Bootcampで動かしているWindowsXP 32bit版から、OSの管理領域外にRAMディスクを作りたいというご質問ですが、お気づきのように、MacのEFIはPAEをサービスしていません。
他にWindowsXPの管理外領域にアクセスする方法もありません。
回答ありがとうございます。
ふーむ、やはり無理なのですかね。
「PAE をサービスしていない」というのは Apple の公式サポートのことではなく、
EFI の BIOS エミュレータの実装が技術的に PAE をサポートできない、という理解でいいのですよね…
使える場合はあります。
『windows ramdisk 管理外』で検索してOS管理外のメモリを使える幾つかラムディスクソフト試されれば相性の良いソフトが見つかるかも知れません。
※確実性を高める為にはOSが管理しているメモリの物理アドレスを調べて、そのアドレスを除いて割り当てるのが良いでしょう。
まず、誤解されている様ですが、PAEはCPUに備わっている機能です。
OSや他のソフトが提供しているサービスではありません。
OSが物理アドレスの0x00000000-0xFFFFFFFFしか管理しないなら、それ以外の領域はOSの管理を無視して使っても問題にはなりません。(常に使われてない状態のはず)
※OSに管理して貰えないので自動で管理はしてもらえないので、利用者が管理する必要はあります。それは、一つのソフトに占有させるなどで行えば良いです。(2つの管理外を使うラムディスクドライバ使う場合には割り当てるアドレス範囲をOSが管理している領域を避けつつ重複しないように設定するなど)
http://www.atmarkit.co.jp/fwin2k/win2ktips/1140maxmem/maxmem.htm...
> 通常はハードウェア(BIOS)と Windows でそれぞれ PAE に対応させる設定をしますが、後者の設定はできたのですが、Bootcamp 上の Win で BIOS 設定をどのようにすればわかりません。
>(この設定をせずに Ramdisk をインストールしても未使用領域は使えませんでした)
通常のRAMDISKソフトはOSが管理しているメモリを正規の手続きでOSに割り当ててもらって使います。
OS管理外のメモリが使えるソフトは特殊なソフトでその機能を持っているソフト使わないと実現でききない機能です。
引用した部分は誤解でしょうね。上に紹介したページに各OSの制限が書かれていますが、2000のAdvanced ServerやDatacenter Serverなど(このページに書かれている以外にも細かいエディションでいくつか4GBを越えるメモリへ対応した製品があります)では使える場合がありますが、4GBが最大の構成になっている製品では使える物理アドレスの大きさが4GBで、その中にメモリ以外にも様々なハードウェアにアクセスするアドレス領域を含んでいるのでメモリ以外のアドレス範囲を除くと最大で2.5GB-3.5GBくらいになります。
※BIOSは普通に4GBのメモリを認識しているのではありませんか。BIOSの行うのは起動時のメモリチェックや実際にメモリの取り付けられているアドレスの一覧つくる位で利用状況の管理は全く行いません。BIOSから見ればOSが勝手に管理しています。OSの管理している領域外のメモリは使いたければOS以外のソフトで管理して使えば良いものです。
検索してみましたが、この辺りに付いてはデタラメ情報が多いですね。
ざくっと書くとIntelのPentium Proという1995年に発売されたCPUにPAE(物理アドレス拡張[フィジカル=アドレス=エクステンション])という機能が追加されました。
以降の386系CPUのほぼ全てに(PentiumIIにもPentiumIIIにもPentium4にもそれ以降に開発されたCeleronにもCoreにもCore2にもCoreiにも……)搭載されている機能です。
PentiumProでは64GB(36ビット)のアドレスが使えるようになりましたが、PAE機能を持っているCPUの最小アドレスです。(物理アドレス38bitのCPUなど64GBを越える物理アドレス空間を持っているCPUもあります)
最大4GBまでのWindowsは多分起動時認識した時点で使う物理アドレスは固定してしまっていると思います。固定すれば後は全く変える必要がなく管理が楽ですから。PAEでも非PAEでも同じだと。当然使う事のある物理アドレスは全て含めてマッピングしているでしょうから、アドレス空間を必要とする様々なハードウェアも4GBの一部としてマッピングされているはずです。例えば前側3GBはメモリで後ろ側1GBはPCIバスや様々なデバイスのアクセスに使うアドレスとしてという具合に。
長文による詳細な回答ありがとうございます。
すみません、OS 管理外領域の利用を前提とした話をしていましたが、その条件を書き忘れていました。PAE は CPU の機能ですが、OS 管理外領域へのアクセスについては BIOS によるサポート及び Windows(内のドライバ)を経由する必要があると理解しており、両方の条件を満たす場合に限り特殊なソフトウェアから OS 管理外領域のメモリ領域にアクセス可能であると理解してますが、これで正しいでしょうか。
ところで、機械語レベルでの PAE の動作を理解していないのですが、CPU の機能ということは BIOS 上の設定や OS の PAE サポートオプションを無視して勝手に CPU に PAE を利用させるようなバイナリを作成して実行することはできそうですね。実行させたら、やっぱり落ちるのかな…?
PAE をサービスしていない」というのは Apple の公式サポートのことではなく、
EFI の BIOS エミュレータの実装が技術的に PAE をサポートできない、という理解でいいのですよね…
いいえ、違います。
EFIのBIOSエミュレータの実装によってはPAEをサポートしています。
実際、Core2 Duo以降のPC(Windows用)マザーボードの大半はEFIでBIOSをエミューレートしており、PAEも操作できるようになっています。
ただ、MacのBIOSエミュレータについてはPAEがサポートされていないのです。そもそもMacOSには32ビット版Windowsのようなメモリ・リザーブの考え方が無いですし、Core2 Duo以降のIntelMacのEFIは64ビットで動作可能ですので、PAEまで作り込まれなかったのだと思います。
なお、CPUとメモリの間にはメモリコントローラが介在しており、直接CPUのPAEを操作するというのはナンセンスですので、念のため。
2度目の回答ありがとうございます。
文脈上「サービスしない=Apple が(電話等で)サポートしない」という意味にも取り得たので。
そういう意味ではないのですね。もしそれだけなら技術的には出来る可能性もあるということになるので。
あと、最近のマザーボードは EFI ベースで、むしろ BIOS をエミュレートしてたんですね。
で、Mac の BIOS エミュレータでは、PAE を含めて設定は固定で変更できない、ということでいいでしょうか。
参考になる回答ありがとうございます。
長文による詳細な回答ありがとうございます。
すみません、OS 管理外領域の利用を前提とした話をしていましたが、その条件を書き忘れていました。PAE は CPU の機能ですが、OS 管理外領域へのアクセスについては BIOS によるサポート及び Windows(内のドライバ)を経由する必要があると理解しており、両方の条件を満たす場合に限り特殊なソフトウェアから OS 管理外領域のメモリ領域にアクセス可能であると理解してますが、これで正しいでしょうか。
ところで、機械語レベルでの PAE の動作を理解していないのですが、CPU の機能ということは BIOS 上の設定や OS の PAE サポートオプションを無視して勝手に CPU に PAE を利用させるようなバイナリを作成して実行することはできそうですね。実行させたら、やっぱり落ちるのかな…?