差分

移動先: 案内検索

記憶管理

72 バイト追加, 2010年11月11日 (木) 14:36
/* 局所参照性 */
[[File:Memory_fig4.png|thumb|left|300px|キャッシュのモデル]]
局所参照性とは「プログラムは同じ場所を繰り返しアクセスする性質を持ちやすい」というものです。常に成立するわけではありません。もしプログラムがランダムにメモリ空間全域をアクセスする性質を一般に持っていたならば、たぶん仮想記憶のようなシステムは無意味だったでしょう。なぜならば大量のページイン・ページアウトが発生しまうからです。このように大量のページイン・ページアウトが発生してしまう状態をスラッシングと呼びます。しかし殆んどのプログラムは局所参照性を持つので、使われていない部分を外部に移しても全体としてみた場合、リーズナブルなパフォーマンスが得られているのです。局所参照性とは「プログラムは同じ場所を繰り返しアクセスする性質を持ちやすい」というものです。常に成立するわけではありません。もしプログラムがランダムにメモリ空間全域をアクセスする性質を一般に持っていたならば、たぶん仮想記憶のようなシステムは無意味だったでしょう。なぜならば大量のページイン・ページアウトが発生しまうからです。このように大量のページイン・ページアウトが発生してしまう状態をスラッシングと呼びます。しかし殆んどのプログラムは局所参照性を持つので、使われていない部分を外部に移しても全体としてみた場合、リーズナブルなパフォーマンスが得られています。
この考え方は仮想記憶に限らずCPUのキャッシュメモリなどでも使われています。最近のCPUはキャッシュが512KB、1MB、2MBとどんどん増えています。これはメモリからデータをフェッチしてきて、CPU内のキャッシュにおき、そこをアクセスします。当然、外にあるメモリよりCPU内のキャッシュの方がアクセス速度は格段に良いですから、それだけ速度が出るということになります。この考え方は仮想記憶に限らずCPUのキャッシュメモリなどでも使われています。最近のCPUはキャッシュが512KB、1MB、2MB という具合にどんどん増えています。これはメモリからデータをフェッチしてきて、CPU内のキャッシュにおき、そこをアクセスすることで高速化を狙います。当然、外にあるメモリよりCPU内のキャッシュの方がアクセス速度は格段に良いですから、それだけ速度が出るということになります。
これを一般化してみると、「データを高速にアクセスできるほど装置は容量当たりのコストが高いので、容量とコストを勘案し多段に装置を組合せることによって、リーズナブルに高速で大容量のアクセスできる記憶装置を用意することができる」ということになります。メモリ、仮想記憶、ファイルシステムなど色々な場面でこの考え方が使われます。これを一般化してみると、「データを高速にアクセスできるほど装置は容量当たりのコストが高いので、'''容量とコストを勘案し多段に装置を組合せることによって、リーズナブルに高速で大容量のアクセスできる記憶装置を用意'''することができる」ということがいえるでしょう。メモリ、仮想記憶、ファイルシステムなど色々な場面でこの考え方が現れます。
このアクセスが高速で小容量の装置と低速で大容量の装置との間でデータを移動させなければなりませんが、この時どのデータを選ぶかが問題になってきます。よく使われるデータは速い方へ、なかなか使われないデータは遅い方へ移すのが合理的です。ただし、「良く使われる」というのは過去の話ではなく将来の話だという所がポイントです。「良く使われるだろう」と判断するルールを決めなければなりません。このルールでよく使われるのがLRU このアクセスが高速で小容量の装置と低速で大容量の装置との間でデータを移動させなければなりませんが、この時どのデータを選ぶかが問題になってきます。よく使われるデータは速い方へ、なかなか使われないデータは遅い方へ移すのが合理的です。ただし、「良く使われる」というのは過去の話ではなく将来の話だという所がポイントです。「良く使われるだろう」と判断するルールを決めなければなりません。このルールでよく使われるのがLRU (least recently used)です。LRUは直訳すると「最近、最も使われていないもの」ということで、簡単に言えば一番暇なものを入れ換えるという単純な話です。LinuxのページングもLRUのポリシーで行っています。です。LRUは直訳すると「最近、最も使われていないもの」ということで、簡単に言えば一番暇なものを入れ換えるという単純な話です。LinuxのページングもLRUのポリシーで行っています。
== 動的なメモリ領域確保 ==
匿名利用者