Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
  • ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Windowsの仮想メモリシステムについて)

Windowsの仮想メモリシステムについて

このQ&Aのポイント
  • Windowsの仮想メモリシステムについての質問内容と解釈について解説します。
  • Windowsの仮想メモリシステムにおける物理メモリ、仮想メモリ領域、ページファイル、コミットページ、ワーキングセットページの役割と関係について説明します。
  • C++プログラムにおいて、約2000MBのメモリが割り当てられた場合、タスクマネージャや専用ソフトに表示されるメモリ使用量の差異について考察します。

質問者が選んだベストアンサー

  • ベストアンサー
  • unokwave
  • ベストアンサー率58% (966/1654)
回答No.2

物理メモリは、CPUが持つアドレス バスに接続されているメモリでRAM限定ではない。 物理アドレスは、アドレス バスの信号値と1対1の関係にあって、OSによって変更できない。 論理アドレスは、CPUが持つMMU機能によって実現されているもので、仮想記憶の基底。 プロセス等毎に独立したアドレス空間を割り当てられている。 仮想メモリは、MMU機能が持つページ機能によってメモリをページ単位で任意の物理アドレスに割り当てたり、内容を他の記憶媒体に追い出して割り当てを解除したりしている実現されている。 OSによって管理されている。 ページファイルは、仮想メモリから退避させられる内容の保存先。 そのプログラムはメモリの予約をしているだけですね。 Windowのバージョンによっても挙動が変わるはずです。

MetalLover
質問者

お礼

御回答ありがとうございます。 アドレスバスやMMUなど、知らない言葉が出てきて、 まだまだ理解が甘かったという事が分かりました。

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • u-bot
  • ベストアンサー率58% (1736/2988)
回答No.1

かなり技術的な内容なのでこちらのカテゴリーよりプログラミング関連の方が回答がつきやすいと思います。 一つ質問なのは確保したメモリに適当な値を代入しても同じ結果になりますか? ------------------------------------------------------------ #include <stdio.h> #include <algorithm> char *p; for(int i=1; i<=2000 ; i++){ p=new char[1024*1024]; std::fill(p, p+1024*1024, 0); } } ------------------------------------------------------------

MetalLover
質問者

お礼

u-botさん はじめまして、御回答ありがとうございます。 御提示頂いたプログラムは、2000MB分の文字を、pに割り当てたメモリ領域に書き込むというものですね。 書き込みが終了した時点で、もう一度タスクマネージャを見ると、 ワーキングセットとプライベートワーキングセットの値が、一気に2000MBくらい上昇し、コミットチャージとほぼ同じ値になっていました。 (ワーキングセットの値は、コミットチャージの値を少し上回りました。) また、タクスマネージャのパフォーマンスタブで見る事ができる、物理メモリの使用量の合計も、一気に2000MBくらい上昇しました。 この事から、プログラムに割り当てたメモリ領域に対して、データの読み書きが行われない限り、物理メモリは使用されないのだという事が分かりました。 ありがとうございました。

すると、全ての回答が全文表示されます。

関連するQ&A