記憶管理についてまとめてみるよ。
昨日の待ち行列に続きまして、今日は記憶管理について。
勉強していて気づいたんだけども、自分は基本的な事もほとんど知らない。
まあ、そもそもITの分野って、幅が広すぎて知らなくても仕事ができちゃうわけなんですが、どっかで繋がっているので、知らないと知ってるじゃあ、新しい事をするときのスピード感が違うわけで、やっぱり必要だなって思うわけです。
そんなわけで、ITの源泉、システム構成より、記憶管理について。
■基本
CPUとメモリの関係(この例えがすばらしくわかりやすかった)
CPUをオッサンに例える。
オッサンは一人で働いている。で、メモリは机。
オッサンは机を使って仕事をしているので、机は広い方が仕事が捗る。
でも、オッサンの頭が良くないと、机(メモリ)が広くても扱いきれない。
逆に、オッサンの頭がよくても、机(メモリ)が狭いと能力を発揮できない。
ちなみに、オッサンが二人居る場合は、デュアルコアと呼ぶ。
さて、
■仮想記憶技術
前述の通り、メモリは作業するための場所である。
しかし、メモリの容量って結構少ない。例えば今使ってるmacbookproは8GB。
メモリ以外の記憶装置で、ハードディスクとかUSBぐらいは使ったことある人もいると思うけど、今って、普通に1TBとかの容量のやつが売っている。
じゃあなんで、こんなメモリの容量が少ないかっていうと、単純に高いから。
昔はもっともっと高価だったけど、未だに高い。
んで、たいして容量を積んでいないメモリを大きく見せる為の仕組みが、仮想記憶技術なのである。(長い..)
仮想記憶の仕組み
メモリの容量は少ない。ので、外部記憶装置を使って足りない分を補う。
ただ、メインはあくまで、メインメモリである。
しかしながら、メモリを利用するアプリ等は常に同じ量のメモリを使用しているわけではない。
つまり、メモリ上には必要な時に必要なだけの容量さえあれば、良い。
なので、必要なとき以外は外部に置いておいて、メモリと外部を行き来させる。
これが、仮想記憶の仕組みである。
方式
仮想記憶の方式には主に2パターンあり、メインはページング方式である。
ちなみに、要点は、
ページング方式:ページ単位の固定長
セグメント方式:セグメント単位の可変長
ページング方式
アドレス空間をページ単位で扱う。
例えば、1ページに100のアドレスを収納できて、外部記憶に置いてあるそれが必要になったときには、1ページごと主記憶(メモリ)の必要のないページと交換する。
交換するページの選択
ページ選択は当然ながら、ある規則に基づいて決定される。
LRU..Least Recently Used 直訳すると「最も過去使われた」
FIFO...First In First Out 直訳すると「最初に入って最初に出て行く」
良く覚えていた方が良いのは、FIFOの場合、メモリの容量を大きくすると逆にページ交換が多くなって、処理が遅くなる事があること
なんかまとまってないけど、そんな感じで!