記憶管理(1)

記 憶 管 理(1)
オペレーティングシステム
第9回
記憶管理とは



プログラムに必要なメモリを割り当てる
不要になったメモリを解放する
 別のプログラムに割り当てられるようにするた
め
他の機能もある
大きな問題



プログラムを実行するためには,メモリに格納す
る
メモリの大きさよりも,大きなプログラムを実行す
ることはできない
メモリを大きくしても,それより大きなプログラム
を実行したくなる
よく考えてみると


プログラム全体をメモリに格納する必要はない
プログラムを分割し,実行するのに必要な部分
のみをメモリに格納
 必要ない部分はディスクなどの補助記憶装置
に格納
 実際には,全体をディスクに格納しておき,必
要になった部分だけをメモリに格納する
二つの方法

実際のメモリの大きさよりも,大きなプログラムを
実行できるようにする二つの方法
 オーバレイ
 仮想記憶
オーバレイ
オ ー バ レ イ(1)


プログラムの分割方法や,実行に必要な部分の
指示を利用者(プログラマ)が行う
overlay 重ね割付け
オ ー バ レ イ(2)




A,B,C,Dの4つの部
分(モジュール)から
なるプログラム
プログラムの実行開
始→Aから
AがBを呼び出す
Bが終了→Aに戻る
(Bは不要になる)





AがCを呼び出す
Cが終了→Aに戻る
(Cは不要になる)
AがDを呼び出す
Dが終了→Aに戻る
Aが終了→プログラム
の終了
オ ー バ レ イ(3)


AがBを呼び出すときに,Bをメモリに格納する
メモリを読み込む単位をオーバレイセグメントと
呼ぶ
 先の例では,モジュール=オーバレイセグメン
ト
 いくつかのモジュールをひとつのオーバレイセ
グメントとする場合もある
オ ー バ レ イ(4)
この大きさのメモリがあ
れば,実行できる
オ ー バ レ イ(5)

プログラムの分割と必要な部分の指示はプログ
ラマが行わなければならない


プログラムのことは,プログラムを作った者が
よく知っているはず
しかし,易しいことではない
仮想記憶
仮 想 記 憶(1)



プログラムの分割,メモリへの読み込みを自動的
に行う
 オペレーティングシステムが行う
実際のメモリよりも,大きな仮想メモリ(仮想記
憶)があるようになる
プログラマにメモリの大きさを意識させない
重要!!!
仮 想 記 憶(2)


プログラムが格納さ
れている仮想記憶を
一定の大きさのペー
ジに分割
 ページの大きさを
4096バイトとする
物理的記憶装置(メモ
リ 実記憶)も同じ大き
さのページ枠(ブロッ
ク)に分割
仮 想 記 憶(3)


仮想記憶はディスクな
どの補助記憶装置
プログラムの実行に
伴い,必要なページ
のみを実記憶のペー
ジ枠に格納
仮 想 記 憶(4)



ページ表
仮想記憶の各ページに対して
 実記憶に格納されている
 ページ枠の番号又はページ枠の先頭番地
 実記憶に格納されていない
 そのことが分かるような印
ここでは省略しているので注意!
仮 想 記 憶(5)


プログラム中でデータ
や命令を参照
データや命令の番地
は
 格納されている
ページ番号
 そのページの先頭
からの相対番地
(0~4095)
ページ1の先頭
からの相対番地
前提
ページの大きさを
4096としている
仮 想 記 憶(6)

仮想記憶の4098番地
 ページ番号が1で,相対番地が2である
(相対番地は0~4095:12ビット)
仮 想 記 憶(7)


仮想記憶のページ1
が,65536番地から始
まるページ枠に格納
仮想記憶の4098番地
の実記憶での番地
4098番地は
ページ1の
2番地
仮 想 記 憶(8)



ページ番号1のページ
ページ表を調べると65536番地から始まるページ
枠
実記憶での番地は65536 + 2 = 65538番地
 ページ枠の先頭からの番地は,ページの先頭
からの番地と同じ(相対番地)
仮 想 記 憶(9)




プログラムの実行に伴いある番地を参照
その番地のページ番号
ページ番号をページ表で調べる
該当ページが実記憶にない
 ページフォールトという割込み
 該当ページの実記憶への読み込みと
ページ表更新
仮 想 記 憶(10)

空いているページ枠がない

使用中のページ枠を空けて,そこに読み込む

空けるページ枠の決め方
 ページ置換えアルゴリズム
 次回
仮 想 記 憶(11)


あるページがいつも,同じページ枠に格納され
るとは限らない

格納されるたびに変わると考えるべき
番地を参照するたびに,番地の計算を行う

動的番地変換
仮 想 記 憶(12)


仮想記憶や実記憶を同じ大きさに分割する方
式をページ方式
セグメント方式と呼ばれるものもある
まとめ




実際のメモリよりも,大きなプログラムを実行した
い
実行に伴い,その時,その時で必要な部分だけ
がメモリにあれば良い
オーバレイ
 どこが必要なのかの指示をプログラムが行う
仮想記憶
 必要になった部分をOSがメモリにロードする