プロが教える店舗&オフィスのセキュリティ対策術

Windows XP 32bit版の最大メモリに関する質問に対する、この回答は合っているのでしょうか?
間違ってたり曖昧な点があれば教えて下さい。
特に
『OSが起動する以前のPCのシステムが、約700MB程使用します』
『OSが起動しようとする時は、既にシステムが700MB程使用しています』
ここで言及している『システム』とは何のことなのかが曖昧で説明が危うく感じます。

---
●質問
Windows XP 32bit版のメインメモリの上限の理由は?
メモリ空間が2^32で4,294,967,296
なので4,294,967,296バイトのメインメモリを管理できそうです。
しかし実際には3GB位の制限があるそうですが、理由は何ですか?

●回答
32bitのWindowsが起動した直後では、3.2GB程のメモリー量となりますが、OSが起動する以前のPCのシステムが、約700MB程使用しますので、OSが起動した直後では、約700MBを差し引いた値の3.2GB程になるのです。
だから実際には、トータルで4GB認識できているのです。
これは、32bitのメモリー空間が、4GBしか扱えない為・・32Bitで扱える上限が4GBなのです。

●補足質問
『OSが起動する以前のPCのシステム』
ということはOSの管理外のメモリーということになりますよね。
なら、OSが起動した時点で、残りの物理メモリが4GB以上あれば4GBまでは認識しても良さそうですけど、その辺はどうでしょうか?

●補足回答
いいえ、4GBの管理下のメモリーから使用されます。
だから、OSが起動しようとする時は、既にシステムが700MB程使用していますから、OS上では、3.2GB程なのです。
ついでに、このシステムが使用するメモリー量は、オンボードデバイスの量で若干変動します。
つまり、オンボードデバイスが多ければ多いだけ、使用するメモリー量も増えるのです。

http://detail.chiebukuro.yahoo.co.jp/qa/question …

A 回答 (5件)

やや正しく書くと


OSの管理できるアドレスが4GBまでです。
で、アドレスの一部がデバイス用に予約されます。

なのでwinXP32bitでは4GB以上のメモリを載せても、割り当てるアドレスがないので使用できないのです。

ちなみに、WindowsServerのenterpriseなどは32bitであっても4GB以上のメモリを使用できます。
    • good
    • 0
この回答へのお礼

大変分かりやすい説明で助かります。
これは補足質問ですが、
『アドレスの一部がデバイス用に予約される』とは、もう少し具体的にはどういうことでしょうか?

たとえば物理メインメモリ約3GB以下のマシンでは、OSは物理メモリをまるごとメインメモリとして使えます。
ということは『アドレスの一部がデバイス用に予約』されても、物理メモリは消費しないということですよね?
実際のメモリは使用せずに『アドレスだけが予約されている状態』というのは具体的にどういう状態なのでしょうか?

あと、
>なのでwinXP32bitでは4GB以上のメモリを載せても、割り当てるアドレスがないので使用できないのです。
・・・の部分は
『4GB-デバイス予約領域』以上のメモリを載せても、
ということですよね?

ぜひよろしくお願いします!

お礼日時:2012/08/10 23:01

ANo1~3の方は、みんな同じことを説明していて、


「物理アドレス空間の一部をデバイス制御のために使用する」
と言っています。
この仕組みのことをMMIO(メモリマップドI/O)と言うので、
詳細が知りたいならMMIOで検索すると良いでしょう。


ANo4の方の説明は物理アドレス空間ではなく
論理アドレス空間の話なのでMMIOとは全く別の話となります。
論理アドレス空間が、ユーザー2GB/カーネル2GBとなっているのはその通りですが、
このことは物理メモリの認識量上限とは無関係です。
(余談ですが、設定で論理アドレス空間をユーザー3GBにすることもでき、この設定のことを3GBスイッチといいます。)
    • good
    • 0
この回答へのお礼

参考にします
ありがとうございます

お礼日時:2012/08/12 10:14

ご質問にある回答を書いた回答者の方が


筋道だった説明の仕方をされていないので、
理解しがたい回答になってしまっているように思います。
「Windows OS」と「システム」という言葉を区別しているかのような
使い方をされていることも混乱を招く一因といえるでしょう。

『Windowsシステムが起動時に700MB使用するので、システム起動
完了直後は〔4GB-700MB=3.2GB〕程度になります。』
おそらく回答者産はこう言いたかったのでしょうね。

それはさておき、
32bit版Windows XP が管理できるメインメモリの上限は4GBで、
この容量までは実装しても大丈夫という意味です。
それでは3GBの壁というのはどこから出てきたのでしょうか。
最大4GBの中身をもう少し詳しく見ていきましょう。

32bit版Windows XPの管理できるメモリ4GBのうち、
ユーザーメモリには2GBが割り当てられており、
残りの2GBはカーネルメモリに割り当てられています。
カーネルメモリとはWindows OSが常駐するメモリ領域のことです。
けれど、カーネルメモリは512MB~768MBもあれば十分で、
多めに見たところで1GBでしょう。
従って、ユーザーメモリ2GB+カーネルメモリ512MB~768MBで
2.5GB~約3GBという数字が出てくるのです。
4GBのメモリを実装しても3GBしか使われないので、
このあたりのことを知っているユーザーは、
この余った領域をRAMディスクに割り当てて使うことが多いようです。

