計算機工学III オペレーティングシステム #9 主記憶管理:ページング 2006/06/09 津邑 公暁

Slides:



Advertisements
Similar presentations
Linuxを組み込んだマイコンによる 遠隔監視システムの開発
Advertisements

オペレーティングシステムJ/K 2004年10月18日(5時限目)
オペレーティングシステム (仮想記憶管理)
情報検索概説II 第8回 パソコン組み立てと記憶装置 1999/11/25.
計算機工学III オペレーティングシステム #14 ファイル: より進んだファイルシステム 2006/07/21 津邑 公暁
基本情報技術概論(第10回) 埼玉大学 理工学研究科 堀山 貴史
Ibaraki Univ. Dept of Electrical & Electronic Eng.
計算機システムⅡ キャッシュと仮想記憶 和田俊和.
第6回 仮想記憶とページング ページング ページ取り出し方式 ページ置き換え方式 中間テスト(40分)
メモリ管理(1).
オペレーティングシステム 第10回 仮想記憶管理(1)
システムソフトウェア講義の概要 計算機システムの復習:中央演算処理装置(CPU),プログラムの実行,主記憶装置,補助記憶装置
記 憶 管 理(1) オペレーティングシステム 第9回.
オペレーティングシステム (割り込み&仮想記憶管理)
基本情報技術概論(第12回) 埼玉大学 理工学研究科 堀山 貴史
計算機システムⅡ 主記憶装置とALU,レジスタの制御
計算機システム概論・4回目 本日のトピック:メモリの管理と仮想記憶 メモリ管理におけるOSの役割 メモリの割当方法について
オペレーティングシステム 第11回 仮想記憶管理(2)
オペレーティングシステム 第9回 実記憶管理 38号館4階N-411 内線5459
記 憶 管 理(2) オペレーティングシステム 第10回.
ファイルシステムキャッシュを 考慮した仮想マシン監視機構
App. A アセンブラ、リンカ、 SPIMシミュレータ
オペレーティングシステム 第12回 仮想記憶管理(3)
第7章 データベース管理システム 7.1 データベース管理システムの概要 7.2 データベースの格納方式 7.3 問合せ処理.
オペレーティングシステム (割り込み処理)
第5回 CPUの役割と仕組み3 割り込み、パイプライン、並列処理
問2.9 割り込みB 割り込みA 割り込みC (msec) 開始 停止 終了 走行レベル4 走行レベル3
オペレーティングシステム i386アーキテクチャ(2)
画像処理ボード上での 高速テンプレートマッチングの 実装と検証
基本情報技術概論(第8回) 埼玉大学 理工学研究科 堀山 貴史
演算/メモリ性能バランスを考慮した マルチコア向けオンチップメモリ貸与法
専門演習Ⅰ 国際経済学部 国際産業情報学科 2年 石川 愛
メモリ管理 4.3, 4.4 章 さだ.
第8回入出力制御 デバイスコントローラ ポーリングと割込み 入出力の方式 PIO DMA 入出力のためのソフトウェア技法.
型付きアセンブリ言語を用いた安全なカーネル拡張
オペレーティングシステム (仮想記憶管理)
オペレーティングシステム (仮想記憶管理)
コンピュータを知る 1E16M009-1 梅津たくみ 1E16M017-8 小沢あきら 1E16M035-0 柴田かいと
VM専用仮想メモリとの連携による VMマイグレーションの高速化
アルゴリズムとデータ構造 補足資料11-1 「mallocとfree」
仮想メモリを用いた VMマイグレーションの高速化
Ibaraki Univ. Dept of Electrical & Electronic Eng.
プログラミング言語論 第五回 理工学部 情報システム工学科 新田直也.
アルゴリズムとデータ構造 補足資料5-1 「メモリとポインタ」
オペレーティングシステムJ/K (仮想記憶管理)
第7回 授業計画の修正 中間テストの解説・復習 前回の補足(クロックアルゴリズム・PFF) 仮想記憶方式のまとめ 特別課題について
コンピュータの基本構成について 1E16M001-1 秋田梨紗 1E16M010-2 梅山桃香 1E16M013-3 大津智紗子
アルゴリズムとデータ構造1 2005年7月5日
未使用メモリに着目した 複数ホストにまたがる 仮想マシンの高速化
計算機工学III オペレーティングシステム #4 並行プロセス:排他制御基礎 2006/04/28 津邑 公暁
オペレーティングシステムJ/K 2004年11月15日2時限目
オペレーティングシステム (ファイル) 2009年11月9日
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
プログラミング言語論 第六回 理工学部 情報システム工学科 新田直也.
第5回 メモリ管理(2) オーバレイ方式 論理アドレスとプログラムの再配置 静的再配置と動的再配置 仮想記憶とメモリ階層 セグメンテーション
マイグレーションを支援する分散集合オブジェクト
第4回 メモリ管理 主記憶(メインメモリ)の管理 固定区画方式と可変区画方式 空き領域の管理 スワッピング.
基本情報技術概論(第13回) 埼玉大学 理工学研究科 堀山 貴史
Mondriaan Memory Protection の調査
アルゴリズムとデータ構造1 2006年6月23日
計算機アーキテクチャ1 (計算機構成論(再)) 第二回 命令の種類と形式
アルゴリズムとデータ構造1 2009年6月15日
オペレーティングシステム (ファイル) 2006年11月16日
オペレーティングシステム (ファイル) 2008年11月17日
第4回 CPUの役割と仕組み2 命令の解析と実行、クロック、レジスタ
オブジェクト指向言語論 第五回 知能情報学部 新田直也.
アルゴリズムとデータ構造 2010年6月17日
L4-Linux のメモリ管理における問題点とその解決策
Ibaraki Univ. Dept of Electrical & Electronic Eng.
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
Presentation transcript:

