ࡱ; S  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~Root Entry  !r\V)䰱 PresentationStarImpress 5.0 zSfxDocumentInfo  |1( |1;c uK Info 0 Info 1 Info 2 Info 3 |1(N<44Standard LIBIMBEDDED LIBIMBEDDED TASK,0,1,H 1,0,100,1,SBX sb Z Standard StarBASICSBX ARSBX AR SBX AR2c%bqqOh+'0 h t 7(XOutdevItemPool 1   )     &'()*+,-./06789:;UVWXYZ[\]c !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstt      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefd$0%'(@wXXX'Y@ Fine DashedXX,':@2fXXXX&'9@kRedXX 'F@Arrow Arrowdd Line Arrow!<M^ *P{j3n^+MbobHb<^@rH!^3 !Hr<XXXSX'@ Arrowdd Line Arrow!<M^ *P{j3n^+MbobHb<^@rH!^3 !Hr<Arrow}} Line arrow!<M^ *P{j3n^+MbobHb<^@rH!^3 !Hr<XXX_XXF'R@ ,-XXXX&X.X6'F@g ,XXXX&X.'@ XX'@ X @  @  @  @  @0  @F  @\ '@~ XX' @ c ̙Gray 20%Gray 10%Gray 30%Gray 40%WhiteXX X2XDXVXpXXX'6@ 22ddX'(@ X':@;BMvv(@@SD@x^SI 0 s\ z 46ZBn8x)1̔.<觔B+̄ ޢ40:prf |q]~+H~|WFMbP@aoCē[ȡz6~U{߃XFKK@ XX(L @9MM @ONN @eOO@XPP @QQ@XXRR @SS^@+/)+W*SXXXX&X.X6X>TT @]UU@}XXVV@XXWW @XX @YY @ZZ @[[ @\\ @3]] @I^^@dX__ @~`` @aa @bb @cc @dd @ee @gg @hh @.ii @Djj @Zkk @pll @mm @nn(@XXXoo.@{XXXpp @ qq @6rr @Lss @btt @xuu @vv @ww @xx @yy @@X@"X@BX@bX@X@dX@X@X@X @ @3 @I @_ @u*@S''' '''8  '''''''''' '' ' '''' '''''''''''''''''''''''''''''''XXXX&X,X2XDXPXbXhXXXXXX:X^XjXXXX@ ''''' '''''' ''''' '' ''''' '' ''''''XXXX,X8XDXPXbXtXXXXX XX.XL**F@ o XXXX X&X,77 ~@!c +;(,,--..--..XXXX X&X,X2XPHHB@7"'+'+' E' g* (@'A'1'+'!''''''''' ' ' +'' +'''XXX&X,X2X8XDXJXPX\XXXXXff@$JJKKJJKKJJKKQQVVJJKKJJKKJJKKJJKKJJQQVV^^ JJKK JJKKSSUUVV ? QQVV JJKK QQVVJJKKSSUUVVJJKKSSUUVVQQVVJJKKSSUUVVJJKKSSUUVVJJKKSSUUVVOOQQVVJJKKSSUUVVQQXX X2XPXbXtXXXXXXXXXX.XRXvXXXXX X0zzv@%nnnnoonnoonnnnooXXX X2XDXPJ@% XB2:b  E F   . D Z | "8Ndz*@Vl2H^t D~.D$F\Dn'=Si/E[ !7Mcy%Eg4jZ2!X" PE(aEditEngineItemPool (6f?\0g* =@)f ",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 - 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- Z dO|NAT5 tGIF89a f3̙f3f3ffffff3f3333f333f3f3̙f3̙̙̙̙f̙3̙ffffff3f3333f333f3̙f3̙̙f3̙f3ff̙ffff3f33̙33f333̙f3ffffff3ffff̙fff3fffffff3ffffffffffff3fff3f3f3f3ff33f3ffffff3f3333f333333̙3f3333333f3333f3f3f3ff3f33f33333333f333333333f333f3̙f3f3ffffff3f3333f333f3!, Q=HNuT9c(p!rJP$P,2J(]:{6C'ϐ=hSⳟTX(; )TimesO>>KO` ` NAT5 tGIF89a f3̙f3f3ffffff3f3333f333f3f3̙f3̙̙̙̙f̙3̙ffffff3f3333f333f3̙f3̙̙f3̙f3ff̙ffff3f33̙33f333̙f3ffffff3ffff̙fff3fffffff3ffffffffffff3fff3f3f3f3ff33f3ffffff3f3333f333333̙3f3333333f3333f3f3f3ff3f33f33333333f333333333f333f3̙f3f3ffffff3f3333f333f3!, Q=HNuT9c(p!rJP$P,2J(]:{6C'ϐ=hSⳟTX(; )TimesO>>KONAT5 tGIF89a f3̙f3f3ffffff3f3333f333f3f3̙f3̙̙̙̙f̙3̙ffffff3f3333f333f3̙f3̙̙f3̙f3ff̙ffff3f33̙33f333̙f3ffffff3ffff̙fff3fffffff3ffffffffffff3fff3f3f3f3ff33f3ffffff3f3333f333333̙3f3333333f3333f3f3f3ff3f33f33333333f333333333f333f3̙f3f3ffffff3f3333f333f3!, Q=HNuT9c(p!rJP$P,2J(]:{6C'ϐ=hSⳟTX(; )TimesO>>KONAT5 tGIF89a f3̙f3f3ffffff3f3333f333f3f3̙f3̙̙̙̙f̙3̙ffffff3f3333f333f3̙f3̙̙f3̙f3ff̙ffff3f33̙33f333̙f3ffffff3ffff̙fff3fffffff3ffffffffffff3fff3f3f3f3ff33f3ffffff3f3333f333333̙3f3333333f3333f3f3f3ff3f33f33333333f333333333f333f3̙f3f3ffffff3f3333f333f3!, Q=HNuT9c(p!rJP$P,2J(]:{6C'ϐ=hSⳟTX(; )TimesO>>KOppNAT5 tGIF89a f3̙f3f3ffffff3f3333f333f3f3̙f3̙̙̙̙f̙3̙ffffff3f3333f333f3̙f3̙̙f3̙f3ff̙ffff3f33̙33f333̙f3ffffff3ffff̙fff3fffffff3ffffffffffff3fff3f3f3f3ff33f3ffffff3f3333f333333̙3f3333333f3333f3f3f3ff3f33f33333333f333333333f333f3̙f3f3ffffff3f3333f333f3!, Q=HNuT9c(p!rJP$P,2J(]:{6C'ϐ=hSⳟTX(; )TimesO>>KO  NAT5 tGIF89a f3̙f3f3ffffff3f3333f333f3f3̙f3̙̙̙̙f̙3̙ffffff3f3333f333f3̙f3̙̙f3̙f3ff̙ffff3f33̙33f333̙f3ffffff3ffff̙fff3fffffff3ffffffffffff3fff3f3f3f3ff33f3ffffff3f3333f333333̙3f3333333f3333f3f3f3ff3f33f33333333f333333333f333f3̙f3f3ffffff3f3333f333f3!, Q=HNuT9c(p!rJP$P,2J(]:{6C'ϐ=hSⳟTX(; )TimesO>>KO NAT5 tGIF89a f3̙f3f3ffffff3f3333f333f3f3̙f3̙̙̙̙f̙3̙ffffff3f3333f333f3̙f3̙̙f3̙f3ff̙ffff3f33̙33f333̙f3ffffff3ffff̙fff3fffffff3ffffffffffff3fff3f3f3f3ff33f3ffffff3f3333f333333̙3f3333333f3333f3f3f3ff3f33f33333333f333333333f333f3̙f3f3ffffff3f3333f333f3!, Q=HNuT9c(p!rJP$P,2J(]:{6C'ϐ=hSⳟTX(; )TimesO>>KO%%NAT5 tGIF89a f3̙f3f3ffffff3f3333f333f3f3̙f3̙̙̙̙f̙3̙ffffff3f3333f333f3̙f3̙̙f3̙f3ff̙ffff3f33̙33f333̙f3ffffff3ffff̙fff3fffffff3ffffffffffff3fff3f3f3f3ff33f3ffffff3f3333f333333̙3f3333333f3333f3f3f3ff3f33f33333333f333333333f333f3̙f3f3ffffff3f3333f333f3!, Q=HNuT9c(p!rJP$P,2J(]:{6C'ϐ=hSⳟTX(; )TimesO>>KO0*0*NAT5 tGIF89a f3̙f3f3ffffff3f3333f333f3f3̙f3̙̙̙̙f̙3̙ffffff3f3333f333f3̙f3̙̙f3̙f3ff̙ffff3f33̙33f333̙f3ffffff3ffff̙fff3fffffff3ffffffffffff3fff3f3f3f3ff33f3ffffff3f3333f333333̙3f3333333f3333f3f3f3ff3f33f33333333f333333333f333f3̙f3f3ffffff3f3333f333f3!, Q=HNuT9c(p!rJP$P,2J(]:{6C'ϐ=hSⳟTX(; )TimesO>>KZXX.XNXn XXHXh @[f@}fXX@g!Fddddddxdddx!ddDd  ddDd xdddxYdddY ddd YDdddYDdddYDdddYD8ddd8YDXdddXYDxdddxYD!ddd!YDXX!X4XGXZXmXXXXXXXX5XN<( n@ h""  XXXX X&X,X2X8X>XD ((,@} StarBats!"- StarBats!r- StarBats!"- StarBatsX!"-! StarBats !KStarBats!"-L StarBats!"-StarBats!"-BM6( SDtx^q0PqS0lU*}_>9C)h 鏤}Rgh w Ma-u0ɑ{14ML |t]z.uPG)tG)|(:CSl=4 Qah ʣhRgh /3434$M0<14Qgh ʣBD)<ȣ.ee&wyCSDu0< Ma2yBC34}bKYɭ!G74G2/G-*G(%G# [Vf۲Eَ,}9KReYkxi͐<]Syu}?sţ~vyv}|ۍL>y|}. {'3Lַ!OK  StarBats!"-  StarBatsX!"- Times! K  StarBats!r-k StarBatsX!"-BM6( SDtx^q0PqS0lU*}_>9C)h 鏤}Rgh w Ma-u0ɑ{14ML |t]z.uPG)tG)|(:CSl=4 Qah ʣhRgh /3434$M0<14Qgh ʣBD)<ȣ.ee&wyCSDu0< Ma2yBC34}bKYɭ!G74G2/G-*G(%G# [Vf۲Eَ,}9KReYkxi͐<]Syu}?sţ~vyv}|ۍL>y|}. {'3Lַ !OKBM6( SDtx^q0PqS0lU*}_>9C)h 鏤}Rgh w Ma-u0ɑ{14ML |t]z.uPG)tG)|(:CSl=4 Qah ʣhRgh /3434$M0<14Qgh ʣBD)<ȣ.ee&wyCSDu0< Ma2yBC34}bKYɭ!G74G2/G-*G(%G# [Vf۲Eَ,}9KReYkxi͐<]Syu}?sţ~vyv}|ۍL>y|}. {'3LַX!OKBM6( SDtx^q0PqS0lU*}_>9C)h 鏤}Rgh w Ma-u0ɑ{14ML |t]z.uPG)tG)|(:CSl=4 Qah ʣhRgh /3434$M0<14Qgh ʣBD)<ȣ.ee&wyCSDu0< Ma2yBC34}bKYɭ!G74G2/G-*G(%G# [Vf۲Eَ,}9KReYkxi͐<]Syu}?sţ~vyv}|ۍL>y|}. {'3Lַ!OKBM6( SDtx^q0PqS0lU*}_>9C)h 鏤}Rgh w Ma-u0ɑ{14ML |t]z.uPG)tG)|(:CSl=4 Qah ʣhRgh /3434$M0<14Qgh ʣBD)<ȣ.ee&wyCSDu0< Ma2yBC34}bKYɭ!G74G2/G-*G(%G# [Vf۲Eَ,}9KReYkxi͐<]Syu}?sţ~vyv}|ۍL>y|}. {'3LַX!OKBM6( SDtx^q0PqS0lU*}_>9C)h 鏤}Rgh w Ma-u0ɑ{14ML |t]z.uPG)tG)|(:CSl=4 Qah ʣhRgh /3434$M0<14Qgh ʣBD)<ȣ.ee&wyCSDu0< Ma2yBC34}bKYɭ!G74G2/G-*G(%G# [Vf۲Eَ,}9KReYkxi͐<]Syu}?sţ~vyv}|ۍL>y|}. {'3LַX!OKBM6( SDtx^q0PqS0lU*}_>9C)h 鏤}Rgh w Ma-u0ɑ{14ML |t]z.uPG)tG)|(:CSl=4 Qah ʣhRgh /3434$M0<14Qgh ʣBD)<ȣ.ee&wyCSDu0< Ma2yBC34}bKYɭ!G74G2/G-*G(%G# [Vf۲Eَ,}9KReYkxi͐<]Syu}?sţ~vyv}|ۍL>y|}. {'3LַX!OK BM6( SDtx^q0PqS0lU*}_>9C)h 鏤}Rgh w Ma-u0ɑ{14ML |t]z.uPG)tG)|(:CSl=4 Qah ʣhRgh /3434$M0<14Qgh ʣBD)<ȣ.ee&wyCSDu0< Ma2yBC34}bKYɭ!G74G2/G-*G(%G# [Vf۲Eَ,}9KReYkxi͐<]Syu}?sţ~vyv}|ۍL>y|}. {'3LַX!OK!BM6( SDtx^q0PqS0lU*}_>9C)h 鏤}Rgh w Ma-u0ɑ{14ML |t]z.uPG)tG)|(:CSl=4 Qah ʣhRgh /3434$M0<14Qgh ʣBD)<ȣ.ee&wyCSDu0< Ma2yBC34}bKYɭ!G74G2/G-*G(%G# [Vf۲Eَ,}9KReYkxi͐<]Syu}?sţ~vyv}|ۍL>y|}. {'3LַX!OK"BM6( SDtx^q0PqS0lU*}_>9C)h 鏤}Rgh w Ma-u0ɑ{14ML |t]z.uPG)tG)|(:CSl=4 Qah ʣhRgh /3434$M0<14Qgh ʣBD)<ȣ.ee&wyCSDu0< Ma2yBC34}bKYɭ!G74G2/G-*G(%G# [Vf۲Eَ,}9KReYkxi͐<]Syu}?sţ~vyv}|ۍL>y|}. {'3LַX!OKXXGXXXX+XdXXXXXXHXXXXNX X X XvX@X @'#@]dddddXdddd ,dd|d%@ddd`  dddhddddddpddd  xddd (#ddd% 'ddd0* odddX dddYddddddY|` ddd` YdddYdddYpdddpY ddd Y ddd Y %ddd%Y!0*ddd0*Y"XdddXX!X4XGXZXmXXXXXXXXXX1XJXcX|XXXXXXA'@ddddddddddddd,ddddddXXX&X2X>XJXVXb1'@*dX+'(@V4XXX' @x!'@X' @8Times bookman light Bookman LightA bookman l demi boldTerminal Bookman LXXX6XNXkX~' @ ނ"Nd 4d d d {d d d hd d Hd d id XXX"X,X6X@XJXTX^XhXrX|?( @$'@D%XX'@gX'@X'@*XX'@̓X'@X%' @S' @"' @2' @H @^{(x@ބ p_'http://user-mode-linux.sourceforge.net/&http://user-mode-linux.sourceforge.netW!X!X:=P=z=%??ThWW#XWXmXXEYZZAZ`ZZZZZZ['[=[S[Pg* "XX,StarBatsN -",StarBatsN -",StarBatsN -"` ` ,StarBatsN -" ,StarBatsN -",StarBatsN -"hh,StarBatsN -",StarBatsN -",StarBatsN -"pp,StarBatsN - ( StarBats!"-!''Times'Od 08s2 +kStandardStandard#'''''''''''''''+;(,,--..g* (@'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@tPDP8> p< n  x H t & Y %5@S+@!@'"a@9-\ DrMd??JoeMn0|1|1c|1HODrLy 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~GliederungDrPgaSRJoeM`mRDrML8DrMD,DrObSVDr& oe! Home~LT~Titel{ oe\xV4B1GUser-mode Linux Home~LT~Titel<( (@' DrObNSVDr& 0{JStandard 0{JzN[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 FHome~LT~GliederungDrPg JoeMVTlDrML8DrMD,DrOb<SVDr&T C(0DrObSVDr& v4rGyw#Home~LT~Notizen v4rGywexV4B1LThis is the standard blocks picture which has probably appeared in every UML slide slow. It shows the host kernel, consisting of a hardware-dependent layer talking to the hardware and a hardware-independent layer which talks to the interface exposed by the hardware layer.Home~LT~Notizen<( (@' gAbove that is the system call interface exposed by the generic kernel which is used by Linux processes.Home~LT~Notizen<( (@' 2Analogous to this is the UML picture above that. It consists of the same layers, except that its "hardware" layer talks to the host system call interface. Everything above that is the same, and if UML and the host Linux are the same kernel version, then the generic kernel piece is exactly the same code.Home~LT~Notizen<( (@' +'DrXXblocksgg RHome~LT~GliederungDrPgOJoeM`mRDrML8DrMD,DrObSVDr& oe! Home~LT~Titel} oe^xV4B1IOverall Structure Home~LT~Titel<( (@'DrObuSVDr&l VT+* Standardl VT+*DrObuSVDr&? 1jL  Standard? 1jLDrObSVDr&' Standardr'SxV4B1>UMLStandard<( (@'DrObSVDr& b2G6 Standardz b2G6[xV4B1F Host kernelStandard<( (@' DrObLSVDr&5%I4'  Standard5%I4'xV4B1initStandard<( (@'+'pid 1Standard<( (@'+'rootStandard<( (@'+'DrObQSVDr&5%44~@  Standard5%44~@xV4B1linuxStandard<( (@'+'pid 1234Standard<( (@'+'jdikeStandard<( (@'+'DrObNSVDr&;IL'  Standard;IL'xV4B1bashStandard<( (@'+'pid 123Standard<( (@'+'userStandard<( (@'+'DrObQSVDr&;4L~@  Standard;4L~@xV4B1linuxStandard<( (@'+'pid 1356Standard<( (@'+'jdikeStandard<( (@'+'DrObSVDr&+&-4 Standard,',4DrCn$DrCn$;xi(#IDrObSVDr&UC&E4 Standard6D'6D4DrCn$DrCn$;xi(#IDrObSVDr&;GYkK Standard};GYkK^xV4B1IPTRACE_SYSCALLStandard<( (@'DrObSVDr&VT4e~@  StandardVT4e~@xV4B1tracing Standard<( (@'threadStandard<( (@'DrOb$SVDr&UC?]UF  Standard*]~@]tE6DtE6D~@DrCn$ DrCn$;xixiUDrOb$SVDr&+?]UF  Standard*]~@]tE,tE,~@DrCn$ DrCn$;xixiUDrXX# big picturegg FHome~LT~GliederungDrPgJoeMVTlDrML8DrMD,DrOb<SVDr&T C(0DrObSVDr& 3G-d#Home~LT~Notizen 3G-dgxV4B1P-This picture shows the relationship between UML processes and host processes. Each UML process has a host process. The host process is used solely as an execution context. It will have completely different attributes from the UML process, including different name, different uid, and different pid.Home~LT~Notizen<( (@' It also shows the tracing thread, whose job it is to trace the system calls of all the other UML threads so that they may be intercepted, nullified, and executed in the context of UML.Home~LT~Notizen<( (@' DrXX# big picturegg RHome~LT~GliederungDrPgJoeM`mRDrML8DrMD,DrObSVDr& pe! Home~LT~Titel pelxV4B1WVirtualization of a system call Home~LT~Titel<( (@'DrObuSVDr&@ aO Standard@ aODrObSVDr&rj Standard|rj]xV4B1H Process stackStandard<( (@' DrObuSVDr&6%BaO  Standard6%BaODrObSVDr&'; Standard{';\xV4B1G Kernel stackStandard<( (@' DrObuSVDr&GjaO  StandardGjaODrObSVDr&kJ,b Standard}kJ,b^xV4B1ITracing threadStandard<( (@'DrObNSVDr&r@ +  Standardr@ +xV4B1int 0x80Standard<( (@' enter kernelStandard<( (@' notify parentStandard<( (@' DrObSVDr&kJ$h4  StandardNkJ$h4/xV4B1Nullify system callStandard<( (@'Save process stateStandard<( (@'Force process ontoStandard<( (@' kernel stackStandard<( (@' DrObSVDr&'0B@  Standard1'0B@xV4B1Execute systemStandard<( (@'callStandard<( (@'Signal self whenStandard<( (@'doneStandard<( (@'DrObSVDr&kJM;/hJ  Standard<kJM;/hJxV4B1Restore process Standard<( (@'stateStandard<( (@'Set system call Standard<( (@' return valueStandard<( (@' DrObSVDr&ruF>N  StandardruF>NxV4B1Continue afterStandard<( (@' system callStandard<( (@' DrOb$SVDr&5%LK-  Standard*&6&6,kJ,DrCn$DrCn$;{PFZDrObSVDr&%A3{Z9  Standard!Y4Y8B8DrCn$DrCn$ ;xiLDrObSVDr&3?LKC  Standard!4@4CkJCDrCn$ DrCn$ ;xiPFLDrOb-SVDr&xI.ZM  Standard3MYJMYL4L4YJYJDrCn$ DrCn$ ;xi?DrObSVDr&>7(VG Standard!'88uFDrCn$ DrCn$ ;PF(#LDrOb$SVDr& +51  Standard*+n.4n.40DrCn$DrCn$ ;xi(#ZDrXX syscallsgg FHome~LT~GliederungDrPgJoeMVTlDrML8DrMD,DrOb<SVDr&T C(0 DrObaSVDr& 3G#Home~LT~Notizen 3GxV4B1This shows the process of executing a UML system call. The left two blocks are the two process stacks - the normal process execution stack and the alternate signal stack, which in kernel terms is the kernel stack. The right block is the tracing thread.Home~LT~Notizen<( (@' Since UML executes normal i386 binaries, which contain int 0x80 instructions for system calls, these must be intercepted and nullified. This is done by the tracing thread, which does system call tracing on all UML processes. When a system call is started, the tracing thread gains control, nullifies it, queues a signal to the process in order to make it run on its kernel stack, and continues it. The process executes the system call inside UML and signals itself when it's done. This signal is intercepted and cancelled by the tracing thread, which restores the original process state, with the system call return value, and continues the process.Home~LT~Notizen<( (@' 7@7@}The red arrows show the execution of the process in order to demonstrate that that is exactly the same as in a native kernel.Home~LT~Notizen<( (@' }}DrXX syscallsgg RHome~LT~GliederungDrPg`JoeM`mRDrML8DrMD,DrObSVDr& oe! Home~LT~Titel oegxV4B1RAddress space organization Home~LT~Titel<( (@'DrObSVDr&|S Standard|SxV4B1 process textStandard<( (@' 0x8000000Standard<( (@'+' DrOb$SVDr& +* Standard*  $$$$+*DrCn$DrCn$ ;xi(#ZDrOb'SVDr&TSB StandardTSBxV4B1process shared librariesStandard<( (@'+' 0x40000000Standard<( (@'+' DrOb$SVDr&,7+* Standard*,,$$7$$7+*DrCn$DrCn$ ;xi(#ZDrObsSVDr&G~@l+L StandardG~@l+LxV4B1kernel "physical" and Standard<( (@'+'virtual memoryStandard<( (@'+'... - 0xc0000000Standard<( (@'+'DrOb$SVDr&U6Z~@ Standard*Z~@Z>U>U6DrCn$DrCn$;{(#xiZDrOb#SVDr&GJ-X+* Standard*GJ+*GJ*#-X*#-XDrCn$DrCn#;(#xiZDrObjSVDr&+*~@E+L Standard+*~@E+LxV4B1kernel text and Standard<( (@'+' static dataStandard<( (@'+' 0xa0000000 -... Standard<( (@'+'DrOb$SVDr&76N~@ Standard*7~@7;N;N6DrCn$DrCn$;(#xiZDrObuSVDr&?+*56 Standard?+*56DrObuSVDr&5+*6  Standard5+*6DrObuSVDr&+*26 Standard+*26DrObuSVDr&2+*<6  Standard2+*<6DrObuSVDr&ZQ+*Z6  StandardZQ+*Z6DrObuSVDr&H+*K6  StandardH+*K6DrObuSVDr&K+*ZQ6  StandardK+*ZQ6DrObuSVDr&<+*H6 Standard<+*H6DrOb"SVDr&GSjStandardGSjxV4B1 process stackStandard<( (@'+' ... - 0xa0000000Standard<( (@'+'DrXX% address spacegg FHome~LT~GliederungDrPg'JoeMVTlDrML8DrMD,DrOb<SVDr&T C(0 DrObSVDr& 3G#]#Home~LT~Notizen+ 3G#] xV4B1This slide shows how UML lays out the process address space. The process executable and shared libraries are located in the same place as on the host.Home~LT~Notizen<( (@' The process stack is located G lower in order to make room for UML itself. The UML binary is located just above the process stack. The remaining address space above that are used for UML's "physical" memory and kernel virtual memory.Home~LT~Notizen<( (@' +'DrXX% address spacegg VHome~LT~GliederungDrPg(JoeM`mRDrML8DrMD,DrObSVDr& oe! Home~LT~Titel oeexV4B1PVirtual memory emulation Home~LT~Titel<( (@'DrObuSVDr&, Standard,DrObuSVDr&'>, Standard'>,DrObuSVDr&tEVT, StandardtEVT,DrObuSVDr&'6>tE Standard'6>tEDrObuSVDr&+* 9,B  Standard+* 9,BDrObuSVDr&!/ 91B  Standard!/ 91BDrObuSVDr&4 96B  Standard4 96BDrObuSVDr& 9 9;B  Standard 9 9;BDrObuSVDr&]? +*  Standard]? +*DrObuSVDr&? I+*  Standard? I+*DrObuSVDr&G? jJ+*  StandardG? jJ+*DrObuSVDr&`O? Q+*  Standard`O? Q+*DrObSVDr&w0D*;58  Standard262,DrCn$DrCn$;(#xiIDrOb$SVDr&J)I,9  Standard*h+ 9h+11+*DrCn$DrCn$ ;(#xiZDrOb$SVDr&*J)569  Standard*T5 9T54 4 +*DrCn$DrCn$ ;{(#xiZDrOb$SVDr&}/J) J9  Standard*^0 9^01,I1,I+*DrCn$DrCn$ ;(#xiZDrOb$SVDr&i9J)~Q9  Standard*J: 9J:4P4P+*DrCn$DrCn$ ;{(#xiZDrObSVDr&'  Standard'DrObSVDr&,',  Standard,',DrObSVDr&>tE  Standard>tEDrObSVDr&>,tE,  Standard>,tE,DrObSVDr&q  StandardqDrObSVDr&q,,  Standard,q,DrObSVDr&VT[  StandardVT[DrObSVDr&VT,[,  StandardVT,[,DrObSVDr&g S8 Standard}g S8^xV4B1I process VMStandard<( (@'+''DrObSVDr&"S@8 Standard"S@8exV4B1P"physical" memoryStandard<( (@'+''DrObSVDr&tESU8 StandardvtESU8WxV4B1B kernel VMStandard<( (@''DrObSVDr&'xH>]L Standard'xH>]LbxV4B1Mtemporary fileStandard<( (@'+''DrXXvmgg FHome~LT~GliederungDrPgRJoeMVTlDrML8DrMD,DrOb<SVDr&T C(0 DrObSVDr& 3G#]#Home~LT~NotizenV 3G#]7xV4B1 This picture shows how UML implements virtual memory. UML physical memory is a large file on the host which is mmapped in one piece into the "physical memory" area of UML's address space.Home~LT~Notizen<( (@' +'When virtual mappings are made and the generic kernel maps physical pages into virtual address spaces, UML maps the corresponding pages of that file into the appropriate location into either a process address space or the kernel VM area.Home~LT~Notizen<( (@' +'DrXXvmgg VHome~LT~GliederungDrPgoJoeM`mRDrML8DrMD,DrObSVDr& oe! Home~LT~Titel oejxV4B1UUML architecture dependencies Home~LT~Titel<( (@' DrObSVDr&,Se?  Standard},Se? ^xV4B1IUML arch layerStandard<( (@'DrObSVDr&,IG?  Standardy,IG? ZxV4B1E i386 port Standard<( (@' DrObSVDr&q"e+*  Standardzq"e+*[xV4B1F Host kernelStandard<( (@' DrObSVDr& 1oeqJ(Home~LT~Gliederung 1T 1oeqJ5xV4B1/ptrace -register names, offsets, pt_regs structHome~LT~Gliederung 1<( (@'/sigcontext - registers, fault info, signal maskHome~LT~Gliederung 1<( (@'signal frame formatHome~LT~Gliederung 1<( (@'DrXXarchgg VHome~LT~GliederungDrPgNJoeMVTlDrML8DrMD,DrOb<SVDr&T C(0DrObSVDr& 3Gs#Home~LT~NotizenR 3Gs3xV4B1This shows how UML's architecture dependencies are handled. There's a small piece of code which needs to be reimplemented for each new architecture that UML is ported to.Home~LT~Notizen<( (@' +'XIt deals primarily with ptrace, which uses different register names, pt_regs struct, and register offsets on different architectures. Also, there are differences in the sigcontext structures, where UML stores process state while in the kernel, and which contains other pieces of information such as page fault date and the process signal mask.Home~LT~Notizen<( (@' +'iAny architecture port also needs to provide some information about the format of the host's signal frame.Home~LT~Notizen<( (@' +'DrXXarchgg RHome~LT~GliederungDrPg<JoeM`mRDrML8DrMD,DrObSVDr& oe! Home~LT~Titel| oe]xV4B1HImmediate future Home~LT~Titel<( (@' DrObSVDr& oe|J(Home~LT~Gliederung 1 oe|JxV4B1` StabilizationHome~LT~Gliederung 1<( (@'&bug fixing : ~80 items on my todo listHome~LT~Gliederung 2<( (@'%no reports of serious bugs in a whileHome~LT~Gliederung 2<( (@'%small functional additions - i.e. SMPHome~LT~Gliederung 1<( (@'$grovel over the source doing cleanupHome~LT~Gliederung 1<( (@'make the test suite decentHome~LT~Gliederung 1<( (@'"Declare UML has reached version 1!Home~LT~Gliederung 1<( (@'DrXX" short termgg VHome~LT~GliederungDrPgpJoeMVTlDrML8DrMD,DrOb<SVDr&T C(0DrOb=SVDr& 3G#]#Home~LT~Notizen 3G#]xV4B1rThis is the short-term list of things to do. These are what need to happen before UML reaches version 1. The bugs contained in my todo lists must be fixed. There may be some small functions added, the most likely of which is SMP support. I also want to stare at the code, cleaning it up and spotting more bugs as I go, and make the test suite somewhat comprehensive.Home~LT~Notizen<( (@' DrXX" short termgg VHome~LT~GliederungDrPggJoeM`mRDrML8DrMD,DrObSVDr& oe! Home~LT~Titelz oe[xV4B1FEmbedded Linux Home~LT~Titel<( (@' DrOb}SVDr&6oe|J(Home~LT~Gliederung 16oe|JxV4B1 Linux is ...Home~LT~Gliederung 1<( (@'freeHome~LT~Gliederung 2<( (@' adaptableHome~LT~Gliederung 2<( (@' efficientHome~LT~Gliederung 2<( (@'popularHome~LT~Gliederung 2<( (@'Devices are powerfulHome~LT~Gliederung 1<( (@'Developer time is expensiveHome~LT~Gliederung 1<( (@'DrObSVDr& S,+Standardv S,+WxV4B1BEmbedded deviceStandard<( (@'DrObSVDr&g +*( Standardsg +*(TxV4B1? Home-brew OSStandard<( (@'DrObSVDr& 8,LStandardv 8,LWxV4B1BEmbedded deviceStandard<( (@'DrObSVDr&g B+*LJ Standardlg B+*LJMxV4B18LinuxStandard<( (@'DrObSVDr&)r9  Standard W XI+I8DrXX&embedded Linuxgg RHome~LT~GliederungDrPgkJoeMVTlDrML8DrMD,DrOb<SVDr&T C(0DrObSVDr& 3G-d#Home~LT~Notizeno 3G-dPxV4B19This is the start of the embedded UML section. I start with a digression about why UML is taking over the embedded development market, especially among developers who have their own home-brew embedded OSes.Home~LT~Notizen<( (@' Linux has all the nice attributes listed on the slides, devices are now commonly powerful enough to run a general-purpose OS, and developer time is expensive, so time saved by not having to maintain a private OS is time removed from the development cycle.Home~LT~Notizen<( (@' DrXX&embedded Linuxgg RHome~LT~GliederungDrPg& JoeM`mRDrML8DrMD,DrObSVDr& oe! Home~LT~Titel oefxV4B1QEmbedded UML - an analogy Home~LT~Titel<( (@' DrObSVDr&1,Standardv1,WxV4B1BEmbedded deviceStandard<( (@'DrObSVDr&]"!/+* Standards]"!/+*TxV4B1? Home-brew OSStandard<( (@'DrObSVDr& 91LStandardv 91LWxV4B1BEmbedded deviceStandard<( (@'DrObSVDr&]B!/jJ Standardl]B!/jJMxV4B18LinuxStandard<( (@'DrObSVDr&O+!d:  Standard? ,? 9DrObSVDr&~@8c,Standardm~@8c,NxV4B19ApacheStandard<( (@'DrObSVDr&B"`+* StandardoB"`+*PxV4B1;mod_perlStandard<( (@'DrObSVDr&~@ 98cLStandardm~@ 98cLNxV4B19ApacheStandard<( (@'DrObSVDr&BB`jJ StandardsBB`jJTxV4B1? Embedded UMLStandard<( (@'DrObSVDr&PO+2Sd:  Standard1Q,Q 9DrXX$ embedded UMLgg NHome~LT~GliederungDrPgdJoeMVTlDrML8DrMD,DrOb<SVDr&T C(0DrOb3SVDr& 3Gg#Home~LT~Notizen 3GgxV4B1Here I make an analogy to the picture in the previous slide. I equate Apache to an embedded device, Apache's mod_perl interface to an embedded home-brew OS, and UML to Linux.Home~LT~Notizen<( (@' Looking at Apache as sort of a virtual device, and mod_perl as sort of a virtual embedded OS leads to looking at UML as the virtual equivalent of embedded Linux.Home~LT~Notizen<( (@' I propose that just as Linux is taking over the embedded systems market for the reasons listed on the previous slide, so will UML be used in virtual devices for the same reasons.Home~LT~Notizen<( (@' DrXX$ embedded UMLgg RHome~LT~GliederungDrPgJoeM`mRDrML8DrMD,DrObSVDr& oe! Home~LT~Titel oenxV4B1Y!Apache & UML : replacing mod_perl Home~LT~Titel<( (@' DrObSVDr& oe|J(Home~LT~Gliederung 1U oe|J6xV4B1mount none /apache -t apachefsHome~LT~Gliederung 1<( (@'/apache/requestHome~LT~Gliederung 2<( (@'loopHome~LT~Gliederung 1<( (@'!read request from /apache/requestHome~LT~Gliederung 2<( (@'parse itHome~LT~Gliederung 2<( (@' call handlerHome~LT~Gliederung 2<( (@',write resulting page back to /apache/requestHome~LT~Gliederung 2<( (@'DrXXApachegg RHome~LT~GliederungDrPgNJoeMVTlDrML8DrMD,DrOb<SVDr&T C(0DrObSVDr& 3Gg#Home~LT~NotizenR 3Gg3xV4B1EHere's how an embedded UML could replace the Apache API and mod_perl.Home~LT~Notizen<( (@' There would be a special filesystem, apachefs, which would be mounted inside UML and would provide access to Apache internal information in the same way that procfs provides access to kernel internal information.Home~LT~Notizen<( (@' This filesystem would contain /request, which when read, would produce the next pending HTTP request. A handler running inside UML would read that request, parse it, generate the response page, and write it back to /request, at which point Apache would send it back to the browser.Home~LT~Notizen<( (@' mod_perl would be implemented by having the reading and parsing of the request and the writing of the response done in a wrapper. This wrapper would construct the Apache Request object expected by a PerlHandler and would call that handler in the same way that it is called today.Home~LT~Notizen<( (@' DrXXApachegg RHome~LT~GliederungDrPg7JoeM`mRDrML8DrMD,DrObSVDr& oe! Home~LT~Titel oejxV4B1UApache & UML : extra benefits Home~LT~Titel<( (@' DrObSVDr& oeL(Home~LT~Gliederung 1 oeLo xV4B1J interactive debuggingHome~LT~Gliederung 1<( (@'4ssh into Apache and interactively debug your perl...Home~LT~Gliederung 2<( (@' ... or C or python or tcl or ...Home~LT~Gliederung 2<( (@'"interactively modify configurationHome~LT~Gliederung 1<( (@'1/apache/VirtualHosts/{ServerAdmin,ServerName,...}Home~LT~Gliederung 2<( (@'/apache/{Min,Max}SpareServersHome~LT~Gliederung 2<( (@'!See pending requests as processesHome~LT~Gliederung 1<( (@'Mapache 1120 0.0 0.6 4388 1536 ? S 13:46 0:00 GET / HTTP/1.0Home~LT~Gliederung 2<( (@' M kill -9 1120Home~LT~Gliederung 2<( (@'DrXX% Apache extrasgg RHome~LT~GliederungDrPgsJoeMVTlDrML8DrMD,DrOb<SVDr&T C(0DrObASVDr& 3G#Home~LT~Notizen 3GxV4B1GThis slide describes the extra benefits of embedding UML inside Apache.Home~LT~Notizen<( (@' You get to ssh into the UML and interactively debug the code, which now doesn't need specific Apache language bindings since it is a normal Linux binary or being interpretted by a standard Linux interpreter.Home~LT~Notizen<( (@' With some extra information exported by apachefs, it is possible to change the Apache configuration on the fly. By reading and writing files in apachefs, it will be possible to change settings in exactly the same way as with procfs and kernel settings.Home~LT~Notizen<( (@' It will also be possible to represent HTTP requests as UML processes, so they can be managed as processes, including killing requests for reasons such as they are wedged or consuming too many resources.Home~LT~Notizen<( (@' DrXX% Apache extrasgg RHome~LT~GliederungDrPg9JoeM`mRDrML8DrMD,DrObSVDr& oe! Home~LT~Titel oebxV4B1MOther virtual devices Home~LT~Titel<( (@' DrObSVDr& oe|J(Home~LT~Gliederung 1 oe|JyxV4B1V1Anything with an internal development environmentHome~LT~Gliederung 1<( (@'#Databases : mySQL, maybe PostgreSQLHome~LT~Gliederung 2<( (@'Web browsers : mozillaHome~LT~Gliederung 2<( (@'GimpHome~LT~Gliederung 2<( (@'more far-fetched?Home~LT~Gliederung 2<( (@'shellsHome~LT~Gliederung 3 <( (@'editorsHome~LT~Gliederung 3 <( (@'User environmentsHome~LT~Gliederung 1<( (@'DrXX'virtual devicesgg VHome~LT~GliederungDrPgQJoeMVTlDrML8DrMD,DrOb<SVDr&T C(0DrObSVDr& 3GK#Home~LT~Notizen 3GKxV4B1Besides Apache, what might make a good virtual device to embed UML into? There are a number of services and applications which have internal development environments. These environments can also be viewed as the equivalents of home-brew OSes, so replacing them with UML might make sense. mySQL uses perl as an extension language, mozilla has both Javascript and Java support, and Gimp has bindings for a number of languages.Home~LT~Notizen<( (@' Also, shells and editors (i.e. emacs) also obviously have internal development environments, but embedded UML is somewhat less plausible here because it would be proportionally larger than in the other examples.Home~LT~Notizen<( (@' nUser environments, such as GNOME and KDE would also be interesting. They could export their UIs, allowing them to be modified on the fly by the user or by scripts. If one UML could be shared by the entire environment, this would allow UML to pass information between them in a standard way using standard tools and would be another way of integrating them cleanly.Home~LT~Notizen<( (@' DrXX'virtual devicesgg RHome~LT~GliederungDrPg*JoeM`mRDrML8DrMD,DrObSVDr& oe! Home~LT~Titel} oe^xV4B1IDatabases and UML Home~LT~Titel<( (@' DrOb\SVDr& oe|J(Home~LT~Gliederung 1 oe|JxV4B1/As with Apache, ssh in and modify configurationHome~LT~Gliederung 1<( (@'.not a killer app since you can do that alreadyHome~LT~Gliederung 2<( (@'0Declare tables as being produced by an extensionHome~LT~Gliederung 1<( (@'"Similar to declaring a PerlHandlerHome~LT~Gliederung 2<( (@'3extension running inside UML would produce the dataHome~LT~Gliederung 2<( (@'Qit could get the data from outside databases, web sites, or any other data sourceHome~LT~Gliederung 2<( (@'WWDBHome~LT~Gliederung 2<( (@'DrXX! databasesgg VHome~LT~GliederungDrPg"JoeMVTlDrML8DrMD,DrOb<SVDr&T C(0DrObSVDr& 3Gs#Home~LT~Notizen& 3GsxV4B1Embedding UML inside a database seems particularly interesting. It seems possible to have tables handled by something running inside UML just as it would be possible to generate Web pages on the fly inside Apache.Home~LT~Notizen<( (@' Having Linux, with networking and full access to the outside world, generating tables, would allow a database to be constructed from arbitrary outside sources of data. These could be web sites, files on the host, or other databases. This last possiblility would allow databases to be linked together in the same way that pages are linked together on the Web, suggesting that this could be used to construct a World Wide DataBase.Home~LT~Notizen<( (@' DrXX! databasesgg RHome~LT~GliederungDrPg)JoeM`mRDrML8DrMD,DrObSVDr& oe! Home~LT~Titel} oe^xV4B1IA possible future Home~LT~Titel<( (@' DrOb^SVDr& oeM(Home~LT~Gliederung 1 oeMxV4B1UML/Apache becomes widely usedHome~LT~Gliederung 1<( (@'0UML becomes a must-have for all Apache platformsHome~LT~Gliederung 2<( (@'(ditto if UML is embedded in other thingsHome~LT~Gliederung 2<( (@'Vendors port UML if necessaryHome~LT~Gliederung 1<( (@',UML runs on all major architectures and OSesHome~LT~Gliederung 1<( (@'=Linux becomes a universal development / execution environmentHome~LT~Gliederung 1<( (@'=Linux becomes the default development / execution environmentHome~LT~Gliederung 1<( (@'DrXXfuturegg VHome~LT~GliederungDrPggJoeMVTlDrML8DrMD,DrOb<SVDr&T C(0DrObSVDr& 3Gz#Home~LT~Notizenk 3GzLxV4B13Here I describe what could happen if embedded UML takes off. UML inside Apache would become a required feature for all platforms which run Apache. This would be even more true if UML is embedded in other things.Home~LT~Notizen<( (@' So, the vendors who control those platforms would themselves port UML if necessary, resulting in UML running on all major platforms (including both architectures and OSes).Home~LT~Notizen<( (@' This would make Linux a universal development and execution environment, and would possible make Linux the default development and execution environment for anyone doing cross-platform development. They could write for Linux and run their applications inside UML on other OSes.Home~LT~Notizen<( (@' DrXXfuturegg RHome~LT~GliederungDrXXFGeneric PrinterSGENPRT PostScriptH`Tld,,lprdefault_queueSGENPRT DrVwP SVDr SVDr:SVDr{{SVDrALayout:SVDr{{SVDr#SVDr SVDr# SVDr0 SVDr1 SVDr3 SVDr4SVDr@SVDr SVDrD SVDrP SVDrQ DrHL DrHL DrHL  z Root Entry!r\V)䰱CompObjEOle persist elements" SfxDocumentInfo uStarBASIC BasicManager24SfxWindowsSfxStyleSheetsStandardjSummaryInformation( (StarDrawDocument3$TE