第5回 メモリ管理(2) オーバレイ方式 論理アドレスとプログラムの再配置 静的再配置と動的再配置 仮想記憶とメモリ階層 セグメンテーション 第5回 メモリ管理(2) オーバレイ方式 論理アドレスとプログラムの再配置 静的再配置と動的再配置 仮想記憶とメモリ階層 セグメンテーション ページング
オーバレイ方式 仮想記憶機構を持たないコンピュータで使用されていた ユーザがプログラムを論理的なプログラム単位(例えば手続きやその集まり)に分割 同時に実行されないプログラム単位を必要なときに主記憶上の同じ位置に読み込んで使用する 手順は、全てユーザが指定 プログラムの構造の正確な知識を要する オーバレイローダ
オーバレイの実行される様子 オーバレイ サブモジュール1 主モジュール 主モジュール サブ モジュール1 サブ モジュール2 サブモジュール2
論理アドレスとプログラムの再配置 論理アドレス空間 論理アドレス 実際に割り当てられる物理アドレス(実アドレス)とは分離・独立したプログラム内で閉じたアドレス空間 論理アドレス 論理アドレス空間におけるアドレス 論理アドレスによってプログラムを記述することによって、主記憶への割り当てに柔軟性が出る 再配置可能プログラム
アドレスマッピング(アドレス変換) 物理アドレス(実アドレス):命令やデータの存在する主記憶上のアドレス 絶対アドレス:実装されたメモリに対するアドレスで、値はあらかじめ固定 物理アドレス空間:物理アドレスで形成されるアドレス空間 アドレスマッピング:論理アドレス空間から物理アドレス空間へのマッピング(写像) 静的再配置 動的再配置
プログラムの再配置 静的再配置(static relocation) 動的再配置(dynamic relocation) プログラムは相対アドレス形式で保存 リンク時、またはロード時に全ての命令のオペランドを絶対アドレス形式に書き換える 再配置操作にハードウェアの支援は必要としない 動的再配置(dynamic relocation) 各命令の実行時にハードウェアによって論理アドレスから物理アドレスへの変換(マッピング)が行われる メモリ詰め直しによって、主記憶の利用効率を向上できる
仮想記憶 主記憶と補助記憶装置(HDDなど)を用いて、主記憶の大きさにとらわれない仮想的な記憶装置を提供する機構 仮想記憶には、構成するデバイスのアクセス速度、容量に応じたメモリ階層が存在する
メモリ階層 高速 容量小 容量大 低速 プロセッサ キャッシュメモリ (高速半導体メモリ) 主記憶(半導体メモリ) 補助記憶装置 (磁気ディスクなど) 低速 容量大
仮想アドレス空間、仮想アドレス プログラムは、補助記憶装置に置かれ、必要なときに主記憶にロードされる メモリ階層を意識せずにすむように、統一的な仮想記憶装置として扱う プログラムは常に仮想的な記憶装置にアクセスする 仮想アドレス: 仮想記憶装置上の場所を指定するためのアドレス 仮想アドレス空間: 仮想アドレスによって形成されるアドレス空間 仮想アドレスは、命令実行時にハードウェアによって物理アドレス(実アドレス)に変換される 一般に仮想アドレスと論理アドレスは1対1に対応する
仮想記憶の種類 単一仮想記憶(single virtual storage) システムで一つの仮想アドレス空間 多重仮想記憶(multiple virtual storage) システムで複数の仮想アドレス空間をもつ cf.) IBM MVS 物理アドレス空間 仮想アドレス空間 n 2 n 1 2 未使用 1 プログラム アドレス変換表
仮想メモリの手法 プログラムを分割して、分割した単位でアドレス変換と記憶領域の割り当てを行う セグメンテーション(可変区画方式) 内部構造に基づいて分割 分割したものを、セグメントという サイズは、可変 ページング(固定区画方式) プログラム内部の論理構造とは無関係に、システムが自動的に分割 分割したものをページという サイズはシステムで固定
セグメンテーションの仕組み 主記憶 セグメント番号 セグメントテーブル セグメントベース (開始アドレス) 1 300K 0 900K 主プログラム 0 0 0 1 300K 0 900K 550K 300K サブルーチン1 主プログラム 1 1 サブルーチン1 550K データ サブルーチン2 2 2 サブルーチン2 3 900K ライブラリ 3 ライブラリ 4 補助記憶 データ 4 存在ビット 主記憶
セグメンテーションにおける メモリマッピング 物理アドレス =セグメントの先頭アドレス(セグメントベース)+セグメント内変位 仮想アドレス=セグメント番号+セグメント内変位 セグメントテーブルベースアドレス b 仮想アドレス(2次元アドレス) セグメント番号 セグメント内変位 s d + セグメントテーブル b s セグメントベース 物理アドレス 存在ビット セグメント サイズ アクセス 保護情報 s' + s' + d
セグメントに対するアクセスの手順 主記憶上にない セグメントをアクセス 0 NO 1 YES NO YES アクセス保護情報を読み出す 開始 ハードウェアが セグメントテーブルをひく アクセス保護情報を読み出す 0 存在ビット? NO アクセスが 許可されている 1 物理アドレスを計算 セグメントフォルト 割り込み発生 YES 割り込み発生 存在ビットを調べる 変位<セグメントサイズ NO YES 物理アドレスをアクセス 割り込み発生 正常終了
セグメンテーションにおける 空き領域の確保 セグメンテーションは、仮想アドレス空間上で連続しても、主記憶上では分散することが可能 セグメンテーションスワッピング メモリの詰め直し セグメント単位で補助記憶とスワッピング
次回、中間テスト 出題範囲(1回から4回まで) 出題形式: 出題数; 4問中、3問回答(1問は選択問題) 配点: 30点 OSの基礎、用語、機能 プロセス管理 CPUの管理 例外、割込み処理 ブートとシャットダウン メモリ管理(固定区画方式、可変区画方式など) 出題形式: 用語穴埋め(OSの基礎、CPUの管理、例外・割込み処理、ブートとシャットダウン) 記述式(プロセス管理、メモリ管理) 出題数; 4問中、3問回答(1問は選択問題) 配点: 30点 テスト時間: 40分