計算機工学III オペレーティングシステム #9 主記憶管理:ページング 2006/06/09 津邑 公暁

復習 主記憶管理 記憶領域確保の方式 プログラムの実行には,ディスクから主記憶への プログラムのロードが必要 プログラムの実行には,ディスクから主記憶への プログラムのロードが必要 マルチプログラミング環境では複数プロセスが 並行して主記憶を使用 主記憶上でプログラムおよびデータを格納するための 領域を管理する必要 記憶領域確保の方式 固定区画方式 可変区画方式

復習 可変区画方式 空き領域の割り当て方式 ベストフィット ワーストフィット ファーストフィット 割当を適切に行わないと,プロセスが使用できない 断片的な空き領域が多く発生 (フラグメンテーション) 空き領域の管理方式 リスト方式 ビットマップ方式

復習 静的ライブラリ 共有ライブラリ リンク時にロードモジュールに埋込み(静的リンク) 複数プログラムで使用されるライブラリがある場合, 主記憶領域の無駄 共有ライブラリ ロードモジュールはリンク情報のみを持ち, 実行時にリンク(動的リンク) 複数プログラムで使用される場合でも,各ライブラリは1つ のイメージだけ主記憶上に存在すればよい 主記憶領域(およびディスク領域)の有効活用

9.1 主記憶の動的再配置

仮想化 有限のリソースを無限に見せる 空間分割 時間分割 ハードウェアリソースを複数領域に区切る CPUでは不可能 複数プログラムが交互に使う CPU :タイムシェアリング 主記憶 :オーバレイ

主記憶の時間分割による多重化 主記憶の動的再配置 主記憶に配置する対象 オーバレイをより一般化した手法 プログラム領域: 現在実行中のプログラムカウンタの近傍 データ領域: 最近アクセスした領域の近傍 それ以外は二次記憶装置(ハードディスク)に

