OS輪講 11.5-11.6 sada.

Slides:



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

第2回 プロセス管理 ジョブ、プロセスとは? プロセスの状態遷移 プロセス制御ブロック スケジューリング.
オペレーティングシステム (仮想記憶管理)
情報検索概説II 第8回 パソコン組み立てと記憶装置 1999/11/25.
計算機工学III オペレーティングシステム #14 ファイル: より進んだファイルシステム 2006/07/21 津邑 公暁
セキュリティ機構のオフロードを考慮した仮想マシンへの動的メモリ割当
第6回 仮想記憶とページング ページング ページ取り出し方式 ページ置き換え方式 中間テスト(40分)
オペレーティングシステム 第10回 仮想記憶管理(1)
記 憶 管 理(1) オペレーティングシステム 第9回.
計算機工学III オペレーティングシステム #9 主記憶管理:ページング 2006/06/09 津邑 公暁
計算機システムⅡ 主記憶装置とALU,レジスタの制御
全体ミーティング (4/25) 村田雅之.
中村孝介(九州工業大学) 光来健一(九州工業大学/JST CREST)
仮想マシンの並列処理性能に対するCPU割り当ての影響の評価
応用情報処理V 第1回 プログラミングとは何か 2004年9月27日.
オペレーティングシステム (OSの機能と構造)
ファイルシステムキャッシュを 考慮した仮想マシン監視機構
OSが乗っ取られた場合にも機能するファイルアクセス制御システム
小型デバイスからのデータアクセス 情報処理系論 第5回.
担当:青木義満 情報工学科 3年生対象 専門科目 システムプログラミング システムプログラミング プロセス間通信(パイプ) 担当:青木義満
オペレーティングシステム 第12回 仮想記憶管理(3)
第7章 データベース管理システム 7.1 データベース管理システムの概要 7.2 データベースの格納方式 7.3 問合せ処理.
応用情報処理V 第1回 プログラミングとは何か 2003年9月29日.
オペレーティングシステム (割り込み処理)
Linuxカーネルについて 2014/01.
Ibaraki Univ. Dept of Electrical & Electronic Eng.
オペレーティングシステム i386アーキテクチャ(2)
Windowsの内部を知る
ネストした仮想化を用いた VMの安全な帯域外リモート管理
Windowsの内部を知る
帯域外リモート管理の継続を 実現可能なVMマイグレーション手法
Ibaraki Univ. Dept of Electrical & Electronic Eng.
メモリ管理 4.3, 4.4 章 さだ.
MPIによる行列積計算 情報論理工学研究室 渡邉伊織 情報論理工学研究室 渡邉伊織です。
型付きアセンブリ言語を用いた安全なカーネル拡張
オペレーティングシステム 第3回( ) デッドロックと排他制御.
オペレーティングシステム (仮想記憶管理)
オペレーティングシステム (仮想記憶管理)
コンピュータを知る 1E16M009-1 梅津たくみ 1E16M017-8 小沢あきら 1E16M035-0 柴田かいと
分散IDSの実行環境の分離 による安全性の向上
VM専用仮想メモリとの連携による VMマイグレーションの高速化
IaaS型クラウドにおける インスタンス構成の動的最適化手法
実行時情報に基づく OSカーネルのコンフィグ最小化
仮想メモリを用いた VMマイグレーションの高速化
オペレーティングシステム イントロダクション
複数ホストに分割されたメモリを用いる仮想マシンの監視機構
オペレーティングシステムJ/K (仮想記憶管理)
第7回 授業計画の修正 中間テストの解説・復習 前回の補足(クロックアルゴリズム・PFF) 仮想記憶方式のまとめ 特別課題について
Ibaraki Univ. Dept of Electrical & Electronic Eng.
ゲーム開発モデルの基礎.
オペレーティングシステム 第2回 割り込みとOSの構成
未使用メモリに着目した 複数ホストにまたがる 仮想マシンの高速化
複数ホストにまたがって動作する仮想マシンの障害対策
オペレーティングシステムJ/K 2004年11月15日2時限目
VMが利用可能なCPU数の変化に対応した 並列アプリケーション実行の最適化
組込みシステムとは コンピュータ制御システム?
仮想環境を用いた 侵入検知システムの安全な構成法
第5回 メモリ管理(2) オーバレイ方式 論理アドレスとプログラムの再配置 静的再配置と動的再配置 仮想記憶とメモリ階層 セグメンテーション
オペレーティングシステム (OSの機能と構造)
実装について 前田俊行.
全体ミーティング (5/23) 村田雅之.
アルゴリズムとデータ構造1 2009年6月15日
強制パススルー機構を用いた VMの安全な帯域外リモート管理
異種セグメント端末による 分散型仮想LAN構築機構の設計と実装
IPmigrate:複数ホストに分割されたVMの マイグレーション手法
アルゴリズムとデータ構造 2010年6月17日
オペレーティングシステム (OSの機能と構造)
複数ホストにまたがるVMの メモリ使用状況に着目した高速化
L4-Linux のメモリ管理における問題点とその解決策
ソケットの拡張によるJava用分散ミドルウエアの高信頼化
Presentation transcript:

