- ベストアンサー
メインメモリの使われ方
PCの基本動作について疑問に思いました。 よく使うデータを低速なHDDから高速なメモリに移して CPUとメモリ間でデータを移動しながら、 処理をするようですが、 処理をするデータは全てメモリに入れてから 作業を行うのでしょうか? 例えば、音楽データは5MBくらいで今の時代のメモリには全て入りますが、動画は200MBくらいなので メモリには入りません。 音楽も一昔前のPCのメモリ搭載量では すべてのデータを入れてから 再生するとしたら再生できませんが、 結構古いPCでも再生できます。 動画再生や音楽再生の時は データを全てメモリに入れるのではなくて、 HDDアクセスランプが点滅することで分かるのですが、 直接HDDから読み込んでいると考えるのですか? wordなど比較的小さなデータはすべてメモリに入れているということですか? wordファイルを新しく作った場合ファイル保存をしていない時はHDD上にファイルがないわけですから、 メモリにあるということですか? 私が考えるに編集などをしたりする時は メインメモリに入れて、 再生するだけの時はHDDから直接読み出す、 またはストーリーミング再生みたいに徐々にメモリに 入れて再生ということでよろしいでしょうか。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>CPUとメモリ間でデータを移動しながら、処理をするようですが、 >処理をするデータは全てメモリに入れてから >作業を行うのでしょうか? YESの時もあるし、NOの時も有ります。 多分、NOの時について言った方が、質問されている内容について 理解できるかとおもいます。 では、ソフトを起動する時に、全てをHDDから読み込むのか? これについては、単体で出来上がっている(1つのモジュールで) ソフトは読み込んでしまいます。 wordとかEXCELになるとたくさんのモジュールからなるため 全てを読み込むのでないです。 それと同じく、データについても同じようなことが言えるのです。 例えて言うならば、Wordで新規ファイルを作成したとしましょう。 その時は、メモリ上に新規ファイルのイメージを作るのと同時に HDD内のワークフォルダに、一時的な作業領域を確保しています。 この作業領域に作られるファイルは、本の数キロバイトなので アクセスランプが点灯しても判らないレベルです。 また、すでに作成されているファイルが数十ページになっていて バイト数的にもMBになっている場合や、イメージファイル(写真ですとか動画ファイル)が多数貼り付けている場合は、ソフト(この場合はWordね)がメモリ上に何メガの作業領域を確保すると言う指定された分しか読み込みません。 そのため、各ソフトでも同じなのですが、メモリ上に持てる作業領域分しか読み込みません。 そのために、最初に言いました YESもあるしNOも有るわけです。 また、逆な言い方をすると、WordやEXCELで経験しているかも知れませんが、作業途中(編集中にね)にパソコンがハングアップ(黙ってしまった状態)になると、メモリー内に読み込めるだけのファイルの場合は消えてしまった と言う経験をされているかな? このような現象が起きるのもこのせいです。 もし、読み込めないだけの大きさのファイルならどうなるか? もついでに教えておきますね。 その時は、ファイル自体は残っていますし編集される前の状態(以前セーブした状態)なんですが、正常に終わらせていないため「編集中」というフラグが立っているので、単純には読み込むことが出来ないのです。 同じように、ストリーミングについても考え方は同じです。 現在のストリーミングについては、最初に読み込まれるのは数キロバイトです。 その後、該当のファイルをダウンロード(ワークファイルとして)しながら動画ですとか音声を再生しているのです。 私は、経験がないので何とも言いがたいのが、再生しようとした時のHDDの空き容量は大丈夫なはずだったのが、巨大な添付ファイル付きのメールを受信したら、容量不足になった場合は、経験がないので何ともいいがたいところです。 ご参考にして下さい。
その他の回答 (2)
- chukenkenkou
- ベストアンサー率43% (833/1926)
#2回答者です。 絵のキャッシュの位置を訂正します。 HDD ↑ ↓ I/Oバッファ←→キャッシュ ↑ ↓ メインメモリ ↑ ↓ 仮想メモリ
- chukenkenkou
- ベストアンサー率43% (833/1926)
メモリという言葉を乱発していますが、メインメモリ と仮想メモリというものがあります。 Windows等のアーキテクチャがどこまで公開されている か分からないのですが、OSの一般的な仕組みとして 回答します。 実際のCPUで処理するにはメインメモリに入れておく 必要がありますが、入りきらない場合は、システム ファイル(スワップやページ)に一時的に退避し、 メインメモリに空きができればまた読み込むという 動作を繰り返します。 ただし、すべてのファイル上のデータをずっと退避 する訳ではなく、処理するのに必要なデータだけ です。 もし、仮想メモリにもなくなったデータを再度、 参照する場合はHDD等を再読み込みすることになり ますが、再読み込みをなるべく少なくするために キャッシュという作業用の領域が別にあります。 >処理をするデータは全てメモリに入れてから >作業を行うのでしょうか? 違うということが、上記の回答で分かりますか? >HDDアクセスランプが点滅することで分かるのですが、 >直接HDDから読み込んでいると考えるのですか? 直接、読み込んでCPUで処理するということでは ありません。 HDD ↑ ↓ I/Oバッファ ↑ ↓ メインメモリ←→キャッシュ ↑ ↓ 仮想メモリ かなり大まかな絵ですが、HDDから一旦、I/Oバッファ 経由で入力され、CPUで処理するためにメインメモリに 入れたり、仮想メモリに退避したり、キャッシュから 取り出したりという動作を繰り返します。 >wordファイルを新しく作った場合ファイル保存をして>いない時はHDD上にファイルがないわけですから、 >メモリにあるということですか? WORDやEXCELなどでは、アプリケーション自身で、編集 中に作業ファイルを作って、そこに一時的に書き込ん だり読み込んだりという動作を繰り返しています。 >またはストーリーミング再生みたいに徐々にメモリに >入れて再生ということでよろしいでしょうか。 WORDであるとかEXCELであるとか、ストリーミング 再生であるとかは、OSでは意識されないはずです。 OSから見れば、単なるアプリケーションデータです。