記 憶 管 理(2)
description
Transcript of 記 憶 管 理(2)
記 憶 管 理(2)
オペレーティングシステム第9回
復 習 実際のメモリよりも,大きなプログラムを実
行したい 実行に伴い,その時,その時で必要な部分だ
けがメモリにあれば良い オーバレイ
どこが必要なのかの指示をプログラマが行う
仮想記憶 必要になった部分を OS がメモリに格納す
る
仮 想 記 憶(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 は,もっぱらページ交換のために使われる プロセスの実行が進まない
ス ワ ッ ピ ン グ(補足) プログラム A が実行中 プログラム B を実行しようとする 主記憶を空けるために, A が格納されてい
る主記憶の内容を必要に応じて,補助記憶装置に書き出す スワップアウト
空いたところに, B を読み込む スワップイン
問 題 ページアウト,スワップアウト
必要に応じて,補助記憶装置に書き出す
つまり,“書き出さない”場合がある 単にページインだけを実行する
書き出す必要の有無は?
ヒ ン ト 命令しかないページは?
データのあるページは?
実記憶(主記憶)にある間に,書き換えられたかどうか! この情報も,ページ表などで管理する
記憶管理の他の重要な機能 多重プログラミング環境
別のプログラムが,自分のデータを読み書き
別のプログラムのデータを読み書き 禁止する(保護) ただし,禁止だけではない(情報共有)
記憶装置の階層化
記憶装置の階層化(1) 第 2 回
仮想記憶は メモリ HDDの 2 階層
容量 読み書きの時間
メモリ
小 短い
HDD 大 長い
記憶装置の階層化(2) キャッシュメモリ
CPU のデータ転送速度と主記憶装置の読み書き速度に差をうめる
CPU と主記憶装置の間におかれる高速記憶装置
記憶装置の階層化(3) 読み書きの速度 容量 値段
早いもので大容量が理想であるが…
全体としてのバランス
ま と め
ま と め(1) 必要になったページが実記憶にない
という割込みページフォールト
実記憶に読み込む
ページイン
ま と め(2) 空きページ枠がないとき,どのページ枠を空
けるか これから使いそうにないページが格納されて
いるページ枠を選ぶ 必要に応じて,そのページ枠の内容を補助記
憶装置に書き出す ページアウト
ま と め(3) ページアウトするページの選択
将来の予測 FIFO LRU 他にもある
最前未使用 (NRU) アルゴリズム,セカンド・チャンスアルゴリズム,ワーキングセット法,…
ま と め(4) ページアウトする必要のない場合
単に新しいページでページ枠を上書きする
ページ枠の内容が変更されていない 補助記憶装置の内容と同じ プログラム データであっても変更されていない
ま と め(5) プロセスへのページ枠の割当てが少ない
ページ置換えが頻発
プロセスの実行時間が少なくなる
スラッシング
ま と め(6) 記憶装置の階層化
キャッシュメモリ メモリ HDD
読み書きの速度,容量,価格
キャッシュは後でも出てくる