オーバーレイ (論理空間) main: : main(){ ret; funcA(); funcA: } funcA(){ funcB: funcC: main(){ funcA(); } funcA(){ funcB(); funcB(){ funcC(); : (物理空間) 空き領域

仮想記憶:キーワード 仮想記憶 仮想アドレス 主記憶の動的再配置により,プロセスが使用できる 主記憶領域を無限大にする 主記憶の動的再配置により,プロセスが使用できる 主記憶領域を無限大にする 実際には,アドレスレジスタの有効ビット数を超える アドレスにはアクセスできないし,ハードディスク容量 にも依存するため,厳密には無限大ではない 仮想アドレス 記憶容量に制限のない論理アドレス

仮想記憶実現のための操作 スワップイン スワップアウト 実行中のプログラムが,必 要となる領域を 二次記憶から主記憶に 転送する操作 実行中のプログラムが,必 要となる領域を 二次記憶から主記憶に 転送する操作 スワップアウト 上記スワップインを行う際, その空き領域を確保 するために,当面必要とし ない領域を 主記憶から二次記憶に転 送する操作 CPU 主記憶 二次記憶 仮想記憶領域 (スワップ,仮想メモリ)

9.2 ページング

ページング 記憶領域の仮想化 ページング 仮想アドレス空間の一部が物理メモリに存在 仮想アドレスと物理アドレスの対応付けが必要 物理メモリ上に存在する「仮想記憶の一部」は 時々刻々変化する(動的再配置) 対応付けも時々刻々変化 ページング 「ページ」と呼ばれる単位で動的再配置を行う

ページング 仮想アドレス空間 物理アドレス空間 00 01 1 02 2 03 3 04 05 06 07 08 09 ページフレーム 0x00000 0x0000 ページフレーム 00 0x00FFF 0x0FFF 0x01000 0x1000 01 1 0x01FFF 0x1FFF 0x02000 0x2000 02 2 0x02FFF 0x2FFF 0x03000 0x3000 03 3 0x03FFF 0x3FFF 0x04000 04 ページ 0x04FFF 0x05000 05 0x05FFF 0x06000 06 ・各空間のアドレスを上位・下位ビットに 分割 ・上位ビット共通部分を単位ブロックと して扱う 0x06FFF 0x07000 07 0x07FFF 0x08000 08 0x08FFF 0x09000 09 0x09FFF

ページング 仮想アドレス空間 物理アドレス空間 00 01 1 02 02 2 03 3 04 下位ビットは共通 上位ビットの変換が必要 0x00000 0x0000 00 仮想アドレス 0x02123 は 物理アドレス 0x0123 に対応 0x00FFF 0x0FFF 0x01000 0x1000 01 1 仮想アドレス 0x07456 は 物理アドレス 0x1456 に対応 0x01FFF 0x1FFF 0x02000 0x2000 02 02 2 0x02FFF 0x2FFF 0x03000 0x3000 03 3 0x03FFF 0x3FFF 0x04000 04 下位ビットは共通 上位ビットの変換が必要 0x04FFF 0x05000 05 0x05FFF 0x06000 06 0x06FFF 仮想 物理 02 07 1 : 0x07000 07 07 0x07FFF 0x08000 08 0x08FFF 0x09000 09 0x09FFF

ページテーブル 仮想アドレスから物理アドレスへの変換 ページ番号からページフレーム番号への変換 ページ V P C ページフレーム 00 3 01 5 02 Virtual Memory flag Change flag Permission flag

ページテーブル Vフラグ (Virtual Memory flag) Pフラグ (Permission flag) そのページが主記憶上に存在するか否かを示す Pフラグ (Permission flag) そのページに対するアクセス条件を表す 例)読み込み可,書き込み可,など Cフラグ (Change flag) スワップイン後,そのフレームに対して書き込み が行われたか(変更されたか)否かを示す

ページングの動作 スワップイン 物理空間 仮想アドレス 00 02 123 = 1 01 物理アドレス 02 02 2 123 3 03 0x00000 0x0000 00 02 123 0x00FFF 0x0FFF 0x1000 0x01000 = 1 01 ページフォルト 割込 0x1FFF 0x01FFF 物理アドレス 0x02000 0x2000 02 02 2 0x2FFF 0x02FFF 123 0x03000 0x3000 3 03 0x03FFF 0x3FFF 0x04000 主記憶上に ない 04 読み書き 可 V P C ページフレーム 0x04FFF 0x05000 00 1 05 01 0x05FFF 1 0x06000 06 02 1 011 0x06FFF 03 1 0x07000 07 主記憶上 あり 未変更 04 1 0x07FFF 0x08000 08 05 1 0x08FFF 06 1 0x09000 09 07 1 0x09FFF 08 1

ページングの動作 物理空間 仮想アドレス 02 00 07 456 = 1 01 物理アドレス 2 02 456 1 3 03 04 V P 0x00000 0x0000 02 00 07 456 0x00FFF 0x0FFF 0x1000 0x01000 = 1 01 0x1FFF 0x01FFF 物理アドレス 0x02000 0x2000 2 02 456 1 0x2FFF 0x02FFF 0x03000 0x3000 3 03 0x03FFF 0x3FFF 0x04000 04 V P C ページフレーム 0x04FFF 0x05000 00 1 05 01 0x05FFF 1 0x06000 06 02 011 0x06FFF 03 1 0x07000 07 07 主記憶上に ない 04 1 0x07FFF 0x08000 08 05 1 0x08FFF 06 1 0x09000 09 07 1 011 1 0x09FFF 08 1

ページングの動作 物理空間 仮想アドレス 02 00 = 07 1 01 物理アドレス 2 05 02 3 03 00 04 V P C 1 0x00000 0x0000 02 00 0x00FFF 0x0FFF 0x1000 0x01000 = 07 1 01 0x1FFF 0x01FFF 物理アドレス 0x02000 0x2000 2 05 02 0x2FFF 0x02FFF 0x03000 0x3000 3 03 00 0x03FFF 0x3FFF 0x04000 04 V P C ページフレーム 0x04FFF 0x05000 00 1 011 3 05 01 0x05FFF 1 0x06000 06 02 011 0x06FFF 03 1 0x07000 07 04 1 0x07FFF 0x08000 08 05 1 011 2 0x08FFF 06 1 0x09000 09 07 011 1 0x09FFF 08 1

ページングの動作 物理空間 仮想アドレス 02 00 03 789 = 07 1 01 物理アドレス 2 05 02 789 03 03 スワップアウト 物理空間 仮想アドレス 0x00000 0x0000 02 00 03 789 0x00FFF 0x0FFF 0x1000 0x01000 = 07 1 01 0x1FFF 0x01FFF 物理アドレス 0x02000 0x2000 2 05 02 0x2FFF 0x02FFF 789 0x03000 0x3000 03 03 00 3 0x03FFF 0x3FFF 0x04000 04 V P C ページフレーム 0x04FFF 0x05000 00 011 3 05 01 0x05FFF 1 0x06000 06 02 1 011 011 0x06FFF 03 1 011 0x07000 07 04 1 0x07FFF 0x08000 08 05 011 2 0x08FFF 06 1 0x09000 09 07 011 1 0x09FFF 08 1

ページングの動作 物理空間 仮想アドレス 03 00 01 246 書込み 01 = 07 1 01 物理アドレス 05 2 02 スワップアウト 仮想アドレス 0x00000 0x0000 03 00 01 246 書込み 0x00FFF 0x0FFF 0x1000 0x01000 01 = 07 1 01 0x1FFF 0x01FFF 物理アドレス 0x02000 0x2000 05 2 02 0x2FFF 物理記憶上で行った変更が 仮想記憶でも有効に 0x02FFF 246 1 0x03000 0x3000 3 03 00 0x03FFF 0x3FFF 0x04000 04 V P C ページフレーム 0x04FFF 二次記憶に 書戻し 0x05000 00 011 3 05 01 0x05FFF 1 011 1 0x06000 06 02 1 011 0x06FFF 03 1 011 0x07000 07 変更 されている 04 1 0x07FFF 0x08000 08 05 011 2 0x08FFF 06 1 0x09000 09 07 1 011 011 1 1 1 1 0x09FFF 08 1

ページテーブル Vフラグ (Virtual Memory flag) Cフラグ (Change flag) そのページが主記憶上に存在するか否かを示す 「0」の場合は既に主記憶上に存在するので, そのままアクセス可 「1」の場合はスワップインが必要 Cフラグ (Change flag) スワップイン後,そのフレームに対して書き込み が行われたか(変更されたか)否かを示す 「1」の場合は,スワップアウト時に 二次記憶へのフレームの書き戻しが必要

Vフラグ V=1であるようなエントリが指定された場合 アクセス速度の違い ページフォルト割り込みを発生 スワップ操作 主記憶: 10-7秒 プログラムを停止 スワップ操作 必要であればスワップアウト スワップイン アクセス速度の違い 主記憶: 10-7秒 二次記憶: 10-3秒 スワップ操作は 必要最低限に おさえたい 数千倍遅い

Cフラグ 当該ページに対して書き込み(変更)が あったか否かを示す 変更があった場合はもちろん スワップアウト時に二次記憶への書き戻しが必要 当該ページに対して書き込み(変更)が あったか否かを示す 変更があった場合はもちろん スワップアウト時に二次記憶への書き戻しが必要 変更がなかった場合は, スワップアウト時の書き戻しをサボれる 転送コストの 削減

Pフラグ ページごとにアクセス制御可能 実行 読み出し 可・不可 書き込み 可・不可 実行 可・不可 読み出し 可・不可 書き込み 可・不可 実行 可・不可 実行 ウィルスなどによる,予期しないアドレスからの 実行を防いだりできる 例)スタック領域は実行不可能に スタックは通常,プログラムを格納しない

復習:フラグメンテーション 空き領域の断片化 処理の進行に伴い,小さな空き領域が増加 空き領域が断片化(フラグメンテーション) 処理の進行に伴い,小さな空き領域が増加 空き領域が断片化(フラグメンテーション) 主記憶全体の空き容量が十分でも,新しいプロセスに 連続した領域を割り当てられない 統計的には,全容量の約 1/2 が無駄に

ページングの場合 主記憶に割り当てられる領域は,ページ単位 全てのページが何らかのプロセスに割り当てられる 1ページが 4~8kB程度なので, 主記憶の全容量からすると微々たる大きさ 割り当てられたが 使用されない領域 (内部フラグメンテーション) 物理空間 必要 容量 1 2 3

9.3 ページングの問題点と解決策

ページングの問題点 ページテーブルの巨大さ メモリアクセスの増大 例)仮想アドレス:32bit,1ページ:8kB の場合   ページエントリ数:500k個(約50万) ページテーブルはプロセス毎に独立 例)100プロセスの場合エントリ数:約5000万   1エントリ10Bで構成すると500MB メモリアクセスの増大 ページテーブルは主記憶内に存在 1回で2度の主記憶アクセスが必要 ページテーブルへのアクセス 物理アドレスへのアクセス

