Mondriaan Memory Protection の調査

Slides:



Advertisements
Similar presentations
G ゼミ 2010/5/14 渡辺健人. パフォーマンスの測定 CUDA Visual Profiler CUDA の SDK に標準でついているパフォーマン ス測定用のツール 使い方: exe ファイルのパスと作業ディレクトリ指定して実 行するだけ 注意点 : GPU のコード実行後にプログラム終了前に,
Advertisements

Linuxを組み込んだマイコンによる 遠隔監視システムの開発
ファイルキャッシュを考慮したディスク監視のオフロード
Ibaraki Univ. Dept of Electrical & Electronic Eng.
セキュリティ機構のオフロードを考慮した仮想マシンへの動的メモリ割当
第6回 仮想記憶とページング ページング ページ取り出し方式 ページ置き換え方式 中間テスト(40分)
メモリ管理(1).
オペレーティングシステム 第10回 仮想記憶管理(1)
計算機工学III オペレーティングシステム #9 主記憶管理:ページング 2006/06/09 津邑 公暁
IaaS 仮想マシン(VM)をネットワーク経由で提供 負荷に応じてVM数や性能を変更できる ハードウェアの導入・管理・維持コストの削減
全体ミーティング (4/25) 村田雅之.
オペレーティングシステム 第11回 仮想記憶管理(2)
仮想マシンの並列処理性能に対するCPU割り当ての影響の評価
ファイルシステムキャッシュを 考慮した仮想マシン監視機構
App. A アセンブラ、リンカ、 SPIMシミュレータ
2007/1/18 山下 諒蔵 佐藤 春旗 前田 俊行 大山 恵弘 佐藤 秀明 住井 英二郎
LogStructuredFileSystem Servey
オペレーティングシステム i386アーキテクチャ(2)
4章 メモリ管理.
データ構造と アルゴリズム 第四回 知能情報学部 新田直也.
メモリ管理 4.3, 4.4 章 さだ.
アスペクト指向プログラミングを用いたIDSオフロード
型付きアセンブリ言語を用いた安全なカーネル拡張
Lazy Release Consistency
AMD64の仮想化技術を利用した 仮想マシンモニタの実装
仮想マシン間にまたがる プロセススケジューリング
仮想計算機を用いて OSを介さずに行う安全な ファイルアクセス制御
VMのメモリ暗号化によるクラウド管理者への情報漏洩の防止
VMのメモリ暗号化による クラウド管理者への情報漏洩の防止
VM専用仮想メモリとの連携による VMマイグレーションの高速化
アルゴリズムとデータ構造 補足資料11-1 「mallocとfree」
2005年度 データ構造とアルゴリズム 第3回 「C言語の復習:再帰的データ構造」
仮想メモリを用いた VMマイグレーションの高速化
複数ホストに分割されたメモリを用いる仮想マシンの監視機構
仮想機械 温故知新 前田俊行 東京大学米澤研究室.
仮想計算機を用いたサーバ統合に おける高速なリブートリカバリ
A Provably Sound TAL for Back-end Optimization について
オペレーティングシステムJ/K (仮想記憶管理)
第7回 授業計画の修正 中間テストの解説・復習 前回の補足(クロックアルゴリズム・PFF) 仮想記憶方式のまとめ 特別課題について
コンピュータの基本構成について 1E16M001-1 秋田梨紗 1E16M010-2 梅山桃香 1E16M013-3 大津智紗子
クラウドにおけるIntel SGXを用いた VMの安全な監視機構
通信機構合わせた最適化をおこなう並列化ンパイラ
データ構造と アルゴリズム 第五回 知能情報学部 新田直也.
メモリ投機を支援する CMPキャッシュコヒーレンスプロトコルの検討
08. メモリ非曖昧化 五島 正裕.
アプリケーション依存の先読みが可能なO/Rマッピングツール
Intel SGXを用いた仮想マシンの 安全な監視機構
複数ホストにまたがって動作する仮想マシンの障害対策
オペレーティングシステム i386アーキテクチャ(1)
Peer-to-Peerシステムにおける動的な木構造の生成による検索の高速化
09. メモリ・ディスアンビギュエーション 五島 正裕.
Cell/B.E.のSPE Isolationモードを用いた監視システム
第5回 メモリ管理(2) オーバレイ方式 論理アドレスとプログラムの再配置 静的再配置と動的再配置 仮想記憶とメモリ階層 セグメンテーション
コンピュータアーキテクチャ 第 9 回.
データ構造とアルゴリズム (第5回) 静岡大学工学部 安藤和敏
第4回 メモリ管理 主記憶(メインメモリ)の管理 固定区画方式と可変区画方式 空き領域の管理 スワッピング.
実装について 前田俊行.
全体ミーティング (5/23) 村田雅之.
ポインタとポインタを用いた関数定義.
仮想マシンに対する 高いサービス可用性を実現する パケットフィルタリング
Cell/B.E. のSPE上で動作する 安全なOS監視システム
コンピュータアーキテクチャ 第 5 回.
GbEにおける TCP/IP の研究について
コンピュータアーキテクチャ 第 9 回.
コンピュータアーキテクチャ 第 5 回.
IPmigrate:複数ホストに分割されたVMの マイグレーション手法
L4-Linux のメモリ管理における問題点とその解決策
プログラミング演習II 2003年12月10日(第7回) 木村巌.
ベイジアンネットワークと クラスタリング手法を用いたWeb障害検知システムの開発
Ibaraki Univ. Dept of Electrical & Electronic Eng.
Presentation transcript:

