メモリ管理 4.3, 4.4 章 さだ.

Slides:



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

オペレーティングシステム (仮想記憶管理)
情報システム基盤学基礎1 コンピュータアーキテクチャ編 第6回 記憶階層
Chapter11-4(前半) 加藤健.
Ibaraki Univ. Dept of Electrical & Electronic Eng.
計算機システムⅡ キャッシュと仮想記憶 和田俊和.
セキュリティ機構のオフロードを考慮した仮想マシンへの動的メモリ割当
第6回 仮想記憶とページング ページング ページ取り出し方式 ページ置き換え方式 中間テスト(40分)
メモリ管理(1).
オペレーティングシステム 第10回 仮想記憶管理(1)
システムソフトウェア講義の概要 計算機システムの復習:中央演算処理装置(CPU),プログラムの実行,主記憶装置,補助記憶装置
記 憶 管 理(1) オペレーティングシステム 第9回.
計算機工学III オペレーティングシステム #9 主記憶管理:ページング 2006/06/09 津邑 公暁
オペレーティングシステム (割り込み&仮想記憶管理)
基本情報技術概論(第12回) 埼玉大学 理工学研究科 堀山 貴史
データ構造とアルゴリズム論 第6章 探索のアルゴリズム
計算機システムⅡ 主記憶装置とALU,レジスタの制御
全体ミーティング (4/25) 村田雅之.
計算機システム概論・4回目 本日のトピック:メモリの管理と仮想記憶 メモリ管理におけるOSの役割 メモリの割当方法について
オペレーティングシステム 第11回 仮想記憶管理(2)
中村孝介(九州工業大学) 光来健一(九州工業大学/JST CREST)
5.チューリングマシンと計算.
5.チューリングマシンと計算.
記 憶 管 理(2) オペレーティングシステム 第10回.
ファイルシステムキャッシュを 考慮した仮想マシン監視機構
ソフトウェア階層 分類 具体例 応用ソフト 基本ソフト アプリケーションソフト 個別アプリケーション SEやユーザが開発するプログラム
2006年度 計算機システム演習 第4回 2005年5月19日.
オペレーティングシステム 第12回 仮想記憶管理(3)
第7章 データベース管理システム 7.1 データベース管理システムの概要 7.2 データベースの格納方式 7.3 問合せ処理.
大きな仮想マシンの 複数ホストへのマイグレーション
LogStructuredFileSystem Servey
問2.9 割り込みB 割り込みA 割り込みC (msec) 開始 停止 終了 走行レベル4 走行レベル3
オペレーティングシステム i386アーキテクチャ(2)
ネストした仮想化を用いた VMの安全な帯域外リモート管理
Ibaraki Univ. Dept of Electrical & Electronic Eng.
演算/メモリ性能バランスを考慮した マルチコア向けオンチップメモリ貸与法
2010年春学期 MOS輪講第4回 Move!B4 rossi
オペレーティングシステム (仮想記憶管理)
オペレーティングシステム (仮想記憶管理)
コンピュータを知る 1E16M009-1 梅津たくみ 1E16M017-8 小沢あきら 1E16M035-0 柴田かいと
VM専用仮想メモリとの連携による VMマイグレーションの高速化
コンピュータ系実験Ⅲ 「ワンチップマイコンの応用」 第1週目 アセンブリ言語講座
仮想メモリを用いた VMマイグレーションの高速化
複数ホストに分割されたメモリを用いる仮想マシンの監視機構
仮想計算機を用いたサーバ統合に おける高速なリブートリカバリ
Ibaraki Univ. Dept of Electrical & Electronic Eng.
オペレーティングシステムJ/K (仮想記憶管理)
第7回 授業計画の修正 中間テストの解説・復習 前回の補足(クロックアルゴリズム・PFF) 仮想記憶方式のまとめ 特別課題について
コンピュータの基本構成について 1E16M001-1 秋田梨紗 1E16M010-2 梅山桃香 1E16M013-3 大津智紗子
ソースコードの特徴量を用いた機械学習による メソッド抽出リファクタリング推薦手法
未使用メモリに着目した 複数ホストにまたがる 仮想マシンの高速化
複数ホストにまたがって動作する仮想マシンの障害対策
オペレーティングシステムJ/K 2004年11月15日2時限目
信頼できないクラウドにおける仮想化システムの監視機構
VMが利用可能なCPU数の変化に対応した 並列アプリケーション実行の最適化
第5回 メモリ管理(2) オーバレイ方式 論理アドレスとプログラムの再配置 静的再配置と動的再配置 仮想記憶とメモリ階層 セグメンテーション
第4回 メモリ管理 主記憶(メインメモリ)の管理 固定区画方式と可変区画方式 空き領域の管理 スワッピング.
データ構造とアルゴリズム論 第6章 探索のアルゴリズム
Mondriaan Memory Protection の調査
コンピュータアーキテクチャ 第 5 回.
アルゴリズムとデータ構造1 2009年6月15日
異種セグメント端末による 分散型仮想LAN構築機構の設計と実装
IPmigrate:複数ホストに分割されたVMの マイグレーション手法
アルゴリズムとデータ構造 2010年6月17日
複数ホストにまたがるVMの 高速かつ柔軟な 部分マイグレーション
複数ホストにまたがるVMの メモリ使用状況に着目した高速化
MPIを用いた 並列処理 情報論理工学研究室 06‐1‐037‐0246 杉所 拓也.
分散メモリ型並列計算機上での行列演算の並列化
L4-Linux のメモリ管理における問題点とその解決策
Ibaraki Univ. Dept of Electrical & Electronic Eng.
Presentation transcript:

