記 憶 管 理(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がメモリにロードする
© Copyright 2024 ExpyDoc