ページングの問題点と解決法 ページテーブルの巨大さ メモリアクセスの増大 ハッシュ関数によるページテーブル 連想レジスタ方式

ハッシュ関数によるページテーブル ...のまえに

ハッシュ関数 データを一定長のデータに要約するための関数 一種の圧縮 「要約」するので, データの損失が起こる (不可逆変換) 「要約」するので, データの損失が起こる (不可逆変換) 例)数値 x を1桁に要約   するハッシュ関数  h(x) = x % 10; h(x) 2194 4 競合 (コリジョン) も起こる 639 9 3842 2 17 7 332 2 9173 3 331 1 2835 5

ハッシュ関数 ある範囲(定義域)のデータを, ある範囲(値域)の値に要約する写像 定義域 < 値域 定 義 域 (x) 値 域 ある範囲(定義域)のデータを, ある範囲(値域)の値に要約する写像 定義域 < 値域 定 義 域 (x) 値 域 (y) y = h(x)

ページングの問題点と解決法 ページテーブルの巨大さ メモリアクセスの増大 ハッシュ関数によるページテーブル 連想レジスタ方式

ハッシュ関数によるテーブル ページテーブルが大きくなる原因 ページテーブル内に格納されるフレームは (仮想記憶の大きさと同じエントリ数)             ×(同時実行プロセス数) だけのエントリ数が必要 ページテーブル内に格納されるフレームは Vフラグが0なら主記憶上のアドレスを指す Vフラグが1なら仮想記憶上(二次記憶)のアドレス を指す