メモリ管理 4.3, 4.4 章 さだ

4.3 仮想メモリ プログラムが大きすぎてメモリに入りきらない問題 オーバレイ:初期の解決策 仮想メモリ:現代の解決策 プログラムを分割してメモリに格納する プログラムのスワップイン・アウトはOSがやってくれる プログラムの分割はプログラマの仕事 →大変! 仮想メモリ:現代の解決策 プログラムコード,データ,スタックからなるプログラム全体が物理メモリサイズを越えてもOK

4.3.1 ページング 仮想アドレス ページ ページフレーム 例: MOVE REG, 1000 この1000というのが仮想アドレス 仮想アドレスは仮想アドレス空間を持つ 仮想アドレスはMMU (Memory Management Unit) で物理メモリアドレスへ変換される 現代のMMUはたいていCPUに内蔵されています ページ 仮想アドレス空間を区切る単位 ページフレーム 物理メモリ内の対応する部分

マッピング 1ビットの存在/不在ビット MMUの動作例 図4-10を参照 例:仮想アドレス8192→ページフレーム6 例:仮想アドレス32780→ない! CPUはOSへトラップ(ページフォールト) MMUの動作例 仮想アドレス8196 :0010,0000,000,0100 ページテーブル2を参照 ページテーブル オフセット

4.3.2 ページテーブル 実現のための問題点 例 ページテーブルサイズが巨大になってしまう マッピングは高速でなければならない 仮想アドレス32bit,ページサイズ4KBだと 仮想ページ数=ページテーブルエントリ数は100万 しかもページテーブルはプロセスごとに必要

マルチレベルページテーブル 例えば,10,10,12 と区切る この場合,最大ページテーブル数は1025になるが,実際はもっと少なくて済む 図4-12の例だと4つ

ページテーブルエントリの構造 キャッシング不可:主にデバイスレジスタ用 参照ビット:ページ置き換えアルゴリズムに使われる 修正ビット:ページに書き込みがあるとセットされる,古いページフレームを読まない用 保護ビット:許可するアクセスの種類 存在・不在ビット ページフレーム番号

4.3.3 TLB ページングによる性能低下という問題 実は,多くのアクセスはある一部分のページ群へのアクセスである TLB (Translation Lookaside Buffer) ページテーブルの一部分を変換するハードウェア TLBになかったらMMUにアクセス MMUはTLBにないことを前提に処理できる

