No.3ベストアンサー
- 回答日時:
★アドバイス
・物理メモリとは
これはPCに実際に搭載されているメモリ(チップ)のことです。
メモリを増設すれば容量を増やせます。
このアドレスが『物理メモリのアドレス』となります。
・仮想メモリとは
これはPCに実際に搭載されているメモリ(チップ)とハードディスク上に
一時退避されたメモリデータの両方を合わせた全体としてのメモリです。
この『仮想メモリ』の技術により実際に搭載されているメモリ以上の
メモリを仮想的に扱えるようになります。
・たとえば 256MB のメモリを搭載しているPCであるプログラムで 512MBの
データを扱いたいとき、普通に考えれば 256MB のメモリを増設する必要があります。
でも仮想メモリの仕組みにより瞬間的にアクセスするメモリは一部であるため
アクセスしない部分をハードディスクに保存(退避)します。→スワップ・アウト
このようにすることで搭載メモリが256MBでも512MBの巨大なデータを扱えます。
(※詳しくはネットなどで調べましょう)
・OSはどのメモリデータをハードディスクに退避して、退避したハードディスクの
どのデータを実際の物理メモリにスワップ・インするかを管理しています。
プログラマは物理メモリを気にしないで良い。正しくはプログラムから物理メモリを
直接アクセスするのは難しい。→出来なくはないがすべきではない。
・1つのプログラムで使用できる仮想メモリは32ビットOSなら4GBまで。
この4GBのうち上位2GBはOSや共有メモリとして使われます。
下位の2GBがプログラムで使用できる最大の仮想メモリとなります。
ちなみに
プログラムAの仮想アドレス 0x12345678 と
プログラムBの仮想アドレス 0x12345678 は
仮想アドレスとしては同じ値でも物理メモリにマップ(割り当て)しているアドレスは
異なっています。よって仮想アドレスを利用して他のプログラムのデータには基本的に
直接アクセスできません。共有メモリとしてなら可能です。
まとめ:
・『物理メモリのアドレス』は実際に搭載されているメモリのアドレス
『仮想メモリのアドレス』は仮想的に利用されるメモリのアドレスで
実際の物理メモリのアドレスではない。このアドレスが実際にはメモリや
退避されているハードディスク上のデータかはOSが勝手に切り替えるため
知る必要もない。などなど。
この回答への補足
繰り返しになってしまったら申し訳ございません。
「仮想アドレスは実際の物理アドレスを指しているのではない」
ということは理解できました。
このアドレス情報(データ)自体はハードディスク上に存在するの
でしょうか? どこにアドレス情報を格納しているのでしょうか?
No.8
- 回答日時:
参考までに、こんな違いはどうでしょう
CPUとメモリは「メモリーバス」という
何本かの線でつながっています
メモリーバスに送出される情報が
物理メモリのアドレスです。
またCPUには、アセンブラ命令というものがあり
たいていは、次の形式です
<命令コード> <オペランド1>,<オペランド2>
このオペランドに記述されるアドレスが、仮想アドレスです
従って、アドレス変換はCPUが実行していて、ハードディスクは
何ら、関与していません
ここから、イメージがつかめれば、幸いです
参考までに
No.7
- 回答日時:
> このアドレス情報(データ)自体はハードディスク上に存在するの
> でしょうか? どこにアドレス情報を格納しているのでしょうか?
通常、MMU内部のレジスタに格納されています。
仮想アドレスがダイレクトマッピング方式の場合には、どこにもアドレス変換情報は格納されず、ハードウェアで決めうちされています。
No.6
- 回答日時:
★次のリンクをどうぞ。
・第4回 メモリー管理のキー技術「仮想メモリー」を知る
http://itpro.nikkeibp.co.jp/article/COLUMN/20070 …
このページの下のほうに図解されています。
(2ページ以降も読んでみると良いでしょう)
参考URL:http://itpro.nikkeibp.co.jp/article/COLUMN/20070 …
No.5
- 回答日時:
「「仮想アドレスは実際の物理アドレスを指しているのではない」
ということは理解できました。
このアドレス情報(データ)自体はハードディスク上に存在するの
でしょうか? どこにアドレス情報を格納しているのでしょうか?」
OS の内部に「この仮想アドレスは物理アドレスのこれこれである」というテーブルがメモリにあって、このテーブルをNo.4さんのいうところのMMUに設定することで変換しています。この変換は、仮想アドレスを使ってメモリにアクセスする際に、必ず行われるので、高速に変換されるようメモリにテーブルを置きます。
CPUにもよりますが、i386系(例えばペンティアム)だと、I/O するためには物理アドレスが必要で、OS内部の一部では物理アドレスを使っていたりします。
No.4
- 回答日時:
具体的に何のOSの話かを書かないと、漠然とした話になるか、回答者が勝手に想定したプラットフォームに特化した話になってしまいます(PCとは書いていませんしね)。
まず、物理アドレスというのは、物理的にハードウェアの結線によって決まるアドレスのことです。必ずしもメモリが実装されているとは限らず、I/Oやデバイス無しの領域も存在します。
次に、仮想アドレスというのは、MMU(Memory Management Unit)を搭載したハードウェア上で、物理アドレスをTLB等の仕組みによって再配置することで作られます。ハードウェアに退避云々の話は関係ありません。
仮想記憶(仮想メモリ)は、仮想アドレスのしくみを利用して、ハードウェア等の外部記憶装置とスワップしながら、見かけ上大きなメモリを使用できるようにする仕組みのことです。
もちろん、退避先はハードディスクである必要はありません(現時点ではそういう実装が多いというだけです)。
カーネル領域や他のプロセス等を保護する目的で仮想アドレスは使うけれども、仮想メモリは使わないというOSも実在します。
今回は「仮想メモリ」のアドレスとのことですが、このあたりを混同しているといけませんので念のため。
No.2
- 回答日時:
物理メモリは、物理的に実装されているメモリモジュールで、CPUが直接アクセスします。
ハードディスクではありません。アドレスはプログラムを動かすための位置の情報で、固定した通し番号がつけてあります。OSは管理に便利なように、相対的な位置情報も使います。
仮想メモリは、ハードディスク上にとられた、物理メモリが足りなくなったときの一時的な退避領域です。CPUが直接アクセスすることはできません。
仮想メモリのアドレスといえば、ハードディスク上の位置を示すものです。もちろん、仮想メモリの中身にはプログラムを動かすための位置の情報もはいっています。
No.1
- 回答日時:
仮想メモリ
http://e-words.jp/w/E4BBAEE683B3E383A1E383A2E383 …
仮想メモリの設定
http://www003.upp.so-net.ne.jp/shigeri/speedup/s …
Win高速化 PC+ http://www.vector.co.jp/soft/win95/util/se301488 …
X-TUNE http://www.vector.co.jp/soft/win95/util/se276338 …
窓の手 http://www.vector.co.jp/soft/win95/util/se049651 …
窓使いの友 http://www.vector.co.jp/soft/winnt/util/se289588 …
窓の足 http://www.vector.co.jp/soft/winnt/util/se417215 …
以上、レジストリを触るので注意が必要です。
メモリそこそこ(1G以上)あれば、仮想メモリは最低限だけで十分だと思います。
参考URL:http://www.vector.co.jp/vpack/filearea/win/util/ …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Windows 10 インストールしたてのVirtualBoxの仮想マシンにDHCPで割り振られるIPアドレスにつきまして 1 2023/05/03 14:46
- UNIX・Linux VirtualBox ゲストOSにPC内蔵HDDのパーティションをマウントする方法は? 2 2023/05/06 22:52
- Windows 10 仮想メモリ 5 2023/02/21 15:17
- その他(学校・勉強) この中で間違ってある説明はありますか?詳しい方に教えていただきたいです。 A. 1つのプログラムが複 2 2023/07/14 01:15
- オンラインゲーム 2023年以降にマビノギを仮想PCでプレイする方法 1 2023/01/30 11:39
- 仮想通貨(暗号通貨) メタマスクのネットワーク 1 2023/05/27 08:15
- VPN 無料のwifiはなぜ危険性高い? VPN プライベートDNSモードにすれば安全? 2 2022/06/04 18:23
- Windows 10 VirtualBoxで起動できないゲームがあります 2 2022/12/17 06:13
- CPU・メモリ・マザーボード 「コンピューターのメモリが不足しています」 3 2022/12/15 22:07
- その他(コンピューター・テクノロジー) batファイルでPCの設定内容やプロパティーを取得したいのですが、コマンド1個で1ファイルとなるのを 2 2022/04/27 15:27
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAの配列サイズとメモリに関して
-
C言語で、メモリを解放しないで...
-
VB.netでUSBメモリの固有I...
-
「ヒープサイズの設定」て何?
-
「memcpy」と「strcpy」について
-
C#のOutOfMemoryException発生...
-
EXCEL-VBAにてADOのレコードセ...
-
Linuxでexit()をフックするには?
-
メモリのセグメント違反の解決...
-
メモリの増加に関して
-
FindFirstFile ハンドル開放
-
ExcelのVBAでメモリ解放できない
-
シェル(perl)が使用するメモリ...
-
ReadEventLogについて
-
ファイルマッピング関数で失敗
-
C言語における再帰呼び出しの...
-
mallocとfree
-
DalvikとJVM
-
メモリアクセス時間の計測方法
-
動的メモリとexit(C言語)
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語で、メモリを解放しないで...
-
VBAの配列サイズとメモリに関して
-
「ヒープサイズの設定」て何?
-
エクセルのメモリ使用状況/Appl...
-
エクセルVBA 大容量CSVファイル...
-
EXCEL-VBAにてADOのレコードセ...
-
バッチファイルでの実行EXEのメ...
-
メモリ不足
-
メモリのセグメント違反の解決...
-
メモリが不足しています(VBA)
-
【C言語】再帰が時間がかかる...
-
ファイルマッピング関数で失敗
-
C言語:関数のメモリ上でのサイ...
-
メモリの解放の仕方
-
VC++におけるメモリ使用量について
-
メモリの消費量について
-
Bitmapを重ね合わせる方法
-
メモリを解放しないとどうなる?
-
C#のOutOfMemoryException発生...
-
メモリの解放について VB6 VBA
おすすめ情報