記 憶 管 理(2) オペレーティングシステム 第9回 復 習 実際のメモリよりも,大きなプログラムを実行した い 実行に伴い,その時,その時で必要な部分だけ がメモリにあれば良い オーバレイ どこが必要なのかの指示をプログラマが行う 仮想記憶 必要になった部分をOSがメモリに格納する 仮 想 記 憶(2) 前回 プログラムが格納され ている仮想記憶を一 定の大きさのページに 分割 ここでは,ページの 大きさを4096バイト とする プログラムの内容 ではなく,大きさで 分割 仮 想 記 憶(3) 前回 実際のメモリ(実記憶)も,ページと同じ大きさの ページ枠(ブロック)に分割 仮 想 記 憶(4) 前回 仮想記憶はディスク などの補助記憶装置 プログラムの実行に 伴い,必要なページ のみを実記憶のペー ジ枠に格納 仮 想 記 憶(13) 前回 プログラムの実行に伴いある番地を参照 その番地のページ番号 ページ番号をページ表で調べる 該当ページが実記憶にない ページフォールトという割込み 該当ページの実記憶への読み込みと ページ表更新 仮 想 記 憶(14) 前回 空いているページ枠がない 使用中のページ枠を空けて,そこに読み込む 空けるページ枠の決め方 ページ置換えアルゴリズム 次回 ← 今回 ページ置換え ペー ジ置換え(1) デマンドページング(要求時ページング) ページが必要になったときに,補助記憶装置か ら実記憶に読み込む ページイン しかし,読み込む場所(空きページ枠)がない場 合は?! ページ置換え(2) 空きページ枠がない 適当なページ枠を選ぶ しかし,ページが読み込まれている その内容を必要に応じて,補助記憶装置に書き 出す ページアウト 空けたページ枠に,読み込む, ページ置換え(3) ページアウトするページの選択 ページ置換えアルゴリズム これから使いそうにないページ 今後,使わないページ ページアウト直後に再度ページインすること になるようなページは選びたくない 将来の予測 困難 ページ置換え(4) FIFOアルゴリズム(First In First Out) もっとも以前に実記憶に読み込まれたページを 選ぶ 実記憶に長く存在するページは,今後はもう使わ ないであろう ページ置換え(5) LRUアルゴリズム(Least Recently Used) もっとも以前に使われたページを選ぶ 頻繁に使われるページは,今後も使われるであ ろう(“局所参照”という性質) 使われなくなって時間が経過したページは,今後 は使われないであろう ページ置換え(6) 他にもいろいろある 実際は,もっと複雑 ページ置換えの例(1) 4ページ分(0~3)の大きさのプログラム 実記憶のページ枠は3 次の順で各ページが必要になるものとする 0→1→2→0→3→0→2→1→2 ページ置換えの例(2) FIFO 直前にページアウトした ページをページイン 下のものほど, 長く実記憶にある ページ枠ではない ページアウト(ページ交換) ページ0が ページアウト ページ置換えの例(3) LRU 実記憶にあるページ 下のものほど, 参照されてから 時間が経過している 参照されてから,最も時間が ページアウト(ページ交換) 経過しているページが ページアウト LRU と FIFO(1) LRUの方が,ページ置換えの回数が少ない ような例を示しているだけ,かも知れない FIFOだと,ページ枠の数を増やしても,ページ交 換の回数が増える場合がある LRUだと,そのようなことはない LRU と FIFO(2) LRUの背景 メモリ参照の局所性 プログラムは,いつもプログラム全体を参照す るわけではない このようにプログラムを作ると 効率的に実行されることになる 一部だけを参照する その一部が実行に伴い移動する この部分だけ この部分だけ この部分だけこの部分だけ この部分だけ プログラム全体(命令とデータ) を参照する を参照する を参照する を参照する を参照する ス ラ ッ シ ン グ(1) 多重プログラミング環境 多重度(並行実行するプログラムの数)を上げる 各プログラムへのページ枠が減る ス ラ ッ シ ン グ(2) ページ置換えの回数が増える さらに多重度を上げる CPUは,もっぱらページ置換えのために使われ る プログラムの実行が進まない 問 題 ページアウト,スワップアウト 必要に応じて,補助記憶装置に書き出す つまり,“書き出さない”場合がある 単にページインだけを実行する 書き出す必要の有無は? ヒント 命令しかないページは? データのあるページは? 実記憶(主記憶)にある間に,書き換えられたか どうか! この情報も,ページ表などで管理する 記憶管理の他の重要な機能 多重プログラミング環境 別のプログラムが,自分のデータを読み書き 別のプログラムのデータを読み書き 禁止する(保護) ただし,禁止だけではない(情報共有) アプリをインストールするときに,いろいろ許可を 求めるのは,“情報共有”のため しかし,不必要な“許可”を求めるものもある 記憶装置の階層化 記憶装置の階層化(1) 第2回 仮想記憶は メモリ HDD の2階層 容量 読み書きの 時間 メモリ 小 短い HDD 大 長い 記憶装置の階層化(2) キャッシュメモリ CPUのデータ転送速度と主記憶装置の読み書き 速度に差をうめる CPUと主記憶装置の間におかれる高速記憶装 置 記憶装置の階層化(3) 読み書きの速度 容量 値段 早いもので大容量が理想であるが… 全体としてのバランス ま と め ま と め(1) 必要になったページが実記憶にない という割込みページフォールト 実記憶に読み込む ページイン ま と め(2) 空きページ枠がないとき,どのページ枠を空ける か これから使いそうにないページが格納されている ページ枠を選ぶ 必要に応じて,そのページ枠の内容を補助記憶 装置に書き出す ページアウトとページイン ま と め(3) ページアウトするページの選択 将来の予測 FIFO LRU 他にもある 最前未使用(NRU)アルゴリズム,セカンド・チャ ンスアルゴリズム,ワーキングセット法,… ま と め(4) ページアウトする必要のない場合 単に新しいページでページ枠を上書きする ページ枠の内容が変更されていない 補助記憶装置の内容と同じ プログラム データであっても変更されていない ま と め(5) プログラムへのページ枠の割当てが少ない ページ置換えが頻発 プログラムの実行時間が少なくなる スラッシング ま と め(6) 記憶装置の階層化 キャッシュメモリ メモリ HDD 読み書きの速度,容量,価格 キャッシュは後でも出てくる
© Copyright 2024 ExpyDoc