因みに、私がWindows XPを搭載して使っているPCは最大3GBまでしか
実装できないので、RAMディスクの用途の経験はありません。
また、Windows7を購入してからは
そのような知識も過去のものとなってしまいました。

以上、ご参考になれば幸いです。
    • good
    • 0
この回答へのお礼

メインメモリ以外にアドレス空間が消費されているので、メインメモリ用のアドレス空間がその分小さくなる。
という形で理解しました。
ありがとうございます。

お礼日時:2012/08/11 17:43

デバイス用に予約されることを、ちょっと詳しく説明すると…


CPUが利用できるメモリーアドレスが4GBしか無いのであれば
つまり、メモリーアクセスを要するデバイスなどについては
それ専用に物理的なメモリーアドレスを与えざるを得ないというわけです。

なお、現代OSではページング技術が使われていて
物理的なメモリーアドレスはBIOS,UEFI,OSなどが使い
アプリケーションは、OS上の論理的なメモリーアドレスを使います。

デバイスドライバーはOS側に含まれ…
つまりデバイスドライバーは物理的アドレスを用いてデバイスを動かします。


予約番号という言葉は、いろんなところで使われると思います。
数学的には、これだけある数字が、一部は使えませんよというのが
メモリー搭載量が肥大化してきたこの数年に露見しただけで…
問題は、OSが使うメモリー量とはなんら関係ありません。

そういう意味では、リンク先URLの回答者は、そこを勘違いしています。
ただ、そういった誤った回答だけで閉じられた質疑は
どこのQ&Aサイトにもあります。めずらしいものでは無いでしょう。


もっと古い時代だと、MS-DOSでは1MBのメモリーしか認識できないのに
予約されているために使えない部分があって、実質640KBでやりくりしていました。

特に、日本語環境では日本語変換プログラムに割くメモリー量が大きな問題で
ゲーム用に、日本語変換ができない設定でのMS-DOS起動とかが行われていました。
(当時は、HSBという環境を切り替えた再起動のための専用ツールが重宝されていました)


そこから、進化したのが32bitCPU専用設計で生まれたFM-TOWNSで
4GBのメモリー空間のうち、1GB目をソフトウェア動作のために
2GB目や3GB目や4GB目を、そういった予約されるアドレスのために振り分けたという
先進のハードウェア設計が行われていました。
まぁ、結果的にはTOWNSは廃れ、物理メモリーが4GBの時代には
TOWNSの設計思想は破綻したはずだったということになってしまいます。
でも、TOWNSでは、MS-DOSで700KBくらい使えるようになっていたように記憶しています。
(この段落、一切調べず、記憶まかせ、うろ覚え)


TOWNSよりも古いPC-9801やPC/ATの設計は、結果的にはTOWNSより長く続き
現在のWindows PCの基本設計は、PC/ATの仕様を土台としています。

拡張カードもそれにあわせて設計されてきましたし
デバイスドライバーもそれにあわせて書かれてきました。

ですから、BIOSが廃され、UEFIの時代になったとしても
たとえIntelMacであっても、32bit版OSでは、4GB全部は使えないのです。
厳密にはPAEはPentium3の時代からあるからPAE対応OSならその限りでもないんですけど…
WindowsではPAE対応のコンシューマー向けOSが無かったと思います。


64bitOSでは、現代OSの基本的処理の一つである、ページング技術によって
4GB搭載でも、予約部分とぶつからないように…4GBよりちょっとだけ飛び出した物理アドレスを使うことによって
論理的に、4GB分のメモリーを提供できるようになっているのです。

12人用ロッカーの一つが壊れいて使えないから
12人目のために、別のロッカーを一つを使っているような感じ。


64bitOSでも、予約されたアドレスは予約されたままで、つまり
64bitで表せるメモリーをすべて使えるわけではなく
実際は上限の-500MBくらいしか使えないのです。
もっとも、64bitの上限よりもかなり小さいところで、OSの仕様としての制限がありますし
実際にM/Bに装着可能なメモリー量は、OSの仕様よりもさらに小さいのが現状です。

おそらく、-500MBが問題視される日は来ないでしょう。割合として小さすぎますから。

それは、100億人分のロッカーの一つが壊れていて
もっとロッカーが必要だと言い出す人はいないでしょ?
それが問題になる前に、状況の変化が繰り返されるはずです。
    • good
    • 0
この回答へのお礼

参考になりました!
ありがとうございます

お礼日時:2012/08/11 11:29

4Gバイトまでしかメモリを管理できないのは理解できていますね。




デバイスを扱うにはメモリにアクセスをする必要があります。
例えばUSB接続のマウスとか。
そのメモリ空間は扱うことのできる4Gバイトの中に含まれるんですよ。
イメージ的には4Gバイトの上の方のアドレスはデバイスによって使われる空間と考えてください。
そうすれば納得できると思います。

┌──┐4G
├──┤CD/DVDドライブで予約
├──┤USBキーボードで予約
├──┤USBマウスで予約
├──┤

├──┤
├──┤
├──┤
├──┤
└──┘0G

こんな感じ。
デバイスが多いと自由に使用できるメモリ空間が少なくなるイメージが掴めると思います。
    • good
    • 0
この回答へのお礼

メインメモリと各種インターフェイスが同一のメモリ空間にあるのですね
ありがとうございます

お礼日時:2012/08/11 11:28

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A