OS輪講 11.5-11.6 sada

11.5 メモリ管理 Windows2000でどのようにメモリを管理しているか

11.5.1 基本概念 各プロセスは4GBの仮想アドレス空間を持つ 下位2GB-256MBをプロセスのコードとデータが使用可能 11.5.1 基本概念 各プロセスは4GBの仮想アドレス空間を持つ 下位2GB-256MBをプロセスのコードとデータが使用可能 256MBは読み出し専用で全てのユーザ間で共有するいくつかのシステムカウンタやタイマ 上位2GBが保護されたカーネルメモリにマップ コード,データ,およびオブジェクトなどに使うページ化(或いは非ページ化)されたプール 書込み禁止 ユーザプロセスは読み出しも禁止 スレッドがシステムコールを呼び出したときに,メモリ空間が延長線上にあるから 高速だがプライベートアドレススペースが窮屈 一部のモードでユーザ空間を3GBに可能 最上部と最下部64KBは通常マップされない プログラムエラーを捕まえる助けとするため 多くの無効なポインタは0とか-1とかだから

仮想ページの状態 コミットページへの補助記憶の割り当て フリー コミット 予約 参照するとページフォールトが起きる コミット ページがメモリにあれば成功する なければページフォールト 予約 解除されるまでマップできない コミットページへの補助記憶の割り当て 各コミットページがコミットされたとき,それをバックアップするページングファイルに1ページを割り当てる 単純だがディスク領域を浪費 スタック領域のようにもともとディスク上に実体を持っていないようなコミットページ領域には,ページアウトの時点までディスクページを割り当てない Windows2000で使われている手法 ディスク浪費はないが複雑

シャドーページ(ディスク上で対応するページ) 性能向上のため16個までのページングファイルに分散することもある Windows2000ではUNIXと同様に,ファイルを仮想アドレス空間の領域に直接マップすることを許している シャドーページがページングファイルの代わりにユーザのファイルになっているだけ 二つ以上のプロセスが同時に同じファイルの同じ部分を明示的にマップすることを許している データをコピーしなくていいので,高速アクセス可能

コピーオンライト(図11-24) 共有コードのアドレス メモリ空間の限界を乗り越える 複数のプロセスが同一のDLLを読み込んで,そのDLLにデータをおく場合,そのデータを自分のプロセス内に保持する 共有コードのアドレス 絶対仮想アドレスを用いると他のプロセスのアドレスを読んでしまう 相対仮想アドレスを使う(位置独立コードとも言う) 絶対仮想アドレスを使うより遅くなるので,明示的にコンパイラに相対仮想アドレスを使う メモリ空間の限界を乗り越える バンク切替 Address Windowing Extensions

