第7回 授業計画の修正 中間テストの解説・復習 前回の補足(クロックアルゴリズム・PFF) 仮想記憶方式のまとめ 特別課題について セグメンテーションとページングを組み合わせた手法 仮想記憶におけるプログラムの実行 特別課題について
授業計画(修正版) 回 項目 第1回 OSの基本概念 第8回 入出力装置 課題出題 第2回 プロセス管理 第9回 プロセス間通信と排他制御 第3回 CPU管理と 割り込み処理 第10回 データ管理とファイル制御 第4回 メモリ管理(1) 第11回 ネットワーク管理、通信制御 第5回 メモリ管理(2) 第12回 期末テスト 第6回 メモリ管理(3) 試験 第13回 OSの動向 課題提出 第7回 復習とメモリ管理(4)
セグメンテーションの特性 セグメンテーション → 可変区画方式 セグメンテーションの利点 セグメンテーションの欠点 セグメントの共用が可能 セグメンテーション → 可変区画方式 セグメンテーションの利点 セグメントの共用が可能 セグメント間の動的リンキング セグメントの保護 セグメントの動的な拡張 セグメンテーションの欠点 外部断片化 領域管理が複雑
ページングの特性 ページング → 固定区画方式 利点 欠点 主記憶領域の利用効率 管理の容易さ マルチプログラミングの度合いを向上可能 ページング → 固定区画方式 利点 主記憶領域の利用効率 管理の容易さ マルチプログラミングの度合いを向上可能 内部断片化も、ページサイズによって調整可能 欠点 内部断片化...最後のページ内に空きが生じる セグメントのように、共用、動的リンキング、保護が難しい
セグメンテーションページング 仮想記憶を実現するための基本機構 プログラム中の分割 ページ化セグメンテーション (paged segmentation) セグメント毎にページングを適用 各セグメントは独立したページテーブルを持つ
ページ化セグメンテーションにおける アドレス変換 セグメントテーブル ベースレジスタ b 仮想アドレス セグメント番号 仮想ページ番号 変位 + s p d セグメントテーブル b ページテーブルの ベースアドレス s + s' セグメントs のページテーブル s' p 物理アドレス 物理ページ番号 p' p' d
補助記憶における領域管理 バッキングストア ...仮想記憶を実現するために補助記憶(HDDなど)上に確保されるプログラムやデータの実体を置いておくための領域 スワップ領域、ページング領域ともいわれる アクセス効率重視の割り当て プログラム全体を連続割り当て 複数ブロックを連続割り当て スワップマップ(Unix), 外部ページテーブル(MVS) ファイルシステムとは別に設計される cf.) ファイルシステムでは、補助記憶の効率的な利用が重視
仮想記憶におけるプログラムのロード ロード手法 プログラムのロード手順 プログラムをバッキングストアに読み込む プログラム全体をバッキングストアにロード ページフォルト時にファイルからページを直接主記憶に読み込む プログラムのロード手順 プログラムをバッキングストアに読み込む ページテーブルを作成し、全ての存在ビットを0にする
メモリマップトファイル (memory-mapped file) ファイルそのものを、仮想記憶のバッキングストアとして利用する方式 ファイルの内容を仮想アドレス空間に取り込む ファイルの内容を先頭から順に仮想アドレスに割り付ける 手順 マップ ...ページテーブルの設定 以後、通常のロード・ストア命令でファイルにアクセス可能 利点 ファイルも仮想記憶として扱える(プログラミングしやすい) ページングの機構を使用してユーザのアドレス空間とファイルとの間で直接データのやりとりが可能 ファイルの共用が、仮想アドレス空間上で可能 Sytem V R4, Mach などの最近のUnixで採用 単一レベル記憶(one-level storage) ... Multics メモリオブジェクト、外部メモリマネージャ ... Mach
仮想記憶上でのプログラムの共用 プロセスでデータやコードを共用できると便利 各プロセスで共用するデータやコードをコピーして持つ コピー作成、ロードのオーバヘッドがかかる コピーのための領域が大量に必要 コピーの一貫性をとる必要がある 単一のコピーを共用する アドレス空間で共用? or ファイルを共用? 主記憶上で共用? or 補助記憶上で共用?
再入可能なプログラム 同時に複数のプロセスが実行可能なプログラムを再入可能(リエントラント)なプログラムという プログラムを実行中に、他のプロセスによって中断されても再開後も矛盾なくプログラムが動作するもの プロセス固有のデータは、固有の領域におき、共用領域には変更されることのない部分のみを置く 純コード ページングにおけるプログラムの共用 各プロセスのページテーブルに同じページを登録 異なる仮想アドレスでページを共用するのは困難 プログラム内のアドレス表記を相対アドレスとする