第10回講義資料 2009/10/27

主記憶の仮想化技術

主記憶の使い方
  • オペレーティングシステムによる管理
    • プログラムのロード
    • ユーザごとの記憶管理
    • アプリケーションごとの記憶管理
  • ダイナミックに内容が入れ替わっていく
主記憶の利用方法
  • 絶対的な配置
    • アドレッシングが絶対アドレスを指定して作られたプログラムの配置
    • ロードする場所を変更できない
  • リロケータブルなコード
    • 相対アドレスによるプログラム記述
    • プログラムの配置が自由(OSが番地を自由に変更することが可能)
主記憶を超えるプログラム
  • 大型プログラムの配置
    • 主記憶が不足するほど大きなプログラムの実行
  • 複数のプログラムの同時実行(マルチタスク実行)
    • ダイナミックなプログラム配置の必要性
メモリ空間の有効活用(ソフトウェアでの対応)
  • オーバーレイ
    • プログラムを分割して実行時に入れ替えをする
  • スワッピング
    • 動作していないプログラムを二次記憶に追い出す
  • ガベージコレクション
    • 動的メモリ割当
    • 不要になったメモリ領域を自動的に回収/再利用
  • コンパクション
    • 未使用空間を圧縮
ソフトウェアによる対応の限界
  • すべてのプログラムがルールを守る必要性
  • バグによるトラブル
  • 悪意のあるプログラム
  • 実行性能の問題
主記憶管理の必要性
  • 複数プログラムの実行
  • メモリの保護の必要性
    • 複数ユーザの利用
    • 複数アプリケーションの干渉
  • 仮想記憶
    • 実際の記憶空間(アドレス)に仮想アドレスにマッピング
    • セグメント方式
    • ページ方式
    • セグメント+ページ方式
プログラムの利用メモリの分割
  • セグメント
    • データセグメント
    • テキストセグメント
    • スタックセグメント
  • アプリケーションで利用されるメモリを機能ごとにセグメント化
  • セグメントごとにアクセス権の設定ができる
  • 読み込み専用のセグメントは共用もできる
セグメント方式
  • セグメントはアドレス変換機能による実メモリのアドレスにマッピングされる
  • 利用されないセグメントはハードディスクに追い出される(ロールアウト)
  • 実メモリは断片化が起こる(フラグメンテーション)
メモリ空間の分割
  • メモリを小さな断片に分割(ページ)
  • 仮想メモリ空間にマッピング
  • 必要応じて実メモリをマッピング
  • アクセスの少ないページは二次記憶へ追い出す(ページアウト)
ページ方式による仮想記憶

単一アドレス空間
  • 多くのプロセスで1つの仮想空間を分割して利用する
  • プロセス間でメモリの共有アクセスが可能

多重アドレス空間
  • プロセスごとに独立した仮想空間を提供する
  • セグメント+ページ方式
  • プロセス間でメモリ空間が干渉しない
  • 完全な記憶保護
オンデマンドページング
  • ページアウト
    • 使用されないページは二次記憶へ書き込み、実メモリを解放
  • ページイン
    • 実メモリが割り当てられていないアドレスへのアクセスは二次記憶からロード
  • 実メモリが割り当てられていないページのアクセスではページフォルト(割り込み)を発生
  • オペレーティングシステムがページデータをロード
メモリマネジメントユニット(MMU)
  • 仮想記憶にはアドレス変換を行うメカニズムが必要
  • 仮想アドレスを実アドレスに変換
  • ページフォルトの発生
ページアウトするデータの選択
  • キャッシュと同様
  • FIFO
    • ロードされた時期が古いページから追い出される
  • LRU
    • 最も最近使われていないページから追い出される
  • ほかにもさまざまなアルゴリズムがあるが、システムへの負荷・オーバーヘッドを考慮して決める
デマンドページングの利点・欠点
  • 利点
    • 実メモリより大きなメモリ空間を利用できる
    • 主記憶の利用効率を高める
    • すべてのページをロードしなくても実行を開始可能
    • 複数の同じプログラムを動かす場合はページを共有できる
    • 実メモリより大きなプログラムやデータを扱える
  • 欠点
    • MMUを必要とする
    • MMUによるアクセス遅延が発生する
    • アクセスのパターンによってはスラッシング状態になる
      • ページインとページアウトの頻発し性能を出せない状態
      • 実メモリが少ない場合に起こる
単一レベル記憶の実現
  • キャッシュと仮想記憶を用いることにより記憶を単一アドレス空間で管理できる
  • すべてのデータを主記憶に配置
  • 二次記憶を意識しないコンピュータ利用
メモリの保護の必要性
  • 読み出し/書き込みの許可
  • 権限(アクセスレベル)による許可(スーパーバイザモード、ユーザモード)
  • セグメント単位
  • ページ単位
MMU(メモリマネジメント)の機能
  • ページテーブルの管理
    • の仮想アドレスと実アドレスの対応表
    • ページのアクセス権の管理
    • ページのアクセス状態の管理
  • ページ割り込みの発生
    • 実メモリにマップされていないアドレスの参照
ページのサイズ
  • 4KBから64KB程度
  • i386は4KB
  • DEC VAXは512Bだった、複数のページを1まとめて管理する機能があった
MMUの実装
  • 従来はCPUチップとは独立したチップ
    • MC6809用のMMU MC6829
      • 8ビットプロセッサのMMU
      • 2MBの実メモリを64KBの空間へマップ(多重空間対応)
    • MC68020用のMMU MC68851
      • 仮想記憶をサポートした32bitマイクロプロセッサMC68020
      • 68030では内蔵
  • 現在はCPUチップに内蔵(高速化の必要性)

Ċ
Hideto Sazuka,
2009/11/26 7:51
Comments