11.5.2 メモリ管理システム APIいろいろ VirtualAlloc, VirtualFree, VirtualProtect, VirtualQuery 領域のコミット,解除,権限変更,状態問い合わせ VirtualLock, VirtualUnlock ページング不可にする,解除する CreateFileMapping, MapViewOfFile, UnmapViewOfFile, OpenFileMapping メモリマップドファイルを管理する 作成,マップ,アンマップ,他のプロセスによってマップされているファイルへのマップ

11.5.3 メモリ管理の実装 ページサイズ メモリマネージャはスレッド単位ではなくプロセス単位で管理 11.5.3 メモリ管理の実装 ページサイズ 理論的に64KBまでの2のべき乗 Pentiumでは4KB,Itaniumでは8KBか16KBか選択可能 メモリマネージャはスレッド単位ではなくプロセス単位で管理 スケジューラと逆 VAD (Virtual Address Descriptor) 中身 マップされたアドレスの範囲 補助記憶ファイルとそれがマップされている場所のオフセット 保護コード アドレス空間はVADのリストによって完璧に定義されている

● ページフォールトの扱い プリページングしない ページテーブルエントリ(図11-26) Windows2000の戦略 ● ページフォールトの扱い プリページングしない 予測してページングしない,常にページフォールト ページテーブルエントリ(図11-26) 大事な状態はA (Active) & D (Dirty) ページフォールトの原因の分類 参照されたページはコミットされていない(致命的!) 保護違反が発生した(致命的!!) 共有ページに書き込まれた コピーオンライトの可能性を調べ,復旧可能な場合がある スタックは成長しなければいけない セキュリティ上,新しいプロセスへのメモリはゼロクリアされている必要あり 参照されたページがコミットされているが現在はマップされていない 普通のページフォールト Windows2000の戦略 ディスク転送の回数を最小にする 孤立したページを読み込まない 隣接したページも読み出しておく

● ページ置換アルゴリズム ページフォールトが発生したとき Windows2000はどうやってプロセスからページを奪ってフリーにするか? ● ページ置換アルゴリズム ページフォールトが発生したとき 最初に他のページをディスクに書くことなく,すぐに空きページを維持しようと試みる →1回当たりのディスク操作が1回で済む Windows2000はどうやってプロセスからページを奪ってフリーにするか? ページングシステム全体で各プロセスが保有するワーキングセットの概念を使用している ワーキングセット=特定のプロセス専用の物理的なメモリページ群 ワーキングセットのパラメータ 最小サイズと最大サイズ 厳密ではない でも限界はある(最後の512ページは獲得できない)

バランスセットマネージャ(カーネルデーモンスレッド) 十分な空きページがあるかどうかを見極める,もし十分でなければ・・・ ワーキングセットマネージャ(カーネルデーモンスレッド) が回収しにいく いろいろパラメータを勘案しつつ,全てのページを検査する 検査するたびに未参照カウンタを増やしていく 参照ビットがセットされていたら未参照カウンタを0にする 未参照カウンタが大きいページを優先的にページアウト ただしマルチプロセッサだと難しい...

● 物理メモリ管理 メモリ中の全てのページは1つ以上のワーキングセットか4つのリストのどれかに属する 変更ページリスト 待機ページリスト ● 物理メモリ管理 メモリ中の全てのページは1つ以上のワーキングセットか4つのリストのどれかに属する 変更ページリスト ダーティなページ 待機ページリスト クリーンなページ フリーページリスト どのプロセスにも関連していないクリーンページ ゼロページリスト どのプロセスにも関連していなく,ページがゼロクリアされている 不良RAMページリスト 物理的に欠陥がある

