Java Operating Systems

Slides:



Advertisements
Similar presentations
アルゴリズムとプログラミン グ (Algorithms and Programming) 第6回:クラスとインスタンス クラスの宣言 アクセス修飾子 インスタンスの生成 (new キーワード) this キーワード フィールドとメソッドの実際の定義と使い 方 クラスの宣言 アクセス修飾子 インスタンスの生成.
Advertisements

オブジェクト指向 言語 論 第八回 知能情報学部 新田直也. 多相性(最も単純な例) class A { void m() { System.out.println( “ this is class A ” ); } } class A1 extends A { void m() { System.out.println(
モバイルエージェントシステムの実装 エージェント移動(状態とコードの一括移送) エージェント移動の特徴 システム構成 エージェントプログラム
Remote Method Invocation
榮樂 英樹 LilyVM と仮想化技術 榮樂 英樹
IBM Power Systems Linux センター のご紹介
ポゼッションシステム: Javaによる 適応的アプリケーション環境
全体ミーティング (4/25) 村田雅之.
Javaのための暗黙的に型定義される構造体
COPPER/FINESSE System構築
アルゴリズムとデータ構造1 2007年6月12日
アルゴリズムとプログラミング (Algorithms and Programming)
SSR 論文調査 Safety and Cyber-Physical Systems
第2回:Javaの変数と型の宣言 プログラミングII 2007年10月2日.
Object Group ANalizer Graduate School of Information Science and Technology, Osaka University OGAN visualizes representative interactions between a pair.
各種PC クラスタの性能評価 同志社大学 工学部 廣安 知之 三木 光範 谷村 勇輔.
都市情報学専攻 情報基盤研究分野  M04UC513  藤田昭人
メソッド名とその周辺の識別子の 相関ルールに基づくメソッド名変更支援手法
CONCURRENT PROGRAMMING
RMI ソフトウェア特論 第6回 /
アスペクト指向プログラミングを用いたIDSオフロード
第6回独習Javaゼミ 第6章 セクション4~6 発表者 直江 宗紀.
既存Javaプログラムの バイトコード変換による 機能分散
サーバ負荷分散におけるOpenFlowを用いた省電力法
コンパイラの解析 (2) GCJのデータ構造 - 1.
型付きアセンブリ言語を用いた安全なカーネル拡張
過負荷時の分散ソフトウェアの 性能劣化を改善する スケジューリングの提案
細かい粒度でコードの再利用を可能とするメソッド内メソッドのJava言語への導入
Lazy Release Consistency
プログラミング言語入門 手続き型言語としてのJava
細かい粒度で コードの再利用を可能とする メソッド内メソッドと その効率の良い実装方法の提案
独習JAVA 6.8 コンストラクタの修飾子 6.9 メソッドの修飾子 6.10 ObjectクラスとClassクラス 11月28日(金)
暗黙的に型付けされる構造体の Java言語への導入
セキュリティ機構のオフロードを考慮した 仮想マシンのスケジューリング
コンパイラの解析 (3) クラスとインスタンスの初期化.
Portable Resource Control in Java The J-SEAL2 Approach
KMSF-CODEアーキテクチャ における動的QOS制御
オブジェクト指向プログラムにおける エイリアス解析手法の提案と実現
Nakano School of Business 経営情報ビジネス科 【 Java概論(Test5)】
Java Bytecode Modification and Applet Security
SPIN Operating System hamanaka 2001/06/20.
限られた保存領域を使用する Javaプログラムの実行トレース記録手法の 提案と評価
オブジェクト指向言語論 第十一回 知能情報学部 新田直也.
pointcut に関して高い記述力を持つ アスペクト指向言語 Josh
オブジェクト指向言語論 第十一回 知能情報学部 新田直也.
Java における 先進的リフレクション技術
コードクローン分類の詳細化に基づく 集約パターンの提案と評価
アルゴリズムとプログラミング (Algorithms and Programming)
マイグレーションを支援する分散集合オブジェクト
プログラミング言語論 第十三回 理工学部 情報システム工学科 新田直也.
同期処理のモジュール化を 可能にする アスペクト指向言語
C#プログラミング実習 第3回.
Type Systems and Programming Languages ; chapter 13 “Reference”
Cell/B.E. のSPE上で動作する 安全なOS監視システム
Mondriaan Memory Protection の調査
System.AddInを利用したアプリケーション拡張 - アドインの開発 -
ユビキタスコンピューティングの ための ハンドオーバー機能付きRMIの実装
状況に応じて適切な 例外処理が行なえる アスペクト指向分散環境実験の 支援ツール
卒業論文に向けて(3) 学部4年生 島本 大輔 2004年11月11日.
JAVA入門⑥ クラスとインスタンス.
18. Case Study : Imperative Objects
SMP/マルチコアに対応した 型付きアセンブリ言語
回帰テストにおける実行系列の差分の効率的な検出手法
Cluster EG Face To Face meeting 3rd
Javaとは Javaとはオブジェクト指向言語でJava VM(Java仮想マシン)と呼ばれるプログラム上で動作します。
:: の扱い 長谷川啓.
セッション名: (35) システム化技術 講演番号 2P
オブジェクト指向言語における セキュリティ解析アルゴリズムの提案と実現
全体ミーティング(9/15) 村田雅之.
System.AddInを利用したアプリケーション拡張 - アドインの開発 -
Presentation transcript:

Java Operating Systems 2001/07/11 hamanaka

Java Operating Systemの定義(意味) Java byte code の実行環境 複数のアプリが実行可能 お互いを隔離可能

背景 Java の隆盛: applet, servlet, mobile agents 複数アプリケーションの同時実行 信用できないコードである可能性 ⇒ Java に “Process” model が欲しい

Process model 次の3つが必要 Protection: Resource Management: Communication:

Java OS が提供すべき機能 メモリ保護は type safety により保証 さらに次のものが必要 namespace の切り分け resource 管理 process 間通信 security これまでも多くの研究あり

既存研究の紹介 J-Kernel K0 (KaffeOS) Alta 1. @Cornell Univ. JKernel & JServer 2. 3. @Utah Univ. The Flux Research group

J-Kernel capability based model resource へアクセスは Object の参照による 複数の protection domains をサポート capability による domain 間通信 すべて Java で記述

capability Java class “Capability” のインスタンス shared object の wrapper (indirection) domain 間で share される実体 作成した domain による revoke 可 RMI の stub のような働き

protection domain Java class “Domain” のインスタンス 固有の namespace, set of threads terminate 時に生成した capability を revoke

Domain 間通信 capability のメソッド呼び出しによる like RMI: capability 作成時に stub も生成 object: deep copy (by serialization or fast copy) Thread migration 同じスレッドが domain を切り替えて実行 revoke も可 target object への参照を null にする

resource control 正確なaccountingは無理 Memory JVM の上で動作するため byte code 書き換えにより使用量をカウント fragmentation を考慮していない JIT code によるメモリ考慮は難

resource control CPU Management kernel device driver による CPU time の監視 使用制限を越えて初めてスレッドを制御 自前の schedule policy を適用するのが難

K0 (KaffeOS) traditional monolithic kernel model process の完全な分離 process 間の direct sharing もあり capability により kernel object へアクセス capability は kernel code call から得る user / kernel の 2mode precise resource accounting

process separation process ごとに heap, namespace を持つ process 間 share は shared heap を介する 制限 shared heap → user heap への参照なし user heap → user heap への参照なし それ以外はあり write barrier でこれらをチェック

capability kernel object への参照 resource へのアクセス kernel code call の返り値として取得

memory reclamation process ごとに自分のheap の GC を行う process 間には分散GC(参照カウント) cycle は? ⇒ 参照関係の制限により生じない user ⇔ kernel 間には生じ得るが lifespan がprocess termination のときに回収される

user / kernel mode 安全な process termination に必要 線引きは[6]参照 user mode 使われている resource はその process へカウント kernel mode kernel の内部が整うまで process termination 不可 使われている resource は system全体へカウント 線引きは[6]参照

precise resource accounting Memory process ごとにカウント可能 memlist (hard, soft)のによる使用量制限(?) CPU Usage thread group に CPU Inheritance Scheduling を結びつける GC cost も process ごとにカウント可能

CPU inheritance scheduling 各 thread は scheduling thread から CPU time をもらって実行 各CPU に一つの root thread もらうthreadはschedulerを指定 timeをもらったthread自身もschedulerになれる scheduler ごとに scheduling policy 設定可

namespace と class share 各 process 毎に namespace class loader により実現 class の share runtime のクラス : system shared the type of shared object : user shared これらのload は “shared loader” が行う standard class libraries の share 変更を最小限に抑え、かつ最大限 system shared へ 残りは namespace ごとに load (reloaded) (public) static field を持つクラスは share できない!

Alta hierarchical process model like Fluke sub-process を管理 sibling processes 間では direct share 可 IPC を通して取得 garbage collection は system 全体のサービス DOS attack を受け得る

control of sub-processes 親process は 子(孫,…)process のresourceを管理 memory usage のaccounting, limit CPU usage (by CPU inheritance scheduling) 親process が 子process の namespace を構築 子の要求に応えて name を resolve process ごとの namespace 可 違う名前を付けることも可能

direct sharing sibling process 間でshare可能 class が一致していることが条件 share されるすべての class に “final” 修飾子

memory reclamation system 全体での GC process termination 時 DOS attack を受け得る process termination 時 子process 以下すべて terminate terminate した process が生成した shared object の扱いは曖昧(とりあえず残すのか?)

性能比較 別紙参照(図7) 環境 300MHz Intel Pentium II with 128MB SDRAM, FreeBSD2.2.6 (Alta, J-Kernel, Kaffe) OSKit (K0)

Reference(1/3) “Techniques for the Design of Java Operating Systems”; Godmar Back, Patrick Tullmann, Leigh Stoller, Wilson C. Hsieh, Jay Lepreau; in Proc. of the 2000 USENIX Annual Technical Conference, San Diego, CA, June 2000. “Processes in KaffeOS: Isolation, Resource Management, and Sharing in Java”; Godmar Back, Wilson C. Hsieh, Jay Lepreau; in Proc. of the Fourth Symposium on Operating Systems Design and Implementation (OSDI 2000), October 2000. “The Alta Operating System”; Patrick Alexander Tullmann. Master's Thesis, July/December 1999.

Reference (2/3) “Nested Java Processes: OS Structure for Mobile Code”; Patrick Tullmann and Jay Lepreau; in Proc. of the Eighth ACM SIGOPS European Workshop, September 1998. “Implementing Multiple Protection Domains in Java”; Chris Hawblitzel, Chi-Chao Chang, Grzegorz Czajkowski, Deyu Hu, and Thorsten von Eicken ; Technical Report TR97-1660, December 1997. “Drawing the Red Line in Java”; Godmar Back and Wilson Hsieh; in Proc. of the Seventh IEEE Workshop on Hot Topics in Operating Systems, March 1999.

Reference (3/3) “Microkernels Meet Recursive Virtual Machines”; Bryan Ford, Mike Hibler, Jay Lepreau, Patrick Tullmann, Godmar Back, Stephen Clawson; in Proc. of the Second Symposium on Operating Systems Design and Implementation (OSDI'96), October 1996. “CPU Inheritance Scheduling”; Bryan Ford, Sai Susarla ; in Proc. of the Second Symposium on Operating Systems Design and Implementation (OSDI'96), October 1996.