ハッシュ関数によるテーブル V=1 なエントリの場合 ページフォルト スワップイン(10-3秒) V=1なエントリを主記憶に置く必要はない ページテーブルを主記憶上に置いて高速アクセス(10-7秒)可能に しても,結局は大きい処理時間がかかってしまう V=1なエントリを主記憶に置く必要はない 二次記憶上に置いても全体性能に大きな影響はない

ハッシュ関数によるテーブル 物理空間 仮想アドレス 03 00 06 246 1 01 01 = 物理アドレス 2 06 02 246 2 0x00000 0x0000 03 00 06 246 0x00FFF 0x0FFF 0x1000 0x01000 1 01 01 = 0x1FFF 0x01FFF 物理アドレス 0x02000 0x2000 2 06 02 0x02FFF 246 2 0x2FFF 共有されるから,このエントリが どのページ番号に関するデータを 保持しているか 記憶しておく必要がある 0x03000 0x3000 3 03 00 0x03FFF 0x3FFF 0x04000 04 0x04FFF 0x05000 ハッシュ関数 h(x) = x % 4; 物理記憶と 同じサイズ (小容量) 05 0x05FFF 0x06000 06 0x06FFF このエントリは, ハッシュ結果が02となる 「02」「06」「10」... などで共有される 0x07000 flag ページ番号 ページフレーム ポインタ 07 00 0x07FFF 00 3 0x08000 08 01 01 1 0x08FFF 02 06 2 0x09000 09 03 1 03 0x09FFF 10

