- ベストアンサー
プロセスと仮想メモリについて
プロセスと仮想メモリについて こんばんは。 プロセスについて勉強しています。 その過程で、「プロセスは物理メモリーとは切り離された仮想メモリーにアクセスする。 仮想メモリーはひとつのプロセスに対して4Gバイト割り当てられる。」 とありました。 今まで仮想メモリーと言うのは、ページングファイル(物理メモリの代わりに使用される ハードディスクの領域)のことだと思っていましたが、この仮想メモリーと、プロセスを 語る上での仮想メモリーとは別物なのでしょうか? 宜しくお願いいたします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
「仮想記憶」 http://ja.wikipedia.org/wiki/%E4%BB%AE%E6%83%B3%E8%A8%98%E6%86%B6 を参考にしてください。 一部抜粋すると、 ----------------------------------------------------------------- 「仮想記憶」という用語は「メモリスワッピング」と混同されることが多い。 これはMicrosoft Windows系のオペレーティングシステム (OS) がメモリ スワッピングの可/不可を設定する項目を "virtual memory" と称している ことも一因と考えられる。実際、Windowsはその "virtual memory" を不可 としても、ページング方式と仮想記憶を使用している[1]。 XP日本語版では、"システムのプロパティ"→"詳細設定"→"パフォーマンスオプション" →"仮想メモリ"のことである。 ----------------------------------------------------------------- ということです。 本来の「仮想メモリ」の意味は、物理的なメモリ配置とは別の 仮想的なメモリ空間を作りだす仕組みのことを意味します。 ページングファイル(スワップファイル)は仮想メモリを作るために 必ずしも必須ではありません。 http://www003.upp.so-net.ne.jp/shigeri/speedup/speedup2.html にあるWindows画面に「仮想メモリ」というタイトルがついていることから、 「仮想メモリ」=「ページングファイル」と考える人もいますが、 その認識は誤りです。 この画面は仮想メモリに関する設定を変更する画面であり、 仮想メモリに関する設定で調整可能なパラメータ値として、 ページングファイルの場所やサイズが指定できるというだけです。 なお、「仮想メモリーはひとつのプロセスに対して4Gバイト割り当てられる。」 というのもちょっと違っていて、これは「仮想アドレス空間は」と言う意味 で言いたかったのだろうと思います。(4Gバイトの空間全部にメモリが 割り当てられるわけではありません。)
その他の回答 (2)
- Sigotoganai
- ベストアンサー率25% (1/4)
別物になったり同一になったりします。 「仮想メモリ」ってのは物理メモリを直で扱わない 間接的な操作すべてに対して言えますので、ごっちゃになるんでしょうね。 --- 以下、WindowsNT系+VCの話限定です --- 正確に言えば、4GB割り当てられるのではなく、4GBまでアクセス出来る可能性がある、です。 アクセスするためにはメモリの確保なりスタック積むなりの手続きが必要です。 で、例えばプロセスがNewだのAllocだのでメモリを確保しようとした場合、 物理メモリが足りない場合はページングファイルで確保します。 ページングファイルでも足りない場合は例外か0が返ります。 (これはOSの機能を使いますが、基本的には言語が担当します。) 1プロセスがそんなにメモリを確保しなくても、全プロセスが確保するトータルメモリが 物理メモリを超えた場合もページングファイルで確保しようとします。 (こっちはOSが担当します)
お礼
どうもありがとうございました。 仮想メモリーが物理的なものだと勘違いしておりました。
- 1pam
- ベストアンサー率21% (109/517)
前提が抜けています. 話題にしているのは何のプロセスのことですか? 「プロセスは物理メモリーとは切り離された仮想メモリーにアクセスする。 仮想メモリーはひとつのプロセスに対して4Gバイト割り当てられる。」 とは,具体的に何について,誰が,何に書いているものなのですか? 公の場で質問をするのなら,回答者が間違わないように前提をしっかり表すのがルールです.
補足
すみません。 前提はOS Windowsです。 ひとつのアプリケーションが起動し、プロセスとして動作した場合の メモリー管理についてのお話です。
お礼
どうもありがとうございます。 失礼しました。記事を読み返したところ、 「仮想メモリーはひとつのプロセスに対して4Gバイト割り当てられる。」 ではなく、 「仮想アドレス空間はひとつのプロセスに対して4Gバイト割り当てられる。」 でした。 今まで仮想メモリは物理的なものだと思っていましたが、仕組みそのものを 意味しているのだと理解できました。