遷移の状況(図11-27) スワッパスレッド マップドページライター・変更ページライター ゼロページスレッド 4秒ごとに起動される 全スレッドがアイドルのプロセスを探す→待機リストか変更リストに変える マップドページライター・変更ページライター 定期的にウェイクアップ 変更ページを待機リストへ 探索・書き込みの2種類の処理があるので,スレッドを分けている ゼロページスレッド フリーリストを選んでゼロクリア 一番最低の優先度

処理の戦略いろいろ Windows2000の場合 例:ページアウトしてゼロクリアしたのに,すぐにそのページが必要になったらもったいない CPUがアイドルのときは優先的にゼロページからとる CPUがビジーの時は待機リストから優先的にとる 例:積極的に待機ページリストに変更するとI/O処理が増える Windows2000の場合 Heuristics, guess work, historical precedent, rules of thumb, administrator controlled などを通じて解決 図11-28のようなRAMページの各々に対応したエントリを持ち,ページフレームデータベースを維持している

11.6 Windows2000における入出力 今はたくさんデバイスがある これからもデバイスはたくさんでるだろう

11.6.1 基本概念 I/Oマネージャ 全てのファイルシステムはI/Oデバイスとして実装される ダイナミックディスクのサポート 11.6.1 基本概念 I/Oマネージャ 多くのバスがある PCカード,PCI,USB,IEEE1394,SCSIなど 認識手順 プラグアンドプレイマネージャがそれぞれのスロットに要求を送り,デバイスの種類を発見 割り込みレベルなどのハードウェアリソースを割り当て ドライバをロード→ドライバオブジェクトを作成 SCSIは起動時,USBやIEEE1394はいつでも認識 電力マネージャとも密接に連携 状態は6つある 全てのファイルシステムはI/Oデバイスとして実装される ダイナミックディスクのサポート 論理ボリュームが物理的にいろいろまたがっていてもOK 非同期I/Oのサポート スレッドがI/Oと並列に実行を続けることが可能 サーバで特に重要

11.6.2 入出力APIコール 図11-29:Win32APIコールのカテゴリ 特にグラフィック周りが多い! クリップボードのサポート GUIアプリケーションはイベント駆動のため,入力はメッセージで行われる

11.6.3 I/Oの実装 I/Oマネージャがどう実装されているか 異なるI/Oデバイスを操作できる共通フレームワークを作ること フレームワークの基本構造 あるI/O機能に対してデバイスに独立なコールの集合をユーザに与えることと デバイスドライバの集合をユーザに与えること

11.6.4 デバイスドライバ WDM (Windows Driver Model) の規定 適合ドライバは少なくとも下記の要求を満たすこと 11.6.4 デバイスドライバ WDM (Windows Driver Model) の規定 適合ドライバは少なくとも下記の要求を満たすこと 標準形式で到着するI/O要求を扱うこと Windows2000のドライバ以外の部分と同じく,オブジェクトベースであること 動的に追加,削除できるプラグアンドプレイデバイスを可能にすること... ほか色々

I/O要求=IRP (I/O Request Packet) ドライバの要件 標準化されたパケットの形式でドライバに渡される ドライバの要件 自身以外からも呼べるようオブジェクトベースである必要がある プラグアンドプレイをサポートする あらゆる状況を想定する必要あり 電力供給が突然なくなった,など 割り込み線やI/Oポートを仮定してはいけない プリンタポートを0x378と仮定するドライバは不適合 マルチプロセッサを想定する Windows98もサポート

ドライバの場所の決定 UNIXのようなメジャー番号を用いない プラグアンドプレイマネージャは製造業者とも出る番号を知るためにデバイスに問い合わせ,ディスク内にドライバがあるか検索

ドライバの動作手順 ドライバはスタックになっているものも DriverEntry AddDevice バス管理とデバイス制御の分離 ドライバの初期化(まだデバイスには触れない) デバイスオブジェクトが作られる AddDevice デバイスを加える IRPを伴ってドライバが呼び出される ドライバはスタックになっているものも バス管理とデバイス制御の分離 フィルタの実装 データの暗号,圧縮など