Presentation is loading. Please wait.

Presentation is loading. Please wait.

Java Operating Systems

Similar presentations


Presentation on theme: "Java Operating Systems"— Presentation transcript:

1 Java Operating Systems
2001/07/11 hamanaka

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

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

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

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

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

7

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

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

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

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

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

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

14

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

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

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

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

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

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

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

22 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 できない!

23

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

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

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

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

28

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

30 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.

31 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 TR , 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.

32 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.


Download ppt "Java Operating Systems"

Similar presentations


Ads by Google