Mondriaan Memory Protection の調査 調べた人: 前田俊行

一言でいうと ハードウェアのメモリ保護を ワード単位にします 理由: 細粒度メモリ保護が欲しい → でも今のメモリ保護はページ単位で使えない → じゃあワード単位にしよう

参考文献 E. Witchel, J. Cates and K. Asanovic “Mondrian Memory Protection” In proc. of ASPLOS 2002. E. Witchel and K. Asanovic “Hardware Works, Software Doesn’t: Enforcing Modularity with Mondriaan Memory Protection” In proc. of HotOS 2003. E. Witchel, J. Rhee and K. Asanovic “Mondrix: Memory Isolation for Linux using Mondriaan Memory Protection” In proc. of SOSP 2005.

細粒度メモリ保護とは 1つのアドレス空間内で 複数のメモリ保護ドメインを持つこと たいてい1スレッドに1保護ドメインを割り当てる

なぜ “Mondriaan” か Piet Mondriaan (1872-1944) Composition with Red, Yellow and Blue (1921)

どうやって実現するか? “Permissions Table” を導入する Permissions Table マッピング情報のないページテーブルのようなもの ワード単位でメモリ保護を指定できる (実装方式については後述) 元々の ISA は変わらない Permissions Table を「付け加える」だけ

MMP (Mondriaan Memory Protection) System 概略図

Sidecar: 保護情報キャッシュ その1 メモリアクセス時に使った 保護情報をキャッシュする メモリアクセスに使える レジスタそれぞれに用意

Protection Lookaside Buffer: TLBのようなもの(タグ付) PLB: 保護情報キャッシュ その2 Protection Lookaside Buffer: TLBのようなもの(タグ付) PLB のタグ

Permissions Table ページテーブルの ようなもの

ここで重要な問題 Permissions Table をどう実装する? この論文が示す方法は3つ SST: Sorted Segment Table MLPT: Multi-level Permissions Table MLPT + SST

SST: Sorted Segment Table 保護範囲(= セグメント)ごとに保護を指定する 0x00000000 SST で表すと… 0x00100020 メモリイメージ Perm の値の意味

SST の利点 Tableのサイズが小さくなる(?) Table のサイズ = セグメントの数 SST で表すと… SST メモリイメージ 00000000 00 01 00 11 SST で表すと… 00 11 00 01 00 10 00 10 00 01 00 SST メモリイメージ

SST の欠点 Tableの検索がバイナリサーチ (= O(log n)) Table の更新が重い 2. 新たなエントリを追加する 00000000 00 1. まず、該当する エントリを探す (バイナリサーチ) 01 ここに新たな セグメントを 追加するには? 00 11 00 11 00 01 10 00 00 10 00 10 これらのエントリを ずらさなければ ならない 00 01 00 SST メモリイメージ