ハッシュ関数によるテーブル 物理空間 仮想アドレス 03 00 07 357 01 = 1 01 物理アドレス 06 2 02 357 3 0x00000 0x0000 03 00 07 357 0x00FFF 0x0FFF 0x1000 0x01000 01 = 1 01 スワップアウト 0x1FFF 0x01FFF 物理アドレス 0x02000 0x2000 06 2 02 357 3 0x2FFF 0x02FFF 0x03000 0x3000 3 03 00 0x03FFF 0x3FFF 0x04000 04 0x04FFF 0x05000 ハッシュ関数 h(x) = x % 4; 05 0x05FFF ページ番号が一致しない 07 ≠ 03 ページフォルト このエントリを使いたい が,03の情報を 潰してしまうのはマズい 0x06000 06 次エントリへの ポインタ 0x06FFF 0x07000 07 flag ページ番号 ページフレーム ポインタ 07 00 0x07FFF 00 3 07 3 00 3 0x08000 08 01 01 1 0x08FFF 02 06 2 0x09000 09 03 1 03 00 0x09FFF 10

ハッシュ関数によるテーブル 物理空間 仮想アドレス 03 00 11 357 01 = 01 1 物理アドレス 2 06 02 357 1 スワップアウト 0x00000 0x0000 03 00 11 357 0x00FFF 0x0FFF 0x1000 0x01000 01 = 01 1 0x1FFF 0x01FFF 物理アドレス 0x02000 0x2000 2 06 02 357 1 0x2FFF 0x02FFF 0x03000 0x3000 07 3 03 0x03FFF 0x3FFF 0x04000 04 0x04FFF 0x05000 ハッシュ関数 h(x) = x % 4; 05 0x05FFF 0x06000 06 0x06FFF 0x07000 07 flag ページ番号 ページフレーム ポインタ 00 0x07FFF 07 3 01 0x08000 08 01 01 1 11 1 01 1 0x08FFF 02 06 2 0x09000 09 03 1 03 00 0x09FFF 10 11

