オペレーティングシステム 第10回 仮想記憶管理(1)

Slides:



Advertisements
Similar presentations
オペレーティングシステムJ/K 2004年10月18日(5時限目)
Advertisements

オペレーティングシステム (仮想記憶管理)
情報検索概説II 第8回 パソコン組み立てと記憶装置 1999/11/25.
計算機工学III オペレーティングシステム #14 ファイル: より進んだファイルシステム 2006/07/21 津邑 公暁
情報システム基盤学基礎1 コンピュータアーキテクチャ編 第6回 記憶階層
基本情報技術概論(第10回) 埼玉大学 理工学研究科 堀山 貴史
Ibaraki Univ. Dept of Electrical & Electronic Eng.
計算機システムⅡ キャッシュと仮想記憶 和田俊和.
第6回 仮想記憶とページング ページング ページ取り出し方式 ページ置き換え方式 中間テスト(40分)
メモリ管理(1).
システムソフトウェア講義の概要 計算機システムの復習:中央演算処理装置(CPU),プログラムの実行,主記憶装置,補助記憶装置
記 憶 管 理(1) オペレーティングシステム 第9回.
計算機工学III オペレーティングシステム #9 主記憶管理:ページング 2006/06/09 津邑 公暁
オペレーティングシステム (割り込み&仮想記憶管理)
基本情報技術概論(第12回) 埼玉大学 理工学研究科 堀山 貴史
計算機システムⅡ 主記憶装置とALU,レジスタの制御
情報塾( ) CPUとメモリがどんなふうに動くのだろう。 レジスタやI/O プログラムの実行、マシン語。
計算機システム概論・4回目 本日のトピック:メモリの管理と仮想記憶 メモリ管理におけるOSの役割 メモリの割当方法について
オペレーティングシステム 第11回 仮想記憶管理(2)
オペレーティングシステム 第9回 実記憶管理 38号館4階N-411 内線5459
基本情報技術概論(第4回) 埼玉大学 理工学研究科 堀山 貴史
地理情報システム論 第3回 コンピュータシステムおける データ表現(1)
記 憶 管 理(2) オペレーティングシステム 第10回.
ファイルシステムキャッシュを 考慮した仮想マシン監視機構
ソフトウェア階層 分類 具体例 応用ソフト 基本ソフト アプリケーションソフト 個別アプリケーション SEやユーザが開発するプログラム
App. A アセンブラ、リンカ、 SPIMシミュレータ
オペレーティングシステム 第12回 仮想記憶管理(3)
第7章 データベース管理システム 7.1 データベース管理システムの概要 7.2 データベースの格納方式 7.3 問合せ処理.
問2.9 割り込みB 割り込みA 割り込みC (msec) 開始 停止 終了 走行レベル4 走行レベル3
オペレーティングシステム i386アーキテクチャ(2)
Ibaraki Univ. Dept of Electrical & Electronic Eng.
基本情報技術概論(第8回) 埼玉大学 理工学研究科 堀山 貴史
パソコンの歴史 ~1970年 1970年代 1980年代 1990年~ ▲1946 ENIAC(世界最初の計算機、1,900加算/秒, 18,000素子) ▲1947 UNIVACⅠ(最初の商用計算機) ▲1964 IBM System/360(5.1MHz, 1MB, 2億円) ▲1974 インテル8080(8.
専門演習Ⅰ 国際経済学部 国際産業情報学科 2年 石川 愛
メモリ管理 4.3, 4.4 章 さだ.
第8回入出力制御 デバイスコントローラ ポーリングと割込み 入出力の方式 PIO DMA 入出力のためのソフトウェア技法.
データベース設計 第2回 データベースモデル(1)
オペレーティングシステム (仮想記憶管理)
オペレーティングシステム (仮想記憶管理)
AMD64の仮想化技術を利用した 仮想マシンモニタの実装
コンピュータを知る 1E16M009-1 梅津たくみ 1E16M017-8 小沢あきら 1E16M035-0 柴田かいと
1.コンピュータと情報処理 p.18 第1章第1節 2.コンピュータの動作のしくみ CPUと論理回路
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 大津智紗子
先進的計算基盤システムシンポジウム SACSIS2007併設企画 マルチコアプログラミングコンテスト 「Cellスピードチャレンジ2007」
未使用メモリに着目した 複数ホストにまたがる 仮想マシンの高速化
コンピュータの仕組み 〜ハードウェア〜 1E15M009-3 伊藤佳樹 1E15M035-2 柴田将馬 1E15M061-1 花岡沙紀
B+Treeのバケットサイズ.
第5回 メモリ管理(2) オーバレイ方式 論理アドレスとプログラムの再配置 静的再配置と動的再配置 仮想記憶とメモリ階層 セグメンテーション
地理情報システム論(総)/ 国民経済計算論(商)
第4回 メモリ管理 主記憶(メインメモリ)の管理 固定区画方式と可変区画方式 空き領域の管理 スワッピング.
コンピュータアーキテクチャ 第 4 回.
計算機アーキテクチャ1 (計算機構成論(再)) 第一回 計算機の歴史、基本構成、動作原理
2013年度 プログラミングⅠ ~ 内部構造と動作の仕組み(2) ~.
コンピュータアーキテクチャ 第 3 回.
基本情報技術概論(第13回) 埼玉大学 理工学研究科 堀山 貴史
Mondriaan Memory Protection の調査
アルゴリズムとデータ構造1 2009年6月15日
コンピュータアーキテクチャ 第 4 回.
第4回 CPUの役割と仕組み2 命令の解析と実行、クロック、レジスタ
コンピュータアーキテクチャ 第 5 回.
アルゴリズムとデータ構造 2010年6月17日
L4-Linux のメモリ管理における問題点とその解決策
Ibaraki Univ. Dept of Electrical & Electronic Eng.
Presentation transcript:

オペレーティングシステム 第10回 仮想記憶管理(1) http://www.info.kindai.ac.jp/OS 38号館4階N-411 内線5459 takasi-i@info.kindai.ac.jp

メモリ OS, ユーザプログラム, データ メモリ上に置かれる メモリ上の位置は 1 次元のアドレスで管理 メモリ 0番地 OS n 番地 OS OS, ユーザプログラム, データ メモリ上に置かれる メモリ上の位置は 1 次元のアドレスで管理 プログラム1 プログラム2 データ1

メモリ メモリの記憶階層 10-8 秒 10-7 秒 10-3 秒 容量 小 大 アクセス時間 短 長 価格 高 低 キャッシュ記憶 チップ上 主記憶 DRAM 2次記憶 ハードディスク

メモリ 記憶装置 本, 資料 特徴 キャッシュ 手で保持 すぐ読める ごくわずかな量しか持てない 主記憶 作業机 座ったまますぐ手に取れる (cache memory) 手で保持 すぐ読める ごくわずかな量しか持てない 主記憶 (main memory) 作業机 座ったまますぐ手に取れる 置ける量は限られる 2次記憶 (secondary memory) 倉庫 部屋を出て取りにいく必要あり 大量に置ける

主記憶と2次記憶 10-7秒 10-3秒 プロセッサは2次記憶を直接読むことはできない 使用するプログラム, データは主記憶上にコピー 10000倍 プロセッサは2次記憶を直接読むことはできない 使用するプログラム, データは主記憶上にコピー

スワップイン, スワップアウト (swap-in, swap-out) プログラム, データを2次記憶から主記憶に 実行中のプロセスに必要なものを読み込む スワップアウト(swap-out) プログラム, データを主記憶から2次記憶に スワップインの領域を確保するために当面必要の無いものを退避させる

仮想記憶(virtual memory) 仮想記憶(virtual memory) 動的再配置により主記憶容量よりも大きな アドレス空間を提供 2次記憶 仮想記憶 主記憶 2次記憶上に 仮想記憶を作る

仮想アドレス(virtual address) 仮想アドレス(virtual address) 論理アドレス(logical address) 仮想記憶で用いられるアドレス 実アドレス(real address) 物理アドレス(phigical addrss) 実際の主記憶で用いられるアドレス

記憶領域の仮想化 記憶領域の仮想化 アドレスの動的再配置 仮想アドレス空間の一部が実メモリ上に存在 実メモリ上に存在する“仮想記憶の一部”は時々刻々と変化 ⇒ 仮想アドレスと実アドレスの対応付けが必要 ⇒ 対応付けも時々刻々と変化 アドレスの動的再配置

アドレス変換 動的アドレス変換法 ベースレジスタ(base register) ページング(paging) セグメンテーション(segmentation)

アドレス変換テーブル アドレス変換テーブル 仮想アドレス ⇒ 実アドレスの変換表 バイト単位で表を作ると表が巨大に ブロック単位で表を作る (サイズ 1024KB の仮想記憶で 変換表を作ると表のサイズが100万) 仮想記憶 0K 1024K ブロック1 ブロック2 ブロック3 ブロック4 ブロック5 ブロック6 ブロック単位で表を作る

アドレス変換 ベースレジスタ(base register) アドレス変換テーブルの番地を格納 実メモリ ベースレジスタ プロセス1 アドレス変換テーブル ブロック 開始番地 20 1 50 2 80 : プロセス1 20 2 ベースレジスタ プロセス2 プロセス2 80

アドレス変換 ベースレジスタ 仮想アドレス v = (b, d) ⇒ 実アドレス r r = b’ + d x : ベースレジスタの値 ブロック 開始番地 x : x + b b’ x ベースレジスタ プロセス1 実アドレス r = b’ + d

アドレス変換 ベースレジスタ v = (b, d) r = b’ +d x + b b’ x 2 x プロセス1の(1, 5)番地 アドレス変換表 仮想記憶 ブロック x + b 開始番地 b’ 20 1 50 2 80 3 110 4 130 ブロック0 プロセス1 x 仮想アドレス v = (b, d) ブロック1 + ブロック2 プロセス2 2 x 実アドレス r = b’ +d ブロック3 ブロック4 + プロセス1の(1, 5)番地 x =0, b =1, d =5 b’ =50 r =55 プロセス2の(2, 10)番地 x =2, b =2, d =10 b’ =130 r =140

ページング(paging) ページング(paging) ページ枠(page frame) ページ(page) サイズ 2k KB 4~8KB 主記憶, 仮想記憶を固定長のブロックに分割 ページ枠(page frame) 主記憶上の固定長のブロック ページ(page) 仮想記憶上の固定長さのブロック サイズ 2k KB 4~8KB 仮想記憶 主記憶 ページ ページ枠

ページング 必要なプログラム, データの載っているページが 主記憶上にある場合 そのまま実行 主記憶 プログラム データ

ページング ページフォルト 必要なプログラム, データの載っているページが 主記憶上に無い場合 (page fault) 2次記憶 主記憶上に無い場合 ページフォルト (page fault) 主記憶 プログラム データ プログラム 2次記憶から主記憶に ページを読み込む データ ページイン(page in)

ページング ページフォルト(page fault) ページイン(page in) ページアウト(page out) 必要なページが主記憶上に無い ページイン(page in) 2次記憶から主記憶のページ枠にページを読み込む ページアウト(page out) ページインの際、主記憶に空きページが無い場合に、使用しないページを主記憶から2次記憶に書き出す

ページング 03 2 01 3 下位ビットは共通 上位ビットは変換が必要 主記憶 2次記憶 ページ枠 実アドレス 0000~0FFF 1 0000~0FFF 1 1000~1FFF 2 2000~2FFF 3 3000~3FFF ページ 仮想アドレス 00 00000~00FFF 01 01000~01FFF 02 02000~02FFF 03 03000~03FFF 04 04000~04FFF 05 05000~05FFF 06 06000~06FFF 07 07000~07FFF 01000~01FFF 01 2000~2FFF 2 3000~3FFF 3 03000~03FFF 03 仮想アドレス 03357 = 実アドレス 2357 仮想アドレス 01864 = 実アドレス 3864 ページ ページ枠 03 2 01 3 下位ビットは共通 上位ビットは変換が必要

注意 ページサイズは4KB (=4096B)か8KB (=8192B) 計算機上での処理は2進数 ただし、以降は以下を仮定  計算機上での処理は2進数 ただし、以降は以下を仮定  ページサイズは1000B  数値は全て10進数 レポート・試験も同じ

ページテーブル(page table) ページテーブル(page table) 仮想アドレスから実アドレスへの変換表 ページ ページ枠 (2次記憶) ページ枠 (主記憶) フラグ V P(r,w,x) C 00 1,0,0 01 1 1,1,0 02 1,0,1 03 2 1,1,1

ページテーブル Vフラグ(virtual memory flag) Pフラグ(permission flag) ページが主記憶上に存在するか否か Pフラグ(permission flag) 読み込み可, アクセス可等のアクセス条件 Cフラグ(change flag) ページイン後、書き込みが行われたか否か V = 0 なら2次記憶からの読み込みが必要 C = 1 なら2次記憶への書き出しが必要

ページテーブル ページテーブルの エントリ(行)数は 仮想記憶の ページ数と同じ 2次記憶 ページテーブル 主記憶 00 100 01 1 ページ枠 フラグ V P C 00 100 01 1 110 02 03 04 05 06 3 07 111 ページ枠 ページ 01 1 2 3 06 ページ 00 01 02 03 04 05 06 07 01 01 110 1 01 06 3 ページテーブルの エントリ(行)数は 仮想記憶の ページ数と同じ 1 100 3 06 06

ページングの動作 01 246 246 そのまま主記憶に アクセス可能 2次記憶 主記憶上にある場合 主記憶 ページ枠 ページ 01 1 2 01 1 2 3 06 仮想アドレス ページ 00 01 02 03 04 05 06 07 01 246 01 実アドレス 246 ページ ページ枠 フラグ V P C 00 100 01 1 110 02 03 111 1 110 01 そのまま主記憶に アクセス可能 主記憶上の位置 主記憶上に有り

ページングの動作 02 123 ページフォルト発生 2次記憶 主記憶上に無い場合 主記憶 ページ枠 ページ 01 1 2 3 06 01 1 2 3 06 仮想アドレス ページ 00 01 02 03 04 05 06 07 02 123 ページ ページ枠 フラグ V P C 00 100 01 1 110 02 03 111 主記憶上に無し 110 02 ページフォルト発生

ページングの動作 02 123 123 1 2次記憶 主記憶上に無い場合 主記憶 ページ枠 ページ 01 1 2 3 06 仮想アドレス 01 1 2 3 06 仮想アドレス ページ 00 01 02 03 04 05 06 07 02 123 1 02 実アドレス 123 1 02 ページ ページ枠 フラグ V P C 00 100 01 1 110 02 03 111 2次記憶から 読み込み 主記憶上の位置 主記憶上に有り 110 1 02

ページングの動作 00 789 789 2 2次記憶 主記憶上に無い場合 主記憶 ページ枠 ページ 01 1 02 2 3 06 01 1 02 2 3 06 仮想アドレス ページ 00 01 02 03 04 05 06 07 00 789 00 2 00 実アドレス 789 2 ページ ページ枠 フラグ V P C 00 100 01 1 110 02 03 111 100 1 2 00 100 00

ページングの動作 03 999 ページアウト ページ枠に 空きが無い 2次記憶 主記憶上に無い場合 主記憶 2次記憶に 書き出し ページ枠 01 1 02 2 00 3 06 仮想アドレス ページ 00 01 02 03 04 05 06 07 03 999 01 01 ページ ページ枠 フラグ V P C 00 2 1 100 01 110 02 03 111 ページ枠に 空きが無い ページアウト 110 01 1 110 01 ページイン後 書き込み有り

ページングの動作 03 999 999 2次記憶 主記憶上に無い場合 主記憶 ページ枠 ページ 1 02 2 00 3 06 仮想アドレス 1 02 2 00 3 06 仮想アドレス ページ 00 01 02 03 04 05 06 07 03 999 03 実アドレス 999 03 ページ ページ枠 フラグ V P C 00 2 1 100 01 110 02 03 111 111 1 03

ページングの動作 01 500 2次記憶への 書き出しは不要 2次記憶 主記憶上に無い場合 主記憶 ページ枠 ページ 03 1 02 2 03 1 02 2 00 3 06 仮想アドレス ページ 00 01 02 03 04 05 06 07 01 500 1 02 1 ページ ページ枠 フラグ V P C 00 2 1 100 01 110 02 03 111 2次記憶への 書き出しは不要 110 02 1 110 02 ページイン後 書き込み無し

ページングの動作 01 500 500 1 2次記憶 主記憶上に無い場合 主記憶 ページ枠 ページ 03 1 2 00 3 06 03 1 2 00 3 06 仮想アドレス ページ 00 01 02 03 04 05 06 07 01 500 01 1 実アドレス 500 1 01 ページ ページ枠 フラグ V P C 00 2 1 100 01 110 02 03 111 1 110 01

ページングの動作 ページ i へのアクセス 開始 ページアウトする ページ j の決定 no i の V = 1 ? no j の C = 0 ? no yes yes j を2次記憶に 書き出し i へアクセス i を2次記憶から 読み込み

外部断片化, 内部断片化 (external fragmentation, internal fragmentation) 区画が未使用であるのに割り付けされない 内部断片化(internal fragmentation) 区画内で未使用領域がある 外部断片化 内部断片化 10K 9K 8K 20K 15K 8K 20K 20Kの区画が 空いているのに 割付されない 20Kの区画のうち 12Kが使えない 30K

ページングの断片化 主記憶はページ単位で割り当てられる 4~8KB 未使用領域 無駄になる領域はごくわずか

ページングの問題点 ページテーブルが巨大 ページエントリ数 約50万 例: 仮想記憶を 4GB, 1ページ 8KB で構成 ページテーブルはプロセスごとに独立 例: 仮想記憶を 4GB, 1ページ 8KB で構成 ページエントリ数 約50万 例: 100個のプロセスを実行 ページエントリ数 約5000万 1エントリ10Bなら 約500MB

ページングの問題点 メモリアクセスの増大 ページテーブルは主記憶内に存在 2回の主記憶アクセスが必要 ページテーブルへのアクセス 実アドレスへのアクセス 主記憶 実アドレス ページテーブル メモリ参照

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

アクセス時間 主記憶へのアクセス 10-7 秒程度 2次記憶へのアクセス 10-3 秒程度 アクセス時間に約10000倍の差

アクセス時間 主記憶へのアクセス : 10-7秒 2次記憶へのアクセス : 10-3秒 主記憶上にページがある場合 主記憶へのアクセス : 10-7秒 2次記憶へのアクセス : 10-3秒 主記憶上にページがある場合 ページテーブルへのアクセス : 10-7秒 主記憶へのアクセス : 10-7秒 主記憶上にページが無い場合 ページアウト : 10-3秒 ページイン : 10-3秒 10000倍の 時間差

アクセス時間 主記憶上にページが無い場合 ページイン, ページアウトに 10-3 秒 ページテーブルに 10-7 秒でアクセスする意味が無い 主記憶無いページへのエントリを 主記憶上に置く意味が無い 2次記憶上に置いても問題無し

ページテーブルの縮小 エントリ数 = 仮想記憶のページ数 エントリ数 = 主記憶のページ枠数 ページテーブル 主記憶上にあるエントリのみ テーブルに登録する ページ ページ枠 フラグ V P C 00 100 01 1 110 02 03 2 04 05 06 3 07 111 1 100 06 3 110 03 2 05 01 C P V フラグ ページ ページ枠 ページテーブル エントリ数 = 仮想記憶のページ数 エントリ数 = 主記憶のページ枠数

ハッシュ(hash)関数 ハッシュ(hash)関数 h(x) = x mod 10 データを一定長のデータに要約 一種の圧縮 データの損失が起こる(不可逆) x h(x) 2194 4 639 9 3842 2 17 7 332 331 1 2835 5 重複 例 : 数値を1桁に要約するハッシュ関数 h(x) = x mod 10

ハッシュ(hash)関数 ハッシュ(hash)関数 ある範囲(定義域)のデータ ある範囲(値域)のデータ ページ ページ枠 要約 定義域 x

ページングの動作 05 246 246 1 ハッシュ関数 h(x) = x mod 4 05 mod 4 = 1 基本的には ハッシュ関数の 2次記憶 主記憶 ハッシュ関数 h(x) = x mod 4 ページ枠 ページ 1 05 2 3 ページ 00 08 01 09 02 0A 03 0B 04 0C 05 0D 06 0E 07 0F 仮想アドレス 05 1 05 246 実アドレス 246 1 05 mod 4 = 1 基本的には ハッシュ関数の 値が実アドレス 05 しかし値域の重複がある ( 01, 05, 09, 0D が同じ値域 )

ページングの動作 主記憶と 同じサイズ 2次記憶 主記憶 ページ枠 ページ 1 05 2 3 ページ 00 08 01 09 02 0A 1 05 2 3 ページ 00 08 01 09 02 0A 03 0B 04 0C 05 0D 06 0E 07 0F インデックスに ハッシュ関数を使用 ページテーブル h(x) ページ ページ枠 ポインタ 1 05 2 3 主記憶と 同じサイズ

ページングの動作 05 333 333 1 2次記憶 主記憶上にある場合 主記憶 ページ枠 ページ 1 05 2 3 仮想アドレス ページ 1 05 2 3 仮想アドレス ページ 00 08 01 09 02 0A 03 0B 04 0C 05 0D 06 0E 07 0F 05 333 05 mod 4 05 1 実アドレス 333 1 h(x) ページ ページ枠 ポインタ 1 05 2 3 05 1 ページが一致 = 主記憶上に有り

ページングの動作 01 555 ページ枠2に ページインしたい 2次記憶 主記憶上に無い場合 主記憶 ページ枠 ページ 1 05 2 3 1 05 2 3 仮想アドレス ページ 00 08 01 09 02 0A 03 0B 04 0C 05 0D 06 0E 07 0F 01 555 01 mod 4 h(x) ページ ページ枠 ポインタ 1 05 2 3 ページ枠2に ページインしたい 05 1 ページが不一致 = 主記憶上に無し

ページングの動作 01 555 555 2 エントリへのポインタを 記録しておく 2次記憶 主記憶上に無い場合 主記憶 ページ枠 ページ 1 1 05 2 3 仮想アドレス ページ 00 08 01 09 02 0A 03 0B 04 0C 05 0D 06 0E 07 0F 01 555 01 mod 4 実アドレス 555 2 01 01 2 h(x) ページ ページ枠 ポインタ 1 05 2 3 2 エントリへのポインタを 記録しておく 01 2

ページングの動作 09 777 2次記憶 主記憶上に無い場合 主記憶 ページ枠 ページ 1 05 2 01 3 仮想アドレス ページ 00 1 05 2 01 3 仮想アドレス ページ 00 08 01 09 02 0A 03 0B 04 0C 05 0D 06 0E 07 0F 09 777 09 mod 4 h(x) ページ ページ枠 ポインタ 1 05 2 01 3 05 1 2 01 2 ページが不一致

ページングの動作 09 777 777 3 エントリが見つかるまで ポインタを辿っていく 2次記憶 主記憶上に無い場合 主記憶 ページ枠 1 05 2 01 3 仮想アドレス ページ 00 08 01 09 02 0A 03 0B 04 0C 05 0D 06 0E 07 0F 09 777 09 mod 4 実アドレス 777 3 09 09 3 h(x) ページ ページ枠 ポインタ 1 05 2 01 3 エントリが見つかるまで ポインタを辿っていく 3 09 3

ハッシュ関数の条件 値域への均等分布 高速に変換可能 ハッシュ関数による変換結果に偏りが無い 偏りがあると表の1箇所にエントリが集中 ⇒ 検索時にポインタを辿る確率が高くなる 高速に変換可能 ハッシュ関数はアクセスのたびに計算 ⇒ 変換に時間が掛かると意味が無い

連想レジスタ 連想レジスタ 一般的にプログラムは 一度アクセスしたアドレスを近いうちに 再アクセスすることが多い 最近参照されたページテーブルをCPU内で記憶 連想レジスタ 小容量 高速 統計的にはレジスタサイズは 8~16 エントリで90%のヒット率

連想レジスタ 05 333 333 1 主記憶へ2回のアクセス 仮想アドレス 主記憶 ページテーブル 主記憶 実アドレス h(x) 1 05 ページ枠 ポインタ 1 05 2 3 ページ枠 1 2 3 CPU 1 05 1 連想レジスタ ページ ページ枠 05 1 主記憶へ2回のアクセス ページを記憶

連想レジスタ 05 334 334 1 主記憶へ1回のアクセス 仮想アドレス 主記憶 ページテーブル 主記憶 実アドレス h(x) 1 05 ページ枠 ポインタ 1 05 2 3 ページ枠 1 2 3 CPU 1 連想レジスタ ページ ページ枠 05 1 05 1 主記憶へ1回のアクセス

ページングの問題点の解法 ページテーブルが巨大 ハッシュ(hash)関数によるページテーブル メモリアクセスの増大 連想レジスタ方式 テーブルサイズ 仮想記憶と同じ ⇒ 実記憶と同じ アクセス回数 2回 ⇒ 最近使用したものは1回 統計的に90%ヒット

まとめ 仮想記憶 ページング 2次記憶を用いて主記憶よりも大きな記憶領域を確保 主記憶上に無いデータはスワップイン 主記憶の再配置システム 仮想アドレスの上位(ページ番号)を実アドレスの上位(ページ枠番号)に変換