ࡱ; 8  !"#$%&'()*+,-./01234567:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~Root Entry  !r\V)䰱 PresentationStarImpress 5.0ԙSSfxDocumentInfo  {1g {1 uK Info 0 Info 1 Info 2 Info 3 {1g9n <44Standard LIBIMBEDDED LIBIMBEDDED TASK,0,1,H 1,0,100,1,SBX sb Z Standard StarBASICSBX ARSBX AR SBX AR2c%bqqOh+'0 h t dXOutdevItemPool 1   )     &'()*+,-./06789:;UVWXYZ[\]c !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstt      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefd0<'@qXX',@X'.@2XXX'>@-Gray 30%XX '@Arrow ArrowddXXXS'@ArrowddArrow}}XXX_'.@,XXX'.@,XXX'@)XX'@LX @f @| @ @ @ @ @'@ XX' @̙Gray 20%Gray 10%Gray 30%Gray 40%XX X2XDXVXpXX'6@822ddX'(@lX':@ BMvv(@@SD@x^SI 0 s\ z 46ZBn8x)1̔.<觔B+̄ ޢ40:prf |q]~+H~|WFMbP@aoCē[ȡz6~U{߃(( @T)) @j;(+@XX,, @X--"@,XX.."@,XX// @000 @F11 @\22 @r33 @44 @55 @66 @II @JJ v@ > RB%\) 3XXXXX&X.X6X>XFXNKK@ XX(L @MM @NN @OO @PP @QQ@XRR@6XSS:@pS<XXXX&TT @UU@XXVV@XXWW @XX @YY @*ZZ @@[[ @V\\ @l]] @^^@X__ @`` @aa @bb @cc @dd @%ee @;|| @Q}} @g @} @ @ @ @ @ @ @@3X@SX@sX@X@X@dX@X@X@4X @N @d @z @ @@ j'''''''  '''''''''' ''XX X&X,X2X>XPXbXhX0@ ''''''''' ''''' '' ''''' '' ''XXX X,X>XJX\XnXXXX** <@<XXXX X&77 ^@h6+;(,,--..XXXX X&X,HH(@ ''+'+'' g* (@'A'1'+'!''''''''' ' +'' '' XX X,X2X8X>XJXPX\XXXXff@hJJKKJJKKJJKKQQVVJJKKJJKKJJKKJJKK JJQQVV^^ JJKK JJKKSSUUVV QQVVVVJJKKSSUUVVJJKKSSUUVV JJKKRRJJKKSSUUVVJJKKRRXX X2XPXbXtXXXXXXXXX4XXXpX @@XJ@8 X8pT%;Qg}/u'=Si  / E [ q ! 7 M c y  ) Q }   1 G ] s ! I _ u ?U}+A`v&<Rh~6Vv #9OeQ?so PrW5EditEngineItemPool ,6f/0Ng*@; ",StarBatsN -",StarBatsN -",StarBatsN -"` ` ,StarBatsN -" ,StarBatsN -",StarBatsN -"hh,StarBatsN -",StarBatsN -",StarBatsN -"pp,StarBatsN - "X,StarBatsN -",StarBatsN -",StarBatsN -"` ` ,StarBatsN -" ,StarBatsN -",StarBatsN -"hh,StarBatsN -",StarBatsN -",StarBatsN -"pp,StarBatsN - ",StarBatsN -",StarBatsN -",StarBatsN -"` ` ,StarBatsN -" ,StarBatsN -",StarBatsN -"hh,StarBatsN -",StarBatsN -",StarBatsN -"pp,StarBatsN - Z"|,StarBatsN -"|,StarBatsN -` ` ,StarBatsN K",StarBatsN -,StarBatsN K"pp,StarBatsN -"  ,StarBatsN -" ,StarBatsN -"%%,StarBatsN -"0*0*,StarBatsN -Z r,StarBats -r,StarBats -r,StarBats -r ,StarBats -r,StarBats -r,StarBats -rpp,StarBats -rXX,StarBats -r@@,StarBats -r(#(#,StarBats - "XX,StarBatsi -",StarBatsi -",StarBatsi -"` ` ,StarBatsi -" ,StarBatsi -",StarBatsi -"hh,StarBatsi -",StarBatsi -",StarBatsi - ",StarBatsN-",StarBatsN-",StarBatsN-"` ` ,StarBatsN-" ,StarBatsN-",StarBatsN-"hh,StarBatsN-",StarBatsN-",StarBatsN-"pp,StarBatsN-XX.XNXn XXXh @<@*<XX$@>_dddxdddx FdddddDd xdddxYFddd ddDd Fddd Fddd ddDd Fddd ddDd FdddddDd ddDd  ddDd ddDdFdddddDd dddY ddd YDdddYDdddYDdddYD8ddd8YDXdddXYD"xdddxYD#!ddd!YDXX!X4XGXZXsXXXXXXXX XX1XDXWXjX}XXXXXXX,XE<( n@ Z?>9  XXXX X&X,X2X8X>XD ("0@FF StarBats!"- StarBats !K StarBats !K StarBats!"- StarBats!"- StarBats !K  StarBats!"-StarBats!"-StarBats!"-  StarBats!"-  StarBats !K  StarBats !K  StarBats !K  StarBatsX!"- StarBats!"-  StarBats!"- StarBats!"- StarBats !K StarBats!"- StarBatsX!"- StarBats!"- StarBats !K StarBatsX!"- StarBats!"- StarBats!r- StarBatsX!"- StarBats!"-  StarBatsX!"- StarBats!"- StarBatsX!KXXGXXXX+XdXXXXHXXXX,XeXXXXIXXXX-XfXXXXJX@',@%I/dddddXdddd,dd|d@ddd`  dddhddddddpddd  xddd (#ddd% 'ddd0* KdddX,dd|ddddY ,dd|d@ddd` ,dd|d @ddd` ,dd|d,dd|d@ddd`  ddd,dd|d@ddd` @ddd`  ddd @ddd` !dddY|"` ddd` Y#dddY$dddY%pdddpY& ddd Y' ddd Y*%ddd%Y+0*ddd0*YXX!X4XGXZXmXXXXXXXXXX1XDXWXjX}XXXXXXXXX(XAXZXsXXXXXA' @Jddddddddddddd,ddd dddXXX&X2X>XJXVXb1'@KdX+'(@FK)XXX' @hK!'@KX'N@KTimes bookman lightTimesXXX6'@ LNd 4d d d {d d d ,hd d d d id : d XXX"X,X6X@XJXTX^XhXrX|X?( @L'@LXX'@ MX'@,MX'@PMXX'@sMX'@MX%' @MS' @M"' @M' @M @N@NX{(x@Np_'http://user-mode-linux.sourceforge.net/&http://user-mode-linux.sourceforge.netW!X!XJ '++++,0,V,,|----- .?.^.t......PSg* "XX,StarBatsN -",StarBatsN -",StarBatsN -"` ` ,StarBatsN -" ,StarBatsN -",StarBatsN -"hh,StarBatsN -",StarBatsN -",StarBatsN -"pp,StarBatsN - ( StarBats!"-!''Times': d 08s2 +9bStandardStandard$'''''''''''''''+;(,,--..QQg* (@'A'1'+'!'''''''''Object with arrowStandardObject with arrow'''''''Object with shadowStandardObject with shadow+;(,,--..Object without fillStandardObject without fill'TextStandardText'' Text bodyStandard Text body'''Text body justfiedStandardText body justfied''+'First line indentStandardFirst line indent''g*@'TitleStandardTitle'''Title1StandardTitle1 '''+;(,,--..+''Title2StandardTitle2 ''+;(,,--..g*@'A'+''HeadingStandardHeading''A''Heading1StandardHeading1''A'''Heading2StandardHeading2''A''''Dimension LineStandardDimension Line'''''''Home~LT~Gliederung 1Home~LT~Gliederung 1''g*@'A'+'!'''''''''Home~LT~Gliederung 2Home~LT~Gliederung 1Home~LT~Gliederung 2@'A'' Home~LT~Gliederung 3Home~LT~Gliederung 2Home~LT~Gliederung 3@'A''Home~LT~Gliederung 4Home~LT~Gliederung 3Home~LT~Gliederung 4@'A'' Home~LT~Gliederung 5Home~LT~Gliederung 4Home~LT~Gliederung 5@'A'' Home~LT~Gliederung 6Home~LT~Gliederung 5Home~LT~Gliederung 6@'A'' Home~LT~Gliederung 7Home~LT~Gliederung 6Home~LT~Gliederung 7@' A'' Home~LT~Gliederung 8Home~LT~Gliederung 7Home~LT~Gliederung 8@' A'' Home~LT~Gliederung 9Home~LT~Gliederung 8Home~LT~Gliederung 9@' A'' Home~LT~Titel Home~LT~Titel''QQg*+'!''' ''''''Home~LT~UntertitelHome~LT~Untertitel''QQg*@' +'!''' ''''''Home~LT~NotizenHome~LT~Notizen ''!'''''''''Home~LT~HintergrundobjekteHome~LT~Hintergrundobjekte+;(,,--..Home~LT~HintergrundHome~LT~Hintergrund''TitleTitle@SubtitleSubtitle@Background objectsBackground objects@ Background Background@NotesNotes@ Outline 1 Outline 1@ Outline 2 Outline 1 Outline 2@ Outline 3 Outline 2 Outline 3@ Outline 4 Outline 3 Outline 4@ Outline 5 Outline 4 Outline 5@ Outline 6 Outline 5 Outline 6@ Outline 7 Outline 6 Outline 7@ Outline 8 Outline 7 Outline 8@ Outline 9 Outline 8 Outline 9@z"VJV>DvB t  ~  N z , _ +10@3=@)@e@z DrMdLS=SJoeMn0{1f{1C{1$WBODrLy LAYER_LAYOUTDrLy LAYER_BCKGRNDDrLy LAYER_BACKGRNDOBJDrLyLAYER_CONTROLSDrLy!LAYER_MEASURELINESDrMP'JoeMlVTDrML DrOb<SVDr&y1A&DrOb<SVDr&;LdA&DrOb<SVDr&y.1LDrOb<SVDr&;.LdLDrXXgg fHome~LT~GliederungDrMPJoeM`mRDrML DrObSVDr&`mR'Home~LT~Hintergrund`mRDrObSVDr& oe! Home~LT~Titel oepxV4B1[#Click to edit the title text format Home~LT~Titel<( (@'DrObWSVDr& oe{J(Home~LT~Gliederung 1 oe{J xV4B1 %Click to edit the outline text formatHome~LT~Gliederung 1<( (@'!Second Outline LevelHome~LT~Gliederung 2<( (@'"Third Outline LevelHome~LT~Gliederung 3<( (@'#Fourth Outline LevelHome~LT~Gliederung 4<( (@'$Fifth Outline LevelHome~LT~Gliederung 5<( (@'%Sixth Outline LevelHome~LT~Gliederung 6<( (@'&Seventh Outline LevelHome~LT~Gliederung 7<( (@''Eighth Outline LevelHome~LT~Gliederung 8"<( (@'*Ninth Outline LevelHome~LT~Gliederung 9#<(  (@'+ DrXXgg ^Home~LT~GliederungDrMPJoeMVTlDrML DrObSVDr&T C(0! Home~LT~TitelT C(0dxV4B1OClick to move the slide Home~LT~Titel<( (@'DrObSVDr& 3G"]#Home~LT~Notizen 3G"]mxV4B1XClick to edit the notes formatHome~LT~Notizen<( (@' DrXXgg VHome~LT~GliederungDrPgcJoeMlVTDrML8DrMD,DrXX Handoutsgg FHome~LT~GliederungDrPgRSRJoeM`mRDrML8DrMD,DrObSVDr& oe! Home~LT~Titel oe~xV4B1i)Blurring boundaries with User-mode Linux Home~LT~Titel<( (@'DrObNSVDr& 0zJ Standard 0zJzN[NNAT5 =NPNG  IHDRx"gAMA a IDATxܽieU31gdeT%AB вm mԘtCp7,c `7 {YդȈx?{'o)>+VT7>{{QlRO(RZl68wZt^˲$"1Fk$Iiq @{yQEy>F<{[fdV\p{nڜ˗~˗/y.q$I^o4FVy޳9vpy_x4#Yx4yq, JO2$I\Ubm ʗ/_vEQqZ(Dpʲh0v:NzA tUcxɲ^_(B|/nkmeYγMs( 0Xk86ƈpA?88vbBp8U|æj@Rd8>#q,-ʲ~/R@Ҫ)ι Tv;IM>enw̓\&ijzE38^~'WyTH$IR*b2h\X>R\dɎ 3"FTaJ6Bkת(cqie˲t:^ODx4%r&Ib -IGzZF)&gq: ݽ="M"KtsH<<}e jQ)LՒ˗/YF{k1Fh8m;#R[k$ɲ,Zmqqqqqn'L=W >OR bh`0CZx<p(,ECn9Շ~8șB~ggȦZ 4IDQvΏFyQA0N#,beaiqɔH0i6,8"K UB]Ն,߈Jqb‚(qnvw*uw,p([vuu뉤ão$WLhgk#fE?ޡ|%5`B6vيkh/hbc8g&fL]!Q & 5X`DpU1ㅅQF#c _!SU=XBAYԄ*oy+dRb8 ը jZFޣ^7 ݭhceYy.bd A^,///-----j5IDU>6W/ZPJA Rg#ɜO<͐;wclpd~ot!4z-O;TUۼsrVkZ+++ T >/ \5_ǧ"b"Uѳ7;Cq֒h #тfhR#3" 嵵7@5CBWjr7*L1S2f+E޹¹yb Ϙa̦0Sb+BNDiZ-ar g b*3 lQYZUD恞0tG7+=jGԘ{;>sO`Yk%ےeY{ c]C<2 @=$R|51[V,KV,ˌI(4`|XCp mɲLh‚F!LX hO}AXSfN!3mcT|T&DH$LQo6̶(pGe9sD8$bZmJp+cyq&q2 S5EDi_eWs{qF/S$h^NTJ=hT*8:l$t%3(jf*m%meYFu:E^k7Na{wun%,[ <8oW[5$q&,W_H0J4RdS~_I¤gGt^oAC,;yfAC*hj |djc˔C^<Beq*9/qϸ3GtRZ8#̋Ղ #:;!Qo3r'YB]s=v.+f͡(2QdOl8F OT')EZkIH^V*U)/WX5߱":恖' EAj ÓUeAˇ $qe9.w<O]'$E frd[PtH(3bO]Mu:e˲0Jy]m R%AgZkx Ģ.f ~)LBդV LQY;4f@[=4gf)ujuO!aU2*;ueԴd 9rx') (t0Ł6flYqWJq}YT=8thtUUpUZjn{xx({^ءnKd=o$ dClZ=3S'Zgj5_})`ęgṅfJX;6Օݕ$|}AEewHԜτ/ uQuw+Ar{w{{{lJ%.+5@˔b!OO(J殞rho40=36p:NW@I S!V515ƨU8C$g){pR-8r%"iV uazDtsi]?3w$0qhe1ψLWXuppy[n's)ed 2KEj՚p8hZxC\eg. JHt>I¹sExe^GV7$ 3'nM~ە:~uwjJLD x< $ẏq020'9)ϝ;'Aj݃ il0)R." jaaAf"Zj $h` O+ dKSp$KKKgPJYyI"R#zg31cth̻p~d[oݺS}aFHhxI$"pytItTȬ te\ř)?A!q9gD0MOzKt !z!Ϯpp t9gY.S^kD{eº2FYs% 3e޳RV7ny.[X4‚E"DyfUwSNGx_>ུF+Z#8QL]Ȇ|z,_zukky.3^K$6BJKc<i0j4):3H4)c@ypOZ"FCvqpzAjZ`uڵmC(.p8:;g}D0'&$nmgŵ&@1$DFX앞g4JpcyyjIgQ`{{ƍach58E]H"-9Q' >{CddfJk 03zY&"QUMut͛7766$,Uմ<2p9`LRJ(KDI<'ѵItEV+IQr5{- 3E#'Bȿ#+e_V5 C龸6 %Cd>]u yyB =ϔF y~xx(fwwwE$g:ݼ\$kkvpppco2(Vonnw&l\2,e\tP|`KpfqT96C!βluW~ےF{חGjן= ] eYz=!E̗t%s}\!Bg(z]z_kZDKI!/?RK]p?zauͫwŋ7nHqfl({cl1$)a~qm(("`0tpЛAYիE^~g4!EQz#jϦX悋`ӯc @Y;)QZD;8Kd屰y}Rׯ_zͥnفgDXϦy`Y^'48d=}uጶO^$˝xf|~c/^ڥd'RȆ@8F| N$z8v]ʕ+~)yȑ\\$z/}CObwwF÷+j5Ŝ6m|^拏< ϏF4^M TBHg KDm&el8}2=seiޞɾ٥Y֯x{e[7 CB&(T_:],/-g??b*___m|;0ի+1tVHDWrl{{{A1<^׿uo$n~ҥK. Yyk^Nwڳ.>WH iW*m&A9~0_`NIFozӗt6vw)I/ IDAT~VK\kxxpеZC͛կ~Dpt^ͮ]_n/H$}g8^jH$9B޳s7LnWn-Ν4)ސ_]timm';=fC=wG'I~NhwS} Phqo~MQ3'IQFe>I7>s$`7f:^Ҫֺ]wW1.=yZ1͛X]}=gf* Y}9=Pi%`+E"h2^3 %W45PS%/uE)ZC-//+++w ,'#_ Ҧ^ss+tGrrrrK$I2t=裋Ǟ wʪR9JsQc'ƉҪ<1yN{{{77]vU6>2釗.Ƙ㯾i3i"K_?ܯWz{LNBj۷;p Уo;k4|Yj^gwwwggwK-r;T {ݼc[qH_YshՑDS6HS1wܹz_7\=lí%(7·Z۽y~(胟:KC54G;.lnn187M]ڼv&;)nҕe2M:*^Z%GLg"s8fꍋwҧé2=oW~WO;c~0Nh}g$um"ӎk^]k7o9$j֌17n8]բ<(j=#{ڿ&occCГO>|S4HO'r|@ƹ Ҁ!cݨF7o֩UGf b.M]rتĪ*bRM'U62apfʙw[-"IFXV&(ΚCϗHl`!exxaSc nnoXAlň#DqughdFk Ob',"h& 8<`"Ri g:K'7{|cEHd5j/hw6n01{vv8Mzû?zïgo|,K" iVV i4FP=E#$E!ΐHcO,و V4HywN9=vX' 4t7k˭V35˥dvawVp׾++j}Y1C?:8cfJ#Kj 42RR42jhըY(Jj&XihO\ENŐ˼,T\cw[E|ZO$=.`8۷n3dY^k-/=6|`xŒC՞x?bE ԮSPS#M(MR*8h`+x(V (0QHSʍʲ<,eai{{{ׯ_;;;vA.$\2ussҒ%~'Ъam.bҘ"Kư50LJ&Q&Q0AMJ iR:Rhhie)큟@d:ݳ>{xxW{l6WEΝ޷ZO~{st?")bJF#Қ=OpD$%I7WqPړJ[3Ù֩VVM  zkטn_x;kkkVG+W D;ۈyX)&={G`TpHAYφ%`B$ bY14-7G_ϟ____[[s, y2Q[ ّiCN^yΕJF(NB3c)RPyt-`I)E16PmeD4볤tn,.\/|4 ͍76^ascbvFJA8 j)j VQD?@ʓq*̊; MdKUl=iMFYxS)}ܝ.͛?veeYCWWW`0v;jeu.jd"E:ҥ֬Un u%E4EM&45TMA g&)"C'xdLʑq`֊f_zSv[ ͋:n)6bvx=\YZF>2(R1KDPF :"Kd &RAy^i"O VAP :- MCbJ"h)J+Fv`kнYewE/po5jJ36ZCk4 Y,C(C l CGSM&I3L%EdN+}!%HKΊHKA4^j@hl?~Q:aIac1X6!cT N001de4+x&DJ7k uj2J +eRD t1 :CC\ ` 7:\S?1kk*%3 F*2|وl L eo Y&x"O.P%+ Ꮶ+y*`@D15 _חe0`w-s_?6rǍ:{W:ibAR@1:unрhLT$1bL&r'nʏoY]=0 9 5[`r2#'D!6a 2$RN)/|DAv'cǵk/_t+++24{eg?%km*wE}>O~|h-G5 ?jr :Y]V]MKTF%:E,a"h 1O>E3 kPJn77$fۿ*GEdDvy6SӉbIM ̓*bALjSR &3S[s,1B5("& jg=WY@ b4bhJ%"hMZ[(K)MHcd1Y4Awm<53wDܼDaI$0V(t:.@GO ijD !שGOae)i]TZCI4$B9%t6" %;sțDu02'[GO:'i$x"WgL 8&KM/k0 "v@)_'Iζab3>?.8W ZSR=C-E#E=E=E-E=FCI$F#(GDG#F"HW+D)ud(UU"xĺ&.l":z)Q#Ƽ%5e2DG䙱 S$ 8PN!Њ` !hdԨj{BjTFqXű6\ ﴇl4Y *+Ɂ 3;xtSO5F yewe8-f[:F;O5FS (+q_aMya)VH#\@soUЀє%hdR=&VXibVZjf*h#cc5Ql Q2E`M B<@jy1RSq\Pi?E)2i 0De-xjz{!! ')b A#rtYd1J KM2j$TOUM*FRS Pz_nІ0,`8p v? /38=9A"LSTc4Jb#> ;qa9Lit22HcYf + ڦ6-6Pv ̈́k1҄%5) h-sDpLpn:PfUpz҂tOK oܩ ʋbv)ޣiA#!9Ň)b904q4'yլ5"K Hy6[PjzkOc$؛iM رvcS:)<{K<8"D- 3?sI5K>ZMY1;r[M г4 Kb& CB (SݣxŇz_ Ԅ&@<֘MJUbVZܢ:5$džc$B#F A)2"֬s*w;*A?Y"f⦂ohbyV!#jMnyrȬx$5wPg p4ň=H>*(p>f6fDqDMlP&-Qd4(BAG K4i#(=CyL)2^ 4MUZ/V/fN%$L L 5)-g9 00%b.@BlQOAZ5XhZG6Xmڂ" *Y(-OmP0rDYLB4hzLp%4ITtE W1S=#)JI)" aTDIOjtRZ2%K#E#xF"8"fjآxXhFSĩ6+$> @eNJd䘴C.lw9+.F4/1 M85OG\T T5D)vFGx t5rFy$@h*0PHt)eǻ8B-ADhnDZIkcjSR{GW(31 l&Ž|d?z\h*p5f.ѩ}}2`~7s+n\QzyXP=U4|= \X_U}|Zz;EoF[| 1 %&MAwS-D1OP~ @}6w TL3樾.̎0d2F`&O7J"Ed*D5 IDAT Rc<=~wǮik㒹@!AS+#ZXZO>Z-_}{*(JDV.8j̍^_ 6Xݪm (5v_];.~W%1#L xHxʘ% xi)VBY𻾧Oޓo{~hƻjzRۆ4@$*{ O;kgyOw?OyhLxK6 㫾L}wFrUKᇞWSSV*&yJhT)t;|V=O_c1MO0|My+2z̆Qw(~` ?yᗿ7'|?k=}Zc'꛾~}7KcrDRhfQ|ݷ.^Peɋm/EQs?<)dS?X7ĿVymj|uӊZeL;=z -.o5g~dYW? ??_ڷ'58"H`I4P̅dЌD2DZ/o7qZs~hdC< $*r&{'.=>"\on=$g/╏7~j?0zur0b{}9We%8>-o1~yW ~]rOoP KO,-%hP#*1hHm5*cIk_+_WKٟO<;?Ӹ(ܹG]]q{=v$ yy'B$#b"hHG" 38[T *FA`!<$oBBM݄;9W ӂ,S0-ӄikY"K_d}UZ!"ܨ9lfc%^H}ys-y6Yg6 ;t`0;HU5[)+ʾ^ƍ |h:t9`" F Qk8$IVUG#z 3,Ssଢ଼fO[F*k31f?~c>;z" /3/'V 쎇چ f i60)| =-b^kd̂8>J-_vk"qUgh!%۞m˴߹Ji=`,"FUfI@er&pқmКɖ:Sm(pڅe` ω2#!&eUFI;FsKi*>Đޛf^$.,BV%:R"f'b&ĭ#K #e^V\JyǬk ;6F[~}dZY{=o ѩ$l"±p&,MCt:CLZo bp:0oJ/" DG?o2%Ե` , E"J5O\V,h| {4e+ ۝4yglꪀfe*GcI, '*)6R۩Q,_kpKlzӂ9\UyAO\/q/L%|YhV`g7j:bB{V-UsYW _Ucnf)G\ ۶jstK<]̹G;6m*͜xe{򴦋y3lvyAsVf4MMj%r5ۈ[cLUUBDU%8ܽx濾hZfv[dܭ S<>=aoO[, Y"A q&k6/^'Fǿ70q }~?ݐNSf@isg_n}: &f2^硣zZxFy M"?Uj"ck8WO M|RojWdV8Rb<1U|\/ O7} >򘻊tӂ$'{'OaeKumk.?]gCrBtgOLvN~/=Q giđ38,є9#ÉHZd%y.[W%o_OEѥ_n*tloJeQZV@R_٦rNd w:75* 0ssBjH4۾U22**N&]%c%OO(wOv,y 1 T v&Mq HYӢd ߱) #ϻI"S\v~i-jX54M] m5[bU·$keeԪWV4׀pTp詖Β[33zyI# ^k_Ux8gJbx8WGdP][j 1z`FkUx5dPQ;pa਴dǎn1NyS46A,C@(s懲OtCuG14*>Ӣ7>sv[u7vTLucZZNCUҖPU:fPXdY!j:t,r!B\  ڤ?NC  Standard ;>CxV4B1Architecture LayerStandardg*<( (@'A'1'+'!'''''''''DrObSVDr& 4.h;  Standard 4.h;xV4B1Generic kernelStandardg*<( (@'A'1'+'!'''''''''DrObSVDr&>;.hB  Standard>;.hBxV4B1DriversStandardg*<( (@'A'1'+'!'''''''''DrObSVDr& tE.hL  Standard tE.hLxV4B1m.Hardware - CPU, disks, network, terminals, ...Standard<( (@'+''DrXXblocksgg NHome~LT~GliederungDrPg!JoeMVTlDrML8DrMD,DrOb<SVDr&T C(0DrObSVDr& 3G#]#Home~LT~Notizen 3G#]vxV4B1a'This is the standard UML block diagram. The point is that UML is identical to the host kernel (especially if it is the same version as the host), except for the architecture-specific pieces. UML implements its own architecture, plus a set of drivers which use host resources to emulate devices.Home~LT~Notizen<( ( @' DrXXblocksgg VHome~LT~GliederungDrPgrJoeM`mRDrML8DrMD,DrObSVDr& oe! Home~LT~Titelt oeUxV4B1@Overview Home~LT~Titel<( (@'DrObSVDr& oeM( Home~LT~Gliederung 1P oeM1xV4B1BOperating system and processes run as processes on the host kernelHome~LT~Gliederung 1 <( (@'+'BBHardware is emulatedHome~LT~Gliederung 1 <( (@'+'$Disks - files in the host filesystemHome~LT~Gliederung 2 <( ( @'$$OTerminals and serial lines - xterms, pseudo-terminals, ttys, file descriptors, Home~LT~Gliederung 2 <( ( @'OONNetwork devices - TUN/TAP, ethertap, and slip, multicast and switch/hub daemonHome~LT~Gliederung 2 <( ( @'NN*Runs as normal user, no kernel mods neededHome~LT~Gliederung 1 <( (@'+'**DrXX overviewgg RHome~LT~GliederungDrPgJoeMVTlDrML8DrMD,DrOb<SVDr&T C(0DrObxSVDr& 3Gk#Home~LT~Notizen 3GkxV4B1HSince UML is a port to Linux, it runs as a set of processes on the host.Home~LT~Notizen<( ( @' All hardware is virtual. Devices are constructed from resources on the host. Block devices live in files, consoles and serial lines use a number of character devices, and there are a number of host network interfaces that can be used by the UML network driver.Home~LT~Notizen<( ( @' It is also non-privileged, normally running as a normal user, although a setuid helper is needed in order to set up an network interface on the host. Home~LT~Notizen<( ( @' /No modifications to the host kernel are needed.Home~LT~Notizen<( ( @' DrXX overviewgg RHome~LT~GliederungDrPgSJoeM`mRDrML8DrMD,DrObSVDr& oe! Home~LT~Titel~ oe_xV4B1JManagement Console Home~LT~Titel<( (@'DrObSVDr& oe|J( Home~LT~Gliederung 1 oe|JxV4B1{4mconsole client runs on host and talks to UML driverHome~LT~Gliederung 1<( (@'Shutdown and haltHome~LT~Gliederung 1<( (@'Plugging and unplugging devicesHome~LT~Gliederung 1<( (@'6Access to the SysRq driver and the Ctl-Alt-Del handlerHome~LT~Gliederung 1<( (@'DrXX mconsolegg VHome~LT~GliederungDrPgtJoeMVTlDrML8DrMD,DrOb<SVDr&T C(0 DrObCSVDr& 3G#]#Home~LT~Notizen 3G#]xV4B1^The next couple of slides cover the major functional improvements to UML since last years LCA.Home~LT~Notizen<( ( @' The management console allows access into the kernel from the host. UML can be shutdown and halted, devices may be plugged and unplugged. The mconsole driver also provides access to the SysRq driver and to the Ctl-Alt-Del handler.Home~LT~Notizen<( ( @' DrXX mconsolegg VHome~LT~GliederungDrPgOJoeM`mRDrML8DrMD,DrObSVDr& oe! Home~LT~Titel oegxV4B1RCopy-on-write block driver Home~LT~Titel<( (@'DrOb SVDr& oeO( Home~LT~Gliederung 1 oeOxV4B1i7Layers a read-write COW file on a readonly backing fileHome~LT~Gliederung 1<( (@'$Allows read-write shared filesystemsHome~LT~Gliederung 1<( (@'"changes stored in private COW fileHome~LT~Gliederung 2<( (@'Roll back changesHome~LT~Gliederung 1<( (@' Avoid fscksHome~LT~Gliederung 1<( (@'Improves capacity of hostHome~LT~Gliederung 1<( (@'4The uml_moo utility merges COW file and backing fileHome~LT~Gliederung 1<( (@'DrXXCOWgg RHome~LT~GliederungDrPg=JoeMVTlDrML8DrMD,DrOb<SVDr&T C(0 DrObSVDr& 3G#Home~LT~Notizen 3GxV4B1|The COW block driver is a major enhancement to UML. It allows a block device to exist in two files - a readonly shared backing file and a read-write private COW file.Home~LT~Notizen<( ( @' Modified blocks are stored in the COW file and unmodified blocks are in the backing file. All writes are made to the COW file, and reads are made from either depending on whether the block to be read has been modified or not.Home~LT~Notizen<( ( @' vThis allows changes to be rolled back by throwing out the COW file containing the changes. A special case of this is avoiding fscks on boot after a UML crash. The inconsistent filesystem data will be in the COW file. The backing file contains a consistent filesystem. So, deleting the COW file and starting with a new one will avoid fscking the filesystem on the next boot.Home~LT~Notizen<( ( @' =The ability for UMLs to shared filesystems also increases the capacity of the host to host virtual machines since it reduces the file caching requirements. Instead of fully caching a filesystem for each running UML, it is only necessary to cache one copy of the shared filesystem, plus the modified data for each UML.Home~LT~Notizen<( ( @' CMerging a COW and backing file is possible with the ul_noo utility.Home~LT~Notizen<( ( @' DrXXCOWgg RHome~LT~GliederungDrPgZJoeM`mRDrML8DrMD,DrObSVDr& oe! Home~LT~Titelv oeWxV4B1B What works Home~LT~Titel<( (@'DrObSVDr& oeP( Home~LT~Gliederung 19 oeP xV4B1 Almost everythingHome~LT~Gliederung 1<( (@'All normal applicationsHome~LT~Gliederung 2<( (@'4networking - UML to host, UML to net, and UML to UMLHome~LT~Gliederung 2<( (@'%All filesystems and network protocolsHome~LT~Gliederung 2<( (@'.X - both X clients and Xnest as local X serverHome~LT~Gliederung 2<( (@'kernel modulesHome~LT~Gliederung 2<( (@'What doesn't (yet)Home~LT~Gliederung 1<( (@'0Privileged intructions (hwclock & installations)Home~LT~Gliederung 2<( (@'NestingHome~LT~Gliederung 2<( (@'DrXXworksgg RHome~LT~GliederungDrPg1JoeMVTlDrML8DrMD,DrOb<SVDr&T C(0 DrObSVDr& 3Gv#Home~LT~Notizen 3GvxV4B1nUML can run almost everything that the host can run. Networking works in all permutations - UML to the host, to the local net, UML to the Internet as a whole. Also, private networks with no involvement of the host networking is possible.Home~LT~Notizen<( ( @' SAll filesystems and network protocols work since they are architecture independent.Home~LT~Notizen<( ( @' Kernel modules work.Home~LT~Notizen<( ( @' >Anything in the kernel that is hardware-independent will work.Home~LT~Notizen<( ( @' The exceptions in userspace are things that use privileged instructions. The worst offenders are hwclock (which uses iopl and inb/outb) and many installation procedures (which probe for hardware in very non-portable ways.Home~LT~Notizen<( ( @' DrXXworksgg RHome~LT~GliederungDrPgJoeM`mRDrML8DrMD,DrObSVDr& oe! Home~LT~Titelx oeYxV4B1D Applications Home~LT~Titel<( (@'DrObSVDr& oe|J( Home~LT~Gliederung 1m oe|JNxV4B1- DevelopmentHome~LT~Gliederung 1 <( (@'Kernel debuggingHome~LT~Gliederung 2 <( ( @'Distributions and related toolsHome~LT~Gliederung 2 <( ( @'Embedded platform emulationHome~LT~Gliederung 2 <( ( @'%Security : honeypot, jail, or sandboxHome~LT~Gliederung 1 <( (@'virtual hosting and colocationHome~LT~Gliederung 1 <( (@'Virtual networkingHome~LT~Gliederung 1 <( (@'DrXXappsgg RHome~LT~GliederungDrPgTJoeMVTlDrML8DrMD,DrOb<SVDr&T C(0DrObSVDr& 3G#Home~LT~NotizenX 3G9xV4B19UML is currently being used for a wide variety of things.Home~LT~Notizen<( ( @' 'The largest category of applications is various forms of development. It is widely used for kernel development, since it allows tools like gdb, gprof, and gcov to be used. It is being used by the developers of some distributions such as Trinux and some BBCs, plus related tools such as busybox.Home~LT~Notizen<( ( @' Security applications are another large area. It will soon be used as the basis of a honeypot network and the honeynet.org project is planning on using it as part of its virtual honeynet project. It is also being used to jail services, such as bind and sendmail, which are not well-trusted. Potentially, it can be used in applications, such as web browsers, which need to execute untrusted code in a secure environment. Home~LT~Notizen<( ( @' +'cA number of ISPs are considering using UML to offer virtual colocation services to their customers.Home~LT~Notizen<( ( @' +'Virtual networking is another large application. UML is mostly used as part of development and testing. The FreeS/WAN group is using UML as their standard testbed.Home~LT~Notizen<( ( @' +'DrXXappsgg RHome~LT~GliederungDrPg9JoeM`mRDrML8DrMD,DrObSVDr& oe! Home~LT~Titel~ oe_xV4B1JKernel vs. process Home~LT~Titel<( (@'DrObeSVDr& oe|J( Home~LT~Gliederung 1 oe|JxV4B1UML is a processHome~LT~Gliederung 1 <( (@'"from the point of view of the hostHome~LT~Gliederung 2 <( (@'UML is a kernelHome~LT~Gliederung 1 <( (@''from the point of view of its processesHome~LT~Gliederung 2 <( (@' structurallyHome~LT~Gliederung 2 <( (@'codeHome~LT~Gliederung 2 <( (@'DrXX&kernel/processgg VHome~LT~GliederungDrPgJoeMVTlDrML8DrMD,DrOb<SVDr&T C(0DrObMSVDr& 3Gg#Home~LT~Notizen 3GgxV4B1Normally, something is either in userspace in the kernel, but never both. However, UML can be looked as being both. It is obviously a process from the point of view of the host. It can be manipulated in all ways as a process on the host.Home~LT~Notizen<( ( @' However, in a number of other ways, it is clearly a kernel. It is a kernel from the point of view of its processes. It is also clearly a kernel when you look at its code and its structure.Home~LT~Notizen<( ( @' oOn the other hand, the lowest level of the architecture code, which interacts with the host, is userspace code.Home~LT~Notizen<( ( @' DrXX&kernel/processgg RHome~LT~GliederungDrPgCJoeM`mRDrML8DrMD,DrObSVDr& oe! Home~LT~Titel oeexV4B1PUML as userspace library Home~LT~Titel<( (@'DrObpSVDr& oe|J( Home~LT~Gliederung 1 oe|J xV4B1 $Package UML as linux.so (or linux.a)Home~LT~Gliederung 1 <( (@'*Provides kernel functionality to processesHome~LT~Gliederung 1 <( (@'+' Memory allocation and managementHome~LT~Gliederung 2 <( ( @' FilesystemsHome~LT~Gliederung 2 <( ( @'"data storage - possibly persistentHome~LT~Gliederung 3<( (@'NetworksHome~LT~Gliederung 2 <( ( @' Full stackHome~LT~Gliederung 3<( (@'DevicesHome~LT~Gliederung 3<( (@'!Process becomes full network nodeHome~LT~Gliederung 3<( (@'DrXXlibrarygg VHome~LT~GliederungDrPg)JoeMVTlDrML8DrMD,DrOb<SVDr&T C(0DrObSVDr& 3Gpz#Home~LT~Notizen 3GpzxV4B1hUML is currently built and packaged as a standalone executable. However, it is also possible to package it as a library which may be linked into any process which wants to.Home~LT~Notizen<( ( @' This would provide kernel functionality to the application. They would get the kernel's memory allocation and management algorithms. They would gain all the filesystems, which could be used as an internal database for any application data (especially hierarchical data). If it is backed by a file on the host, that data would also be persistent and would have the consistence guarantees and recovery of the filesystem.Home~LT~Notizen<( ( @' +'oThe presence of the networking stack and drivers would allow the application to be a full-fledged network node.Home~LT~Notizen<( ( @' +'DrXXlibrarygg RHome~LT~GliederungDrPg\JoeM`mRDrML8DrMD,DrObSVDr& oe! Home~LT~Titel oeixV4B1TWhy link against the kernel? Home~LT~Titel<( (@'DrObSVDr& oe|J( Home~LT~Gliederung 1 oe|JxV4B12Load internal data into a filesystem and export itHome~LT~Gliederung 1<( (@'Application configurationHome~LT~Gliederung 2<( ( @'Control ala /procHome~LT~Gliederung 2<( ( @'Application UIHome~LT~Gliederung 2<( ( @'Use UML jailingHome~LT~Gliederung 1<( (@'Web browsers, mail readersHome~LT~Gliederung 2<( ( @'DrXX$ library appsgg VHome~LT~GliederungDrPg|JoeMVTlDrML8DrMD,DrOb<SVDr&T C(0DrObSVDr& 3G#]#Home~LT~Notizen 3G#]axV4B1LClick to add notesHome~LT~Notizen<( (@' DrXX$ library appsgg VHome~LT~GliederungDrPg - JoeM`mRDrML8DrMD,DrObSVDr& oe! Home~LT~Titelv oeWxV4B1B Apache/UML Home~LT~Titel<( (@'DrObSVDr&+e= Standardy+e=ZxV4B1EHostStandard<( (@'+'DrObSVDr&I\^tEODrObuSVDr&I\^tEStandardI\^tEDrObuSVDr&5%,B Standard5%,BDrObSVDr& ,$Standardy ,$ZxV4B1E Apache + UMLStandard<( (@'+'DrObSVDr& '^*1 Standardm '^*1NxV4B19ConfigStandard<( (@'DrObSVDr&6'V1 Standardz6'V1[xV4B1F/etc/httpd/config/*Standard<( ( @'DrObSVDr&})+7- StandardƇ;^*,6,DrObSVDr&66V> Standardt66V>UxV4B1@ Tuning daemonStandard<( (@'DrObSVDr&D0{Fs7 Standard;<(#E6E1DrXXDrObSVDr&IB^0N StandardIB^0NhxV4B1SKernel or process?Standard<( (@'+'DrObSVDr&"1-40 Standardr"1-40SxV4B1>nfsStandard<( ( @' DrXX" Apache/UMLgg NHome~LT~GliederungDrPgJoeMVTlDrML8DrMD,DrOb<SVDr&T C(0DrObSVDr& 3Gx#Home~LT~Notizen 3GxsxV4B1ZThis is a diagram of a possible use of UML as a library. Let's say that Apache links in UML and uses it to store its configuration in a filesystem internally, and that it exports that filesystem via NFS to the host or some other node on the network.Home~LT~Notizen<( (@' The host can mount it in its own filesystem, say on /etc/httpd/config. Now, anything on the host can read and write any individual configuration variable. If Apache is willing to have variables change on the fly, then this allows fine-tuning of the configuration without editing httpd.conf and restarting it. So, some daemon could be watching a number of servers, their internal statistics, and other things such as machine and network load, and tweak the configurations of the servers to adjust to changing loads.Home~LT~Notizen<( (@' So, is this Apache a process or a kernel? It is a normal Apache server, so it's clearly a process. But it's also acting as a real network node. So, it's really both a process and a kernel.Home~LT~Notizen<( (@' DrXX" Apache/UMLgg RHome~LT~GliederungDrPgJoeM`mRDrML8DrMD,DrObSVDr& oe! Home~LT~Titel~ oe_xV4B1JKernel or process? Home~LT~Titel<( (@'DrObSVDr& oe|J( Home~LT~Gliederung 1j oe|JKxV4B1,#App would be an SMP virtual machineHome~LT~Gliederung 1 <( (@'Requires (at least) two threadsHome~LT~Gliederung 1 <( (@'0main application thread would be a kernel threadHome~LT~Gliederung 2 <( ( @'-outside requests handled by other UML threadsHome~LT~Gliederung 2 <( ( @'&Some parts of app are normal user codeHome~LT~Gliederung 1 <( (@'Some parts are kernel codeHome~LT~Gliederung 1 <( (@'DrXX'kernel/process?gg VHome~LT~GliederungDrPg9JoeMVTlDrML8DrMD,DrOb<SVDr&T C(0DrObSVDr& 3Gs#Home~LT~Notizen= 3GsxV4B1In kernel terms, something linking against UML would be an SMP virtual machine. It would need to be SMP because it would need to have multiple threads, at least one of which would be the main application thread, which would never call schedule(). Other kernel threads would be needed to handle internal kernel housekeeping and responding to the outside world if it was using the network.Home~LT~Notizen<( (@' `It would contain its normal userspace code, which implements the normal userspace functionality.Home~LT~Notizen<( (@' It would also call into the kernel, and that code would act as a kernel and make the application look and act like a separate machine.Home~LT~Notizen<( (@' DrXX'kernel/process?gg RHome~LT~GliederungDrPgqJoeM`mRDrML8DrMD,DrObSVDr& oe! Home~LT~Titel oeaxV4B1LRoot vs. normal user Home~LT~Titel<( (@'DrOb3SVDr& oe|J( Home~LT~Gliederung 1 oe|JxV4B1Things inside UML may be rootHome~LT~Gliederung 1 <( (@'but only inside UMLHome~LT~Gliederung 2 <( ( @'On host, they are normal userHome~LT~Gliederung 1 <( (@'Useful for testingHome~LT~Gliederung 1 <( (@'$Allow many admins without many rootsHome~LT~Gliederung 1 <( (@'One service per UMLHome~LT~Gliederung 2 <( ( @'One admin per serviceHome~LT~Gliederung 2 <( ( @'+Admins have root inside UML but not on hostHome~LT~Gliederung 2 <( ( @'DrXX! root/usergg VHome~LT~GliederungDrPgJoeMVTlDrML8DrMD,DrOb<SVDr&T C(0DrObSVDr& 3G#Home~LT~Notizen 3GixV4B1N_Another hard distinction is between root and normal users. Again, UML straddles this boundary.Home~LT~Notizen<( (@' UML normally runs as a normal user, so it has no particular privileges on the host. However, whoever is logged in to the UML can be expected to have root privileges inside it.Home~LT~Notizen<( (@' This is useful for testing. A risky procedure can be tested without risking a physical machine by doing it inside a virtual machine. If it goes horribly wrong, then the UML can just be thrown out.Home~LT~Notizen<( (@' Another interesting application implied by this is to allow many people to administer services without giving them all root access on the host. Each service can be put in its own virtual machine, and one person given root access to it. Then, there are many people with root privileges, but none of them need root on the host. root on the host would only be required to set up whatever network access was needed by the services.Home~LT~Notizen<( (@' DrXX! root/usergg RHome~LT~GliederungDrPg C JoeM`mRDrML8DrMD,DrObSVDr&,'~@1  Standard,'~@1xV4B1 FilesystemStandard<( ( @' Block driverStandard<( ( @' DrObSVDr& oe! Home~LT~Titelv oeWxV4B1B UP vs. SMP Home~LT~Titel<( (@'DrObuSVDr&g "> Standardg ">DrObSVDr&?+KK- Standard~@,jJ,DrObSVDr&,B~@FStandardp,B~@FQxV4B1<SMPStandard<( ( @'+'DrObSVDr&, ~@$Standardx, ~@$YxV4B1D Shared diskStandard<( ( @'+'DrObuSVDr&jJ`> StandardjJ`>DrObuSVDr&g '"1 Standardg '"1DrObSVDr&!+-- Standard,,",DrObuSVDr&jJ'`1 StandardjJ'`1DrObSVDr&g S"IStandardrg S"ISxV4B1>UML 1Standard<( (@'+'DrObSVDr&J`IStandardrJ`ISxV4B1>UML 2Standard<( (@'+'DrObSVDr&g A"DStandardog A"DPxV4B1;UPStandard<( (@'+'DrObSVDr&jJA`DStandardojJA`DPxV4B1;UPStandard<( (@'+'DrObSVDr&!/6>>  Standard{!/6>>\xV4B1G virtual diskStandard<( ( @' DrObSVDr&50s7s7 Standard6166DrXXUP/SMPgg NHome~LT~GliederungDrPgQJoeMVTlDrML8DrMD,DrOb<SVDr&T C(0DrOb&SVDr& 3G d#Home~LT~Notizen 3G dxV4B1&Another hard distinction is UP vs SMP.Home~LT~Notizen<( (@' kHowever, this diagram shows a hybrid UP/SMP virtual machine. There are two UP UMLs which both map in another runt UML which contains not much more than a filesystem, the block layer, and a block driver. They both mount that filesystem locally and access it as a local device. Since that is accessed as a local filesystem by two UMLs, that code needs to be SMP. Home~LT~Notizen<( (@' dSo, the two UMLs, while they are UP, would execute SMP code while running in that shared filesystem.Home~LT~Notizen<( (@' DrXXUP/SMPgg RHome~LT~GliederungDrPgbJoeM`mRDrML8DrMD,DrObSVDr& oe! Home~LT~Titel} oe^xV4B1IShared subsystems Home~LT~Titel<( (@'DrOb'SVDr& oeM( Home~LT~Gliederung 1 oeMxV4B1?Filesystem + block layer + block driver + kernel infrastructureHome~LT~Gliederung 1<( (@''Network stack + driver + infrastructureHome~LT~Gliederung 1<( (@'Kernel infrastructureHome~LT~Gliederung 1<( (@'Memory allocation and cachesHome~LT~Gliederung 2<( (@' Process sleep/wakeupHome~LT~Gliederung 2<( (@' MInterrupts will require process in one instance to wake up process in anotherHome~LT~Gliederung 1<( (@' SMP or UP?Home~LT~Gliederung 1<( (@'DrXX)Shared subsystemsgg RHome~LT~GliederungDrPg]JoeMVTlDrML8DrMD,DrOb<SVDr&T C(0DrOb'SVDr& 3G(~#Home~LT~Notizen 3G(~xV4B1In the previous example, the shared UML would contain only what's needed to run a filesystem. This includes the filesystem, block layer, a block driver, and whatever kernel infrastructure they need.Home~LT~Notizen<( (@' Another example would be a shared network interface. This would contain the network stack, a network driver, and kernel infrastructure.Home~LT~Notizen<( (@' The needed infrastructure would include stuff like memory allocation and management. Anything that used the page or buffer caches, or any other caches, would need their own private versions of those.Home~LT~Notizen<( (@' An interesting problem is that a process in one UML would need to be able to wake up a process in another UML. This would require a mechanism for cross-UML process wakeups.Home~LT~Notizen<( (@' DrXX)Shared subsystemsgg RHome~LT~GliederungDrPgqJoeM`mRDrML8DrMD,DrObSVDr& oe! Home~LT~Titel oeixV4B1TAccess to external resources Home~LT~Titel<( (@'DrOb+SVDr& oeL( Home~LT~Gliederung 1 oeLxV4B13Disguise host resources as basic Linux abstractionsHome~LT~Gliederung 1 <( (@'filesHome~LT~Gliederung 2 <( ( @' filesystemsHome~LT~Gliederung 2 <( ( @' processesHome~LT~Gliederung 2 <( ( @'Databases as filesystemHome~LT~Gliederung 1 <( (@'2ls /mysql/'select * from cars where color = "red"'Home~LT~Gliederung 2 <( ( @'"Services and machines as processesHome~LT~Gliederung 1 <( (@'kill -HUP Home~LT~Gliederung 2 <( ( @'DrXX externalgg RHome~LT~GliederungDrPg2JoeMVTlDrML8DrMD,DrOb<SVDr&T C(0!DrObSVDr& 3G#Home~LT~Notizen 3GxV4B1lEThis is a bit of a digression which will become relevant a bit later.Home~LT~Notizen<( (@' It is possible and useful to make resources on the host and elsewhere look like basic Linux abstractions inside UML. hostfs does this by mapping host files onto files inside UML.Home~LT~Notizen<( (@' Another possibility is to disguise a SQL database as a filesystem and mount it as such in UML. This would allow queries to be made by doing filesystem operations such as ls and cd in that filesystem.Home~LT~Notizen<( (@' Other things may make sense as processes. Representing host services (like multprocess services) or machines as UML processes would allow them to be manipulated by process tools.Home~LT~Notizen<( (@' Using the existing file and process tools to manage outside resources may be somewhat non-optimal, but it would work. The interesting thing is that better tools could be constructed with small changes to existing GUI file and process management tools.Home~LT~Notizen<( (@' DrXX externalgg RHome~LT~GliederungDrPgJoeM`mRDrML8DrMD,DrObSVDr& oe! Home~LT~Titelz oe[xV4B1FUML Clustering Home~LT~Titel<( (@'DrObSVDr& oe|J( Home~LT~Gliederung 1Y oe|J:xV4B1-Spread one UML instance across multiple hostsHome~LT~Gliederung 1<( (@')DSM initially - fault pages between hostsHome~LT~Gliederung 2<( ( @'1Later do it for real, maybe using Compaq SSI workHome~LT~Gliederung 2<( ( @'3UML will have access to combined resources of hostsHome~LT~Gliederung 1<( (@'Lanalogous to physical cluster having access to combined hardware of members Home~LT~Gliederung 2<( ( @'DrXX Clustersgg VHome~LT~GliederungDrPgVJoeMVTlDrML8DrMD,DrOb<SVDr&T C(0#DrOb)SVDr& 3G#Home~LT~Notizen 3GxV4B1It's possible to spread a UML instance over multiple hosts in the same way that it's possible to spread a single native kernel image across multiple physical machines in an SSI cluster.Home~LT~Notizen<( (@' A fairly easy, but easy way to do this is to implement a mechanism for faulting pages from one host to another. So, when a thread on one host accesses a page that's on another host, it would fault, and the fault handler would copy the page across.Home~LT~Notizen<( (@' This would be highly inefficient. A better way would be to implement an RPC mechanism such as the Compaq SSI work, rather than this DSM.Home~LT~Notizen<( (@' Having done this, you would have a virtual cluster running over multiple hosts which would be fairly similar to a physical cluster running across multiple physical machines.Home~LT~Notizen<( (@' This virtual cluster would have access to the combined resources of the hosts in the same way that a physical cluster has access to the combined resources of its members. Home~LT~Notizen<( (@' DrXX Clustersgg RHome~LT~GliederungDrPgHJoeM`mRDrML8DrMD,DrObSVDr& oe! Home~LT~Titel oeexV4B1PWhat OS are you running? Home~LT~Titel<( (@'DrObySVDr& oe|J( Home~LT~Gliederung 1 oe|JxV4B19Spread a UML instance across hosts running different OSesHome~LT~Gliederung 1<( (@'=UML processes have access to combined resources of those OSesHome~LT~Gliederung 1<( (@' Linux : MySQLHome~LT~Gliederung 2<( ( @' OS/400 : kernel database and JVMHome~LT~Gliederung 2<( ( @'!Windows : apps and infrastructureHome~LT~Gliederung 2<( ( @'DrXXOS?gg VHome~LT~GliederungDrPgrJoeMVTlDrML8DrMD,DrOb<SVDr&T C(0%DrObSVDr& 3G#]#Home~LT~Notizenv 3G#]WxV4B1@So, if you run a single UML instance over multiple hosts, there is no requirement that the hosts be running the same operating system.Home~LT~Notizen<( (@' OThe UML would have access to the combined resources of those operating systems.Home~LT~Notizen<( (@' DrXXOS?gg RHome~LT~GliederungDrPg k JoeM`mRDrML8DrMD,DrObSVDr& oe! Home~LT~Titel oeexV4B1PWhat OS are you running? Home~LT~Titel<( (@'DrObuSVDr&ILY!/ StandardILY!/DrObSVDr&vLY/StandardpvLY/QxV4B1<UMLStandard<( ( @'+'DrObSVDr&'B" Standards'B"TxV4B1?ApacheStandard<( ( @'+'DrObuSVDr&1"B Standard1"BDrObuSVDr&+*1>B Standard+*1>BDrObuSVDr&tE1LYB StandardtE1LYBDrObSVDr&tE"-IStandardvtE"-IWxV4B1B Linux/x86Standard<( ( @'+'DrObSVDr&)tE=-IStandardy)tE=-IZxV4B1E OS/400 / ppcStandard<( ( @'+'DrObSVDr&tEtELY-IStandardxtEtELY-IYxV4B1D Windows/x86Standard<( ( @'+'DrObSVDr&]6? ; Standardr]6? ;SxV4B1>MySQLStandard<( ( @'+'DrObSVDr&]5%? )Standards]5%? )TxV4B1?/mysqlStandard<( ( @'+'DrObSVDr&J)s7 Standard(#6+*DrObSVDr&,6;; Standardp,6;;QxV4B1<JVMStandard<( ( @'+'DrObSVDr&+*$>i, Standardp+*$>i,QxV4B1<jvmStandard<( ( @'+'DrObSVDr&63+4s7 Standard(#464,DrObSVDr&G6V; StandardpG6V;QxV4B1<???Standard<( ( @'+'DrObSVDr&G%V)StandardqG%V)RxV4B1=/???Standard<( ( @'+'DrObSVDr&NJ)APs7 Standard(#`O6`O+*DrXXOS? picgg NHome~LT~GliederungDrPg'JoeMVTlDrML8DrMD,DrOb<SVDr&T C(0'DrObSVDr& 3GHo#Home~LT~Notizen+ 3GHo xV4B1*This is a picture of the previous example.Home~LT~Notizen<( (@' The host MySQL database is mounted inside UML on /mysql. The OS/400 JVM is represented inside UML as a process. Maybe Java is fed into the 'jvm' stdin and output grabbed from its stdout. Whatever Windows resources are desirable are either mounted as filesystems or represented as processes. The Apache running inside UML has local, native access to Linux, OS/400, and Windows data, resources, and applications.Home~LT~Notizen<( (@' So, what OS is it running. Obviously, it's inside a Linux virtual machine, but it also has elements of another Linux, OS/400, and Windows.Home~LT~Notizen<( (@' +'DrXXOS? picgg RHome~LT~GliederungDrPg2JoeM`mRDrML8DrMD,DrObSVDr& oe! Home~LT~Titel oekxV4B1VCluster-standalone node hybrid Home~LT~Titel<( (@'DrObSVDr& oe|J( Home~LT~Gliederung 1 oe|JixV4B1JECombine the previous ideas and link an application into a UML clusterHome~LT~Gliederung 1 <( (@'-Kernel code would be partitioned across nodesHome~LT~Gliederung 1 <( (@'$Userspace code tied to original nodeHome~LT~Gliederung 1 <( (@',Kernel able to access all resources of hostsHome~LT~Gliederung 1 <( (@'#Application code is standalone nodeHome~LT~Gliederung 1 <( (@'Kernel code is clusteredHome~LT~Gliederung 1 <( (@'DrXX# lib+clustergg VHome~LT~GliederungDrPgvJoeMVTlDrML8DrMD,DrOb<SVDr&T C(0)DrObSVDr& 3Gs#Home~LT~Notizenz 3Gs[xV4B1@The UML library and clustering ideas can be combined to allow normal applications to be clustered fairly transparently. They will be clustered to the extent they use kernel functionality.Home~LT~Notizen<( (@' Their own code will be tied to the node that they started on, but the kernel code will be perfectly willing to migrate between nodes.Home~LT~Notizen<( (@' So, if the app has its own threads running on different nodes, any kernel data that they use will be transparently migrated as needed between nodes.Home~LT~Notizen<( (@' The result would be a hybrid between a cluster and a standalone node (or a set of standalone nodes if the application creates its own threads on those nodes).Home~LT~Notizen<( (@' DrXX# lib+clustergg RHome~LT~GliederungDrPgVJoeM`mRDrML8DrMD,DrObSVDr& oe! Home~LT~Titelw oeXxV4B1C Future Work Home~LT~Titel<( (@'DrOb!SVDr& oe|J( Home~LT~Gliederung 1 oe|JxV4B1}Immediate future to UML V1Home~LT~Gliederung 1 <( (@'bug squashing Home~LT~Gliederung 2<( ( @'some functionalityHome~LT~Gliederung 2<( ( @'SMPHome~LT~Gliederung 3<( (@'-Small side things contributed by other peopleHome~LT~Gliederung 3<( (@'Post-V1Home~LT~Gliederung 1 <( (@'All the other stuffHome~LT~Gliederung 2<( ( @'@order as yet undecided, except SMP needs to work for a lot of itHome~LT~Gliederung 2<( ( @'DrXX# Future workgg VHome~LT~GliederungDrPgXJoeMVTlDrML8DrMD,DrOb<SVDr&T C(0+DrOb(SVDr& 3Gk#Home~LT~Notizen 3GkxV4B1wThe current focus is on reaching V1, which will be a standard virtual machine which is stable enough and funcctional enough to be put into production. Limited functionality may be added. SMP was mostly done by Lennert Buytenhek and needs only a little more work. This will probably be done for V1. Other limited functionality may be, as long as it's done by other people.Home~LT~Notizen<( (@' After that, all this other stuff will be done. The order is as yet unknown, except that SMP needs to be working because it is needed for a lot of the rest, especially clustering.Home~LT~Notizen<( (@' DrXX# Future workgg RHome~LT~GliederungDrPg)JoeM`mRDrML8DrMD,DrObSVDr&17. Standardp17.QxV4B1<?Standard<( (@'DrXX?gg FHome~LT~GliederungDrPg|JoeMVTlDrML8DrMD,DrOb<SVDr&T C(0-DrObSVDr& 3G#]#Home~LT~Notizen 3G#]axV4B1LClick to add notesHome~LT~Notizen<( (@' DrXX?gg VHome~LT~GliederungDrXXLGeneric PrinterSGENPRT PostScriptH`Tl`Tld,,lprdefault_queueSGENPRT DrVwP SVDr SVDr:SVDr{{SVDrALayout:SVDr{{SVDr#SVDr SVDr# SVDr0 SVDr1 SVDr3 SVDr4SVDr@SVDr SVDrD SVDrP SVDrQ DrHL DrHL DrHL ԙSblocks Root Entry!r\V)䰱CompObjEOle persist elements" SfxDocumentInfo uStarBASIC BasicManager24SfxWindowsSfxStyleSheetsbStandardjSummaryInformation( (StarDrawDocument3$9X