4.3.4 逆引きページテーブル エントリ数が巨大 逆引きページテーブル 例:アドレス空間 4GB で,ページサイズが4096倍とだとエントリ数は100万→ページテーブル当たり4MB必要 逆引きページテーブル ページフレーム1つにつき1つのエントリを持つ 例:物理メモリ256MBでページサイズが4KBであればエントリ数は65536で良い 問題 仮想アドレスから物理アドレスへの変換が大変 解決策 TLBを用いる ハッシュテーブルを用いて検索を高速化する

4.4 ページ置き換えアルゴリズム ページフォールトが発生した場合に,どのページを追い出すか 頻繁にアクセスするページを追い出すと性能が落ちる あまり使わないページを追い出せば性能が上がる

4.4.1 最適ページ 置き換えアルゴリズム 最も理想的なアルゴリズム しかし,実現不可能 最大のラベルを持ったページを追い出す 将来生じるページフォールトをなるべく遠い将来においやる しかし,実現不可能 OSは次に参照されるページを予測できないから

4.4.2 NRUアルゴリズム ページテーブルの参照・修正ビットを用いる 4つのカテゴリに分類 クラス0:参照も修正もされていない クラス1:参照されていないが,修正されている クラス2:参照されたが,修正されていない クラス3:参照も修正もされた NRU (Not Recently Used) algorithm は空ではない最下位のクラスからランダムにページを消す 最適ではないが,容易な実装と十分な性能という特徴を持つ

4.4.3 先入れ先出しページ置き換えアルゴリズム いわゆる FIFO (First Input First Output) 古いページを優先的に消す しかし,古いページ=使われないページではない! というわけで,このまま使われることはない

4.4.4 セカンドチャンス置き換えアルゴリズム FIFOの改良版 ページを時系列に並べる ページフォールトが起きたら古いページから参照 もし参照ビットがセットされていれば,参照ビットをクリアして一番新しいページとして扱う もし参照ビットがなければ消す

4.4.5 クロックページ置き換え アルゴリズム セカンドチャンス置き換えアルゴリズムの改良 ページをリスト上でせわしなく移動させているため効率的でない 環状リストにする 実現方法が違うだけで本質的には同じ

4.4.6 LRUページ置き換えアルゴリズム LRU (Least Recently Use page) 最近使われたページはまたすぐに使われるだろう,という戦略 実現可能であるがコストは小さくない 実現手法はいくつかある 例:図4-18 ページテーブル数 n とすると,n×nの行列を用意 ページフレームkが参照されると 行kを全て1に設定 列kを全て0に設定 ページフォールトの場合 行を2進法事とみなして値が最小のもの=最も過去に参照されたページを探して消す

4.4.7 LRU のソフトウェアによるシミュレーション ソフトウェアで実現する方法として NFU (Not Frequently Used) アルゴリズム クロック割り込みごとに,ページごとに参照ビットの内容をカウントする ページフォールト時はそのカウンタが最小のものを消す 欠点は初期化しないこと 実はNFUでLRUをシミュレートできる(エージング) 修正点は2つ カウンタに加算する前にカウンタを1ビット右へシフト 参照ビットをカウンタ内の最左端に加算する 厳密な違いも2つ 最後にアクセスされたのが分からない(例:図4-19 (e) の3,5) カウンタのビット数は有限であること

4.4.8 ワーキングセットページ置き換えアルゴリズム プロセスが現在使用中のページのセット ワーキングセットモデル 各プロセスのワーキングセットを記録し,プロセス実行前にメモリに持ってくるモデル 多くのプログラムは一部分のページにしかアクセスしない →単調非減少関数になる Kの値を予め決めておくと,ワーキングセットが一意に決まる k:メモリ参照 w(k, t)

アルゴリズムの近似 k回のメモリ参照の代わりに実行時間を用いる カレント仮想時間 年齢 プロセスが開始後に実際に使用したCPU時間 カレント仮想時間ー最後に使用された時間

4.4.9 WSClockページ置き換えアルゴリズム ワーキングセットアルゴリズムを改善したもの Working Set Clock アルゴリズム クロックページ置き換えアルゴリズムとワーキングセットアルゴリズムを足したようなもの 図4-22を参照

4.4.10 ページ置き換えアルゴリズムのまとめ 図4-23を参照 いい感じなのは エージング WSClock