ページテーブルの大きさ 改良前 ハッシュ関数によるページテーブル 仮想アドレス空間のフレーム数と 同じエントリ数 仮想アドレス空間のフレーム数と 同じエントリ数 ハッシュ関数によるページテーブル 物理アドレス空間のページフレーム数と 同じエントリ数

ハッシュ関数が持つべき条件 変換結果の値域への均一分散 変換の高速性 ハッシュ関数による変換結果の値が偏らない必要 変換結果が衝突することをコリジョンと呼ぶ 偏ると,検索時にポインタをたどる確率が高くなり, オーバヘッド増大 変換の高速性 ハッシュ関数による変換は主記憶アクセスの度に発生 変換が低速であると,そもそも意味がない

ページングの問題点と解決法 ページテーブルの巨大さ メモリアクセスの増大 ハッシュ関数によるページテーブル 連想レジスタ方式

ページテーブルの参照 主記憶 仮想アドレス 02 07 246 = 07 1 物理アドレス 05 2 246 1 00 3 1度のアクセスで 物理アドレス空間 仮想アドレス 0x0000 02 07 246 0x0FFF 0x1000 = 主記憶アクセス その2 07 1 0x1FFF 物理アドレス 0x2000 05 2 246 1 0x2FFF 0x3000 00 3 0x3FFF 1度のアクセスで 2度も主記憶アクセス V P C ページフレーム 00 1 011 3 01 1 02 011 03 1 主記憶アクセス その1 04 1 05 1 011 2 06 1 07 011 1 1 08 1

連想レジスタ方式 主記憶 主記憶 仮想アドレス 02 07 246 = 07 1 物理アドレス 最近使用した ページの対応関係 を保持 05 主記憶アクセス 1回 物理アドレス空間 仮想アドレス 0x0000 02 07 246 0x0FFF 0x1000 = 07 1 0x1FFF 物理アドレス 最近使用した ページの対応関係 を保持 0x2000 05 2 246 1 0x2FFF 0x3000 00 3 0x3FFF V P C ページフレーム 00 1 011 3 連想レジスタ 01 1 ページ ページフレーム 02 011 00 3 小容量 高速 03 1 07 1 1 04 1 05 2 05 1 011 2 06 1 07 011 1 08 1

連想レジスタ方式 連想レジスタ (TLB: Translation Lookaside Buffer) 最近行われた変換結果をCPU内で保持 小容量で高速 一般的にプログラムは, 「一度アクセスしたアドレスを 近いうちに再度アクセスする可能性が高い」 ことを利用

今日のまとめ ページング ページテーブル 主記憶の再配置システム 仮想アドレスの上位(ページ番号)を 物理アドレスの上位(ページフレーム番号)に 変換することでアドレス変換 フラグメンテーションも改善 ページテーブル 上記変換を行うためのテーブル ページに対応するエントリごとにフラグなどを配置 ページへのアクセス権などを設定可能

今日のまとめ ページングの改善法 ハッシュ関数 連想レジスタ ページテーブルの巨大さを緩和 仮想アドレス空間に比例する大きさが必要だったのが, 物理アドレス空間に比例する大きさまで縮小 連想レジスタ 主記憶へのアクセス回数の緩和 最近使用した「ページ番号→ページフレーム番号」の 変換結果をCPU内で記憶 ページテーブル検索のための主記憶アクセスを削減