- ベストアンサー
仮想メモリアドレスについて
- みんなの回答 (8)
- 専門家の回答
質問者が選んだベストアンサー
★アドバイス ・物理メモリとは これはPCに実際に搭載されているメモリ(チップ)のことです。 メモリを増設すれば容量を増やせます。 このアドレスが『物理メモリのアドレス』となります。 ・仮想メモリとは これはPCに実際に搭載されているメモリ(チップ)とハードディスク上に 一時退避されたメモリデータの両方を合わせた全体としてのメモリです。 この『仮想メモリ』の技術により実際に搭載されているメモリ以上の メモリを仮想的に扱えるようになります。 ・たとえば 256MB のメモリを搭載しているPCであるプログラムで 512MBの データを扱いたいとき、普通に考えれば 256MB のメモリを増設する必要があります。 でも仮想メモリの仕組みにより瞬間的にアクセスするメモリは一部であるため アクセスしない部分をハードディスクに保存(退避)します。→スワップ・アウト このようにすることで搭載メモリが256MBでも512MBの巨大なデータを扱えます。 (※詳しくはネットなどで調べましょう) ・OSはどのメモリデータをハードディスクに退避して、退避したハードディスクの どのデータを実際の物理メモリにスワップ・インするかを管理しています。 プログラマは物理メモリを気にしないで良い。正しくはプログラムから物理メモリを 直接アクセスするのは難しい。→出来なくはないがすべきではない。 ・1つのプログラムで使用できる仮想メモリは32ビットOSなら4GBまで。 この4GBのうち上位2GBはOSや共有メモリとして使われます。 下位の2GBがプログラムで使用できる最大の仮想メモリとなります。 ちなみに プログラムAの仮想アドレス 0x12345678 と プログラムBの仮想アドレス 0x12345678 は 仮想アドレスとしては同じ値でも物理メモリにマップ(割り当て)しているアドレスは 異なっています。よって仮想アドレスを利用して他のプログラムのデータには基本的に 直接アクセスできません。共有メモリとしてなら可能です。 まとめ: ・『物理メモリのアドレス』は実際に搭載されているメモリのアドレス 『仮想メモリのアドレス』は仮想的に利用されるメモリのアドレスで 実際の物理メモリのアドレスではない。このアドレスが実際にはメモリや 退避されているハードディスク上のデータかはOSが勝手に切り替えるため 知る必要もない。などなど。
その他の回答 (7)
- gyrocompas
- ベストアンサー率23% (24/104)
参考までに、こんな違いはどうでしょう CPUとメモリは「メモリーバス」という 何本かの線でつながっています メモリーバスに送出される情報が 物理メモリのアドレスです。 またCPUには、アセンブラ命令というものがあり たいていは、次の形式です <命令コード> <オペランド1>,<オペランド2> このオペランドに記述されるアドレスが、仮想アドレスです 従って、アドレス変換はCPUが実行していて、ハードディスクは 何ら、関与していません ここから、イメージがつかめれば、幸いです 参考までに
お礼
詳細情報を提供して頂きましてありがとうございます。 なんとなくですが、イメージがつかめました。
- jacta
- ベストアンサー率26% (845/3158)
> このアドレス情報(データ)自体はハードディスク上に存在するの > でしょうか? どこにアドレス情報を格納しているのでしょうか? 通常、MMU内部のレジスタに格納されています。 仮想アドレスがダイレクトマッピング方式の場合には、どこにもアドレス変換情報は格納されず、ハードウェアで決めうちされています。
- Oh-Orange
- ベストアンサー率63% (854/1345)
★次のリンクをどうぞ。 ・第4回 メモリー管理のキー技術「仮想メモリー」を知る http://itpro.nikkeibp.co.jp/article/COLUMN/20070816/279802/ このページの下のほうに図解されています。 (2ページ以降も読んでみると良いでしょう)
お礼
参照してみましたが、非常に参考になる内容でした。 ありがとうございます。
- chirubou
- ベストアンサー率37% (189/502)
「「仮想アドレスは実際の物理アドレスを指しているのではない」 ということは理解できました。 このアドレス情報(データ)自体はハードディスク上に存在するの でしょうか? どこにアドレス情報を格納しているのでしょうか?」 OS の内部に「この仮想アドレスは物理アドレスのこれこれである」というテーブルがメモリにあって、このテーブルをNo.4さんのいうところのMMUに設定することで変換しています。この変換は、仮想アドレスを使ってメモリにアクセスする際に、必ず行われるので、高速に変換されるようメモリにテーブルを置きます。 CPUにもよりますが、i386系(例えばペンティアム)だと、I/O するためには物理アドレスが必要で、OS内部の一部では物理アドレスを使っていたりします。
- jacta
- ベストアンサー率26% (845/3158)
具体的に何のOSの話かを書かないと、漠然とした話になるか、回答者が勝手に想定したプラットフォームに特化した話になってしまいます(PCとは書いていませんしね)。 まず、物理アドレスというのは、物理的にハードウェアの結線によって決まるアドレスのことです。必ずしもメモリが実装されているとは限らず、I/Oやデバイス無しの領域も存在します。 次に、仮想アドレスというのは、MMU(Memory Management Unit)を搭載したハードウェア上で、物理アドレスをTLB等の仕組みによって再配置することで作られます。ハードウェアに退避云々の話は関係ありません。 仮想記憶(仮想メモリ)は、仮想アドレスのしくみを利用して、ハードウェア等の外部記憶装置とスワップしながら、見かけ上大きなメモリを使用できるようにする仕組みのことです。 もちろん、退避先はハードディスクである必要はありません(現時点ではそういう実装が多いというだけです)。 カーネル領域や他のプロセス等を保護する目的で仮想アドレスは使うけれども、仮想メモリは使わないというOSも実在します。 今回は「仮想メモリ」のアドレスとのことですが、このあたりを混同しているといけませんので念のため。
- okormazd
- ベストアンサー率50% (1224/2412)
物理メモリは、物理的に実装されているメモリモジュールで、CPUが直接アクセスします。ハードディスクではありません。 アドレスはプログラムを動かすための位置の情報で、固定した通し番号がつけてあります。OSは管理に便利なように、相対的な位置情報も使います。 仮想メモリは、ハードディスク上にとられた、物理メモリが足りなくなったときの一時的な退避領域です。CPUが直接アクセスすることはできません。 仮想メモリのアドレスといえば、ハードディスク上の位置を示すものです。もちろん、仮想メモリの中身にはプログラムを動かすための位置の情報もはいっています。
- 2kaku34
- ベストアンサー率30% (101/329)
仮想メモリ http://e-words.jp/w/E4BBAEE683B3E383A1E383A2E383AA.html 仮想メモリの設定 http://www003.upp.so-net.ne.jp/shigeri/speedup/speedup2.html Win高速化 PC+ http://www.vector.co.jp/soft/win95/util/se301488.html X-TUNE http://www.vector.co.jp/soft/win95/util/se276338.html 窓の手 http://www.vector.co.jp/soft/win95/util/se049651.html 窓使いの友 http://www.vector.co.jp/soft/winnt/util/se289588.html 窓の足 http://www.vector.co.jp/soft/winnt/util/se417215.html 以上、レジストリを触るので注意が必要です。 メモリそこそこ(1G以上)あれば、仮想メモリは最低限だけで十分だと思います。
関連するQ&A
- 仮想アドレス空間
こんにちは 仮想アドレス空間と仮想メモリはどういう関係ですか? 物理メモリと仮想メモリはわかりますがwindows 2000にある4GBの仮想アドレス空間と仮想メモリはどういうつながりがありますか?
- 締切済み
- Windows NT・2000
- 仮想メモリはいる??
現在Windows Vista(Home)を使っており、メモリ消費が激しいということなので2GBにしたのですが、効果を発揮していないようです?? というのも物理メモリ2GBなのですが、使用率は50%前後で、今後もそれほど起動ソフトを増やすつもりはないのです。 そこで気になったのですが、物理メモリでまだ半分しか使ってないので、仮想メモリをまったく使わなくてもいいかと思うのですが、どうでしょう?(なるたけハードディスクを痛めたくないので) マイコンピュータからメモリの設定をしようとしたら 「200MB以上にしないと不安定...」とか言われました。 でも物理メモリで補っているので大丈夫ですか?? あと仮想メモリを全く使わないようにするにはメモリの最低と最高0MBにしたらいいのでしょうか? 教えてください。
- ベストアンサー
- その他([技術者向] コンピューター)
- 仮想メモリは小さいほうが良い??
仮想メモリを大きくすると起こる現象 ↓ 仮想メモリ領域を必要とするソフトがあり、 そのソフトの実行時にハードディスク上でファイルの断片化が発生してしまう。 しばらくその状態で使用していると、 ハードディスクに断片化されたファイルが多く存在してしまうことになり、 結果パフォーマンスが低下する。 また、仮想記憶領域自体がハードディスクを圧迫し、データのやり取りの際に処理速度が低下する。 と認識していますが正しいのでしょうか? もしこの推測が正しいのであれば、 パソコン上での日常の作業は物理メモリ(768メガバイト)で十分まかなえているので、 出来るだけ仮想メモリを小さい値に設定しようと思っています。 (ちなみに上記の現象も自身の予測です。)
- ベストアンサー
- Windows XP
- 仮想メモリについて
仮想メモリというのは物理メモリがいっぱいになった時のみ使用されると思うのですが、タスクマネージャーを見るところ私のPCが搭載している1Gを超える事はほぼないように思われます。 これの初期サイズ、最大サイズを0にしても問題はないのでしょうか? デメリットとしては物理メモリが全て使用された時にアプリが起動しない、もしくは動きが遅くなることだと思うのですが、メリットは何かないのでしょうか? 逆にハードディスクが空いているのであれば仮想メモリの最大サイズを大きくしてもデメリットはないのでしょうか?
- ベストアンサー
- Windows系OS
- 仮想メモリについて 教えてください
仮想メモリ関連の既出の質問を探してみたのですが 自分が疑問に思っていることへの回答が見当たらなかったので 質問させていただきます WindowsXPではプログラムを実行する際に プログラム全体及び 関連データをすべて物理メモリまたは仮想メモリに割り当てる のでしょうか? どういうことかと言いますと 例として 物理メモリ256MB 仮想メモリ256MB として 現動作中の空き物理メモリ100MB 空き仮想メモリ256MBの状況で 1 50MBのプログラムを実行した時はすべて物理メモリに割り 当てられるのか? 2 加えて60MBのプログラムを実行した時には10MB分が仮想メモリ に割り当てられるのか? 3 加えて50MB分のプログラムを実行して そのプログラム上で 300MBのデータを読み込もうとした時には 仮想メモリが少ない 等のエラーが発生するのか? 条件がアバウトかとは思いますが よろしくお願いします
- ベストアンサー
- Windows系OS
- 仮想メモリをリムーバブルドライブで…
メモリ不足に悩んでいます。 今は出来る限りの増設はしたのですがそれでも足りません。 そこで仮想メモリ領域を増やそうと思うのですが 調べると、ハードディスクだと断片化がどうのこうの… そこで、仮想メモリをDVDRAMとか、USBフラッシュメモリなどに領域を作ることはできないのでしょうか? また、仮にできたとして、仮想領域を物理的に取り外してしまった場合、コンピュータはどうなるのでしょうか? お願いします。教えて下さい。
- ベストアンサー
- Windows XP
- プロセスと仮想メモリについて
プロセスと仮想メモリについて こんばんは。 プロセスについて勉強しています。 その過程で、「プロセスは物理メモリーとは切り離された仮想メモリーにアクセスする。 仮想メモリーはひとつのプロセスに対して4Gバイト割り当てられる。」 とありました。 今まで仮想メモリーと言うのは、ページングファイル(物理メモリの代わりに使用される ハードディスクの領域)のことだと思っていましたが、この仮想メモリーと、プロセスを 語る上での仮想メモリーとは別物なのでしょうか? 宜しくお願いいたします。
- ベストアンサー
- その他([技術者向] コンピューター)
- 仮想メモリについて
今、物理メモリがちょうど1Gあるんですが、仮想メモリが異常に働いて、物理メモリの負担がほとんどないような状態です。 ページングファイルを無しにするなど、いろいろ試してみました。 どうすれば仮想メモリの値を0にできるんでしょうか?
- 締切済み
- その他(ITシステム運用・管理)
- RAMディスクと仮想メモリ
Windows Vista(32ビット版)に8GBのメモリを搭載しています。 OS管理外のメモリをRAMディスクとして使用し、 そこに容量目一杯の仮想メモリを作成した場合(HDD内の仮想メモリはOFF)、 8GBの物理メモリを使っていることと同じになるのでしょうか? ふと疑問に思ったので教えてください。 よろしくお願いします。
- ベストアンサー
- CPU・メモリ・マザーボード
- 仮想メモリと物理メモリの使い分け
仮想メモリと物理メモリどちらにデータを置くかの判断はOSの役目ですが、 それらは優先度、タスクバーで実行中などの状態で判断されるんですか? バックグランドのアプリを仮想メモリ、 実行中のブラウザなどを物理メモリでやってくれるのが理想なんですが。 そこまでOSは賢いものなんですか? たまにブラウザのタブを切り替える時 HDDのアクセス音がして待たされることがあります。 これは仮想メモリ上にあるということだと思うんですよ。 仮想メモリをなしという設定もできますが、 XPでは1GB積んでいればそれにしても大丈夫ですか?
- ベストアンサー
- その他(Windows)
お礼
非常にわかりやすいご説明ありがとうございます。 なんとか理解できました。
補足
繰り返しになってしまったら申し訳ございません。 「仮想アドレスは実際の物理アドレスを指しているのではない」 ということは理解できました。 このアドレス情報(データ)自体はハードディスク上に存在するの でしょうか? どこにアドレス情報を格納しているのでしょうか?