MLPT: Multi-level Protection Table アドレスごとに保護を指定する アドレス分解 Perm Table Base Table のエントリサイズ = 32 bit 1エントリで指定できる保護 = (32 / 2) 個 = 16 個 指定できる保護単位 = (64 / 16) バイト = 4 バイト = 1 ワード MLPTエントリ

MLPT の利点 Table 検索が速い (= O(1)) 最悪でも3回のメモリアクセスで エントリが必ず得られる Perm Table Base

MLPT の欠点 無駄な table 検索が増える MLPT の場合 検索回数 : 2回 (同じセグメントに 2回アクセスしたことがわからない) 0x01000 こことここに アクセスすると… SST の場合 0x08000 検索回数 : 1回 (最初のアクセス結果が PLB にキャッシュされる) メモリイメージ

SST と MLPT の比較 SST MLPT サイズが小さい(?) 検索回数が少ない 検索が遅い (バイナリサーチ) 更新が重い 無駄なエントリが多い 検索回数が多い 検索が速い (O(1)) 更新が軽い

MLPT + SST (例によって)おいしいとこどりを目指す サイズが小さい(?) 検索回数が少ない 検索が遅い (バイナリサーチ) 更新が重い MLPT 無駄なエントリが多い 検索回数が多い 検索が速い (O(1)) 更新が軽い

MLPT + SST MLPT のエントリに SST を取れるようにする mini-SST エントリ Perm Table Base

MLPT with mini-SST の利点 検索回数が減る エントリがアドレス範囲外のセグメントの情報も持てるため (PLB にキャッシュされやすくなる) mini-SST エントリ

MLPT with mini-SST の欠点 Table の更新が複雑 1つのセグメントの情報が複数エントリに存在するため ここに新たにセグメントを 作るには? mini-SST エントリ

性能評価実験 MMP によるオーバヘッドを評価した ベンチマークプログラムの実行オーバヘッドを測定した 2種類の実験: Read-only text, read-only data, read-write data and stacks 細粒度保護を MMP で実現したときのオーバヘッド測定 malloc で確保したメモリごとにセグメントを作る (正確には確保したメモリの周りにもう2つ無効セグメントを作る) ハードウェアがないのでシミュレータ上で実験した MIPSアーキテクチャ上に実現

ベンチマークの種類 Refs : メモリアクセス回数 (load & store) Segments : 作られるセグメント数 ( = malloc 回数×2) Refs/Update: メモリアクセス回数 / Table 更新の回数 Cs : 従来の保護で実行したときのセグメント数

従来の保護を MMP で 再現したときのオーバヘッド X-ref : Table へのアクセス回数 / プログラムのメモリアクセス回数 Space : Table のサイズ / プログラム終了時の有効メモリ領域のサイズ l/k : Table 検索時のメモリアクセス回数 / Table 検索回数

細粒度保護を MMP で 実現したときのオーバヘッド SST vs. MLTP with mini-SST Space : Table のサイズ / プログラム終了時の有効メモリ領域のサイズ X-ref : Table へのアクセス回数 / プログラムのメモリアクセス回数 upd : Table 更新時のメモリアクセス回数 / Table 検索&更新時のメモリアクセス回数 ld/lk : Table 検索時のメモリアクセス回数 / Table 検索回数

細粒度保護を MMP で 実現したときのオーバヘッド MLPT vs. MLPT with mini-SST Space : Table のサイズ / プログラム終了時の有効メモリ領域のサイズ X-ref : Table へのアクセス回数 / プログラムのメモリアクセス回数 upd : Table 更新時のメモリアクセス回数 / Table 検索&更新時のメモリアクセス回数 ld/lk : Table 検索時のメモリアクセス回数 / Table 検索回数

その他 MMP を使って Linux を改造した (Mondrix) Linux のバグを1つ見つけた (これは x86 シミュレータで, SOSP 2005)

まとめ Mondriaan Memory Protection は ワード単位で保護を指定できる ハードウェアメモリ保護機構です