Subversion Repositories HelenOS-doc

Compare Revisions

Ignore whitespace Rev 45 → Rev 46

/design/trunk/src/ch_intro.xml
7,4 → 7,5
<para>This book describes the design and principles of the HelenOS operating
system from the perspective of its microkernel as well as from the
perspective of its userspace drivers and server tasks.</para>
</chapter>
</chapter>
 
/design/trunk/src/images.vector/slab_alloc.svg
14,9 → 14,9
sodipodi:version="0.32"
inkscape:version="0.43"
version="1.0"
sodipodi:docbase="/home/segabond/HelenOS/HelenOS-doc/design/src/images.vector"
sodipodi:docbase="/home/segabond/HelenOS-doc/design/src/images.vector"
sodipodi:docname="slab_alloc.svg"
inkscape:export-filename="/home/segabond/HelenOS/HelenOS-doc/design/src/images/slab_alloc.png"
inkscape:export-filename="/home/segabond/HelenOS-doc/design/src/images/slab_alloc.png"
inkscape:export-xdpi="157.50999"
inkscape:export-ydpi="157.50999">
<defs
144,15 → 144,15
y="39.117188">Slab Layer</tspan></text>
<text
xml:space="preserve"
style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="-155.17773"
y="49.503906"
style="font-size:9.52507591px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="-173.81024"
y="48.236824"
id="text3346"
transform="matrix(-1.867538e-17,-1,1,-1.867538e-17,0,0)"><tspan
sodipodi:role="line"
id="tspan3348"
x="-155.17773"
y="49.503906">Depot</tspan></text>
x="-173.81024"
y="48.236824"
id="tspan3400">Common layer</tspan></text>
<text
xml:space="preserve"
style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
1239,16 → 1239,6
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.26610187;stroke-linecap:square;stroke-linejoin:miter;marker-start:none;marker-end:url(#Arrow2Lend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
</g>
</g>
<text
xml:space="preserve"
style="font-size:84.79801178px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="160.91342"
y="254.93602"
id="text3668"><tspan
sodipodi:role="line"
id="tspan3670"
x="160.91342"
y="254.93602">?</tspan></text>
<g
id="g3687">
<path
/design/trunk/src/images.vector/arch1.svg
13,9 → 13,12
id="svg1595"
sodipodi:version="0.32"
inkscape:version="0.43"
sodipodi:docbase="/home/segabond/HelenOS/HelenOS-doc/design/src/images.vector"
sodipodi:docbase="/home/segabond/HelenOS-doc/design/src/images.vector"
sodipodi:docname="arch1.svg"
version="1.0">
version="1.0"
inkscape:export-filename="/home/segabond/HelenOS-doc/design/src/images.vector/arch1.svg"
inkscape:export-xdpi="157.50999"
inkscape:export-ydpi="157.50999">
<defs
id="defs1597">
<marker
65,9 → 68,9
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.8915346"
inkscape:cx="470.75345"
inkscape:cy="182.83082"
inkscape:zoom="2.5216406"
inkscape:cx="176.10282"
inkscape:cy="387.50751"
inkscape:document-units="px"
inkscape:current-layer="layer1"
inkscape:window-width="1272"
91,407 → 94,360
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1">
<rect
style="fill:#a3a3a3;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4"
id="rect1603"
width="181.52199"
height="156.6738"
x="3.1933899"
y="2.8420405"
rx="0"
ry="0" />
<rect
style="fill:#bc4343;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4"
id="rect2537"
width="180.45457"
height="10.99233"
x="2.9772201"
y="174.00768" />
<text
xml:space="preserve"
style="font-size:7.13015985px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="77.445747"
y="182.32619"
id="text2541"><tspan
sodipodi:role="line"
id="tspan2543"
x="77.445747"
y="182.32619">HARDWARE</tspan></text>
<g
id="g1917"
transform="matrix(0.59418,0,0,0.59418,-51.47117,-19.60545)">
id="g3088"
transform="matrix(0.59418,0,0,0.59418,-78.20927,-19.60544)">
<rect
style="fill:#1e1d70;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4"
id="rect2482"
width="134"
height="76.5"
x="157"
y="131.86218"
ry="0" />
<text
xml:space="preserve"
style="font-size:12.34694099px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#efff00;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="158.81418"
y="144.00447"
id="text2484"
sodipodi:linespacing="100%"><tspan
x="158.81418"
y="144.00447"
sodipodi:role="line"
id="tspan2906">Scheduler</tspan></text>
<text
xml:space="preserve"
style="font-size:10.84064579px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="162.53453"
y="160.50172"
id="text2488"
sodipodi:linespacing="100%"><tspan
x="162.53453"
y="160.50172"
sodipodi:role="line"
id="tspan3018">* threads</tspan><tspan
x="162.53453"
y="171.34237"
sodipodi:role="line"
id="tspan3020">* per CPU run-queues</tspan><tspan
x="162.53453"
y="182.18302"
sodipodi:role="line"
id="tspan3022">* load balancing</tspan><tspan
x="162.53453"
y="193.02366"
sodipodi:role="line"
id="tspan3024" /></text>
</g>
<g
id="g3079"
transform="matrix(0.59418,0,0,0.59418,5.820438,-120.4411)">
<rect
style="fill:#1e1d70;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4"
id="rect2507"
width="134"
height="76.5"
x="156.5"
y="214.11218"
ry="0" />
<text
xml:space="preserve"
style="font-size:11.84057426px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#efff00;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="157.9801"
y="226.9698"
id="text2509"
sodipodi:linespacing="100%"><tspan
x="157.9801"
y="226.9698"
sodipodi:role="line"
id="tspan2902">Memory Management</tspan></text>
<text
xml:space="preserve"
style="font-size:10.84064579px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="163.03453"
y="245.75172"
id="text2513"
sodipodi:linespacing="100%"><tspan
x="163.03453"
y="245.75172"
sodipodi:role="line"
id="tspan3063">* physical memory</tspan><tspan
x="163.03453"
y="256.59237"
sodipodi:role="line"
id="tspan3065">* virtual memory</tspan><tspan
x="163.03453"
y="267.43302"
sodipodi:role="line"
id="tspan3067">* address spaces</tspan></text>
</g>
<rect
ry="0"
y="57.360931"
x="98.385246"
height="46.639069"
width="79.620117"
id="rect2523"
style="fill:#1e1d70;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4" />
<text
sodipodi:linespacing="100%"
id="text2525"
y="64.270462"
x="99.366096"
style="font-size:7.13015985px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#efff00;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
id="tspan2893"
sodipodi:role="line"
y="64.270462"
x="99.366096">Syscalls</tspan></text>
<text
sodipodi:linespacing="100%"
id="text2529"
y="73.773438"
x="101.13197"
style="font-size:6.39411926px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
id="tspan2962"
sodipodi:role="line"
y="73.773438"
x="101.13197">* thread/task control</tspan><tspan
id="tspan2964"
sodipodi:role="line"
y="80.167557"
x="101.13197">* address space control</tspan><tspan
id="tspan2966"
sodipodi:role="line"
y="86.561676"
x="101.13197">* IPC</tspan><tspan
id="tspan2968"
sodipodi:role="line"
y="92.955795"
x="101.13197">* DDI</tspan></text>
<g
id="g3069"
transform="matrix(0.59418,0,0,0.59418,-160.9785,-17.5047)">
<rect
style="fill:#1e1d70;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4"
id="rect2558"
width="134"
height="76.5"
x="296.5"
y="214.11218"
ry="0" />
<text
xml:space="preserve"
style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#efff00;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="296.94366"
y="226.69797"
id="text2560"
sodipodi:linespacing="100%"><tspan
x="296.94366"
y="226.69797"
sodipodi:role="line"
id="tspan3008">Kernel Device Drivers</tspan></text>
<text
xml:space="preserve"
style="font-size:11.57782459px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="302.03455"
y="243.31181"
id="text2564"
sodipodi:linespacing="100%"><tspan
x="302.03455"
y="243.31181"
sodipodi:role="line"
id="tspan3010">* system clock</tspan><tspan
x="302.03455"
y="254.88964"
sodipodi:role="line"
id="tspan3012">* interrupt controllers</tspan><tspan
x="302.03455"
y="266.46746"
sodipodi:role="line"
id="tspan3014">* basic console</tspan><tspan
x="302.03455"
y="278.04529"
sodipodi:role="line"
id="tspan3016">* SMP config</tspan></text>
</g>
<g
transform="matrix(0.196441,0,0,0.171582,-43.72162,129.5512)"
id="g2654"
style="fill:#000000;fill-opacity:1">
<path
sodipodi:type="star"
style="fill:#000000;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4"
id="path2656"
sodipodi:sides="3"
sodipodi:cx="461.5"
sodipodi:cy="193.86218"
sodipodi:r1="34.5"
sodipodi:r2="17.25"
sodipodi:arg1="1.5707963"
sodipodi:arg2="2.6179939"
inkscape:flatsided="true"
inkscape:rounded="0"
inkscape:randomized="0"
d="M 461.5,228.36218 L 431.62212,176.61218 L 491.37788,176.61218 L 461.5,228.36218 z "
transform="translate(15.5,30)" />
<rect
style="fill:#000000;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4"
id="rect2658"
width="22"
height="66.5"
x="466"
y="154.36218" />
</g>
<g
transform="matrix(-0.196441,-6.235028e-18,5.446014e-18,-0.171582,157.2639,200.2347)"
id="g2660"
style="fill:#000000;fill-opacity:1">
<path
sodipodi:type="star"
style="fill:#000000;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4"
id="path2662"
sodipodi:sides="3"
sodipodi:cx="461.5"
sodipodi:cy="193.86218"
sodipodi:r1="34.5"
sodipodi:r2="17.25"
sodipodi:arg1="1.5707963"
sodipodi:arg2="2.6179939"
inkscape:flatsided="true"
inkscape:rounded="0"
inkscape:randomized="0"
d="M 461.5,228.36218 L 431.62212,176.61218 L 491.37788,176.61218 L 461.5,228.36218 z "
transform="translate(15.5,30)" />
<rect
style="fill:#000000;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4"
id="rect2664"
width="22"
height="66.5"
x="466"
y="154.36218" />
</g>
<g
id="g3098"
transform="matrix(0.59418,0,0,0.59418,-78.20927,79.9698)">
<rect
style="fill:#1e1d70;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4"
id="rect2868"
width="134"
height="76.5"
x="297.16"
y="49.618584"
ry="0" />
<text
xml:space="preserve"
style="font-size:11.48550129px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#efff00;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="300.0892"
y="62.236725"
id="text2870"
sodipodi:linespacing="100%"><tspan
x="300.0892"
y="62.236725"
sodipodi:role="line"
id="tspan2889">IPC</tspan><tspan
x="300.0892"
y="73.722226"
sodipodi:role="line"
id="tspan2891" /></text>
<text
xml:space="preserve"
style="font-size:10.84064579px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="302.98743"
y="76.30838"
id="text2874"
sodipodi:linespacing="100%"><tspan
x="302.98743"
y="76.30838"
sodipodi:role="line"
id="tspan3026">* answerboxes</tspan><tspan
x="302.98743"
y="87.149026"
sodipodi:role="line"
id="tspan3028">* phones</tspan><tspan
x="302.98743"
y="97.989672"
sodipodi:role="line"
id="tspan3030">* (a)synchronous</tspan><tspan
x="302.98743"
y="108.83032"
sodipodi:role="line"
id="tspan3032">* short messages</tspan></text>
</g>
<text
id="text2478"
y="38.816235"
x="18.963459"
style="font-size:22.61572647px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="38.816235"
x="18.963459"
id="tspan2480"
sodipodi:role="line">kernel</tspan></text>
<path
sodipodi:type="arc"
style="fill:#e03c3c;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
id="path2671"
sodipodi:cx="578"
sodipodi:cy="277.36218"
sodipodi:rx="55"
sodipodi:ry="27.5"
d="M 633 277.36218 A 55 27.5 0 1 1 523,277.36218 A 55 27.5 0 1 1 633 277.36218 z"
transform="matrix(0.59418,0,0,0.59418,-82.75614,2.856988)" />
<text
xml:space="preserve"
style="font-size:7.13015985px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="235.20979"
y="170.17461"
id="text2675"><tspan
sodipodi:role="line"
id="tspan2677"
x="235.20979"
y="170.17461">Device Driver</tspan><tspan
sodipodi:role="line"
x="235.20979"
y="179.08731"
id="tspan2679" /></text>
<g
id="g2729"
transform="matrix(0.393035,6.476087e-2,-8.093963e-2,0.314472,40.5443,48.32792)"
style="fill:#bc4343;fill-opacity:1">
<g
transform="translate(14.5,-31.5)"
id="g1919">
<g
transform="translate(-59.5,31.50001)"
id="g3159">
<rect
ry="0"
rx="0"
y="37.778923"
x="137"
height="325.08325"
width="305.5"
id="rect1603"
style="fill:#a3a3a3;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4" />
<g
id="g2666">
<rect
style="fill:#bc4343;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4"
id="rect2537"
width="271"
height="18.5"
x="156"
y="323.36218" />
<text
xml:space="preserve"
style="font-size:12px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="264.5"
y="337.36218"
id="text2541"><tspan
sodipodi:role="line"
id="tspan2543"
x="264.5"
y="337.36218">HARDWARE</tspan></text>
</g>
<g
id="g3088">
<rect
ry="0"
y="131.86218"
x="157"
height="76.5"
width="134"
id="rect2482"
style="fill:#1e1d70;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4" />
<text
sodipodi:linespacing="100%"
id="text2484"
y="144.00447"
x="158.81418"
style="font-size:12.34694099px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#efff00;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
id="tspan2906"
sodipodi:role="line"
y="144.00447"
x="158.81418">Scheduler</tspan></text>
<text
sodipodi:linespacing="100%"
id="text2488"
y="160.50172"
x="162.53453"
style="font-size:10.84064579px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
id="tspan3018"
sodipodi:role="line"
y="160.50172"
x="162.53453">* threads</tspan><tspan
id="tspan3020"
sodipodi:role="line"
y="171.34237"
x="162.53453">* per CPU run-queues</tspan><tspan
id="tspan3022"
sodipodi:role="line"
y="182.18302"
x="162.53453">* load balancing</tspan><tspan
id="tspan3024"
sodipodi:role="line"
y="193.02366"
x="162.53453" /></text>
</g>
<g
transform="translate(141.4213,-169.7056)"
id="g3079">
<rect
ry="0"
y="214.11218"
x="156.5"
height="76.5"
width="134"
id="rect2507"
style="fill:#1e1d70;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4" />
<text
sodipodi:linespacing="100%"
id="text2509"
y="226.9698"
x="157.9801"
style="font-size:11.84057426px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#efff00;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
id="tspan2902"
sodipodi:role="line"
y="226.9698"
x="157.9801">Memory Management</tspan></text>
<text
sodipodi:linespacing="100%"
id="text2513"
y="245.75172"
x="163.03453"
style="font-size:10.84064579px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
id="tspan3063"
sodipodi:role="line"
y="245.75172"
x="163.03453">* physical memory</tspan><tspan
id="tspan3065"
sodipodi:role="line"
y="256.59237"
x="163.03453">* virtual memory</tspan><tspan
id="tspan3067"
sodipodi:role="line"
y="267.43302"
x="163.03453">* address spaces</tspan></text>
</g>
<g
transform="translate(0.707107,-2.828427)"
id="g3109">
<rect
ry="0"
y="132.36218"
x="296.5"
height="88"
width="134"
id="rect2523"
style="fill:#1e1d70;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4" />
<text
sodipodi:linespacing="100%"
id="text2525"
y="143.99086"
x="298.15076"
style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#efff00;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
id="tspan2893"
sodipodi:role="line"
y="143.99086"
x="298.15076">Syscalls</tspan></text>
<text
sodipodi:linespacing="100%"
id="text2529"
y="159.9843"
x="301.12271"
style="font-size:10.76124954px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
id="tspan2962"
sodipodi:role="line"
y="159.9843"
x="301.12271">* thread/task control</tspan><tspan
id="tspan2964"
sodipodi:role="line"
y="170.74555"
x="301.12271">* address space control</tspan><tspan
id="tspan2966"
sodipodi:role="line"
y="181.5068"
x="301.12271">* IPC</tspan><tspan
id="tspan2968"
sodipodi:role="line"
y="192.26805"
x="301.12271">* DDI</tspan></text>
</g>
<g
transform="translate(-139.3,3.535533)"
id="g3069">
<rect
ry="0"
y="214.11218"
x="296.5"
height="76.5"
width="134"
id="rect2558"
style="fill:#1e1d70;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4" />
<text
sodipodi:linespacing="100%"
id="text2560"
y="226.69797"
x="296.94366"
style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#efff00;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
id="tspan3008"
sodipodi:role="line"
y="226.69797"
x="296.94366">Kernel Device Drivers</tspan></text>
<text
sodipodi:linespacing="100%"
id="text2564"
y="243.31181"
x="302.03455"
style="font-size:11.57782459px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
id="tspan3010"
sodipodi:role="line"
y="243.31181"
x="302.03455">* system clock</tspan><tspan
id="tspan3012"
sodipodi:role="line"
y="254.88964"
x="302.03455">* interrupt controllers</tspan><tspan
id="tspan3014"
sodipodi:role="line"
y="266.46746"
x="302.03455">* basic console</tspan><tspan
id="tspan3016"
sodipodi:role="line"
y="278.04529"
x="302.03455">* SMP config</tspan></text>
</g>
<g
transform="translate(-129.4005,3.535534)"
id="g2787">
<g
transform="matrix(0.330608,0,0,0.288771,187.443,247.4939)"
id="g2654">
<path
sodipodi:type="star"
style="fill:#ffffff;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4"
id="path2656"
sodipodi:sides="3"
sodipodi:cx="461.5"
sodipodi:cy="193.86218"
sodipodi:r1="34.5"
sodipodi:r2="17.25"
sodipodi:arg1="1.5707963"
sodipodi:arg2="2.6179939"
inkscape:flatsided="true"
inkscape:rounded="0"
inkscape:randomized="0"
d="M 461.5,228.36218 L 431.62212,176.61218 L 491.37788,176.61218 L 461.5,228.36218 z "
transform="translate(15.5,30)" />
<rect
style="fill:#ffffff;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4"
id="rect2658"
width="22"
height="66.5"
x="466"
y="154.36218" />
</g>
<g
transform="matrix(-0.330608,-1.04935e-17,9.165597e-18,-0.288771,525.7,366.4536)"
id="g2660">
<path
sodipodi:type="star"
style="fill:#ffffff;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4"
id="path2662"
sodipodi:sides="3"
sodipodi:cx="461.5"
sodipodi:cy="193.86218"
sodipodi:r1="34.5"
sodipodi:r2="17.25"
sodipodi:arg1="1.5707963"
sodipodi:arg2="2.6179939"
inkscape:flatsided="true"
inkscape:rounded="0"
inkscape:randomized="0"
d="M 461.5,228.36218 L 431.62212,176.61218 L 491.37788,176.61218 L 461.5,228.36218 z "
transform="translate(15.5,30)" />
<rect
style="fill:#ffffff;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4"
id="rect2664"
width="22"
height="66.5"
x="466"
y="154.36218" />
</g>
</g>
<g
transform="translate(-4.94924e-8,167.5843)"
id="g3098">
<rect
ry="0"
y="49.618584"
x="297.16"
height="76.5"
width="134"
id="rect2868"
style="fill:#1e1d70;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4" />
<text
sodipodi:linespacing="100%"
id="text2870"
y="62.236725"
x="300.0892"
style="font-size:11.48550129px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#efff00;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
id="tspan2889"
sodipodi:role="line"
y="62.236725"
x="300.0892">IPC</tspan><tspan
id="tspan2891"
sodipodi:role="line"
y="73.722226"
x="300.0892" /></text>
<text
sodipodi:linespacing="100%"
id="text2874"
y="76.30838"
x="302.98743"
style="font-size:10.84064579px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
id="tspan3026"
sodipodi:role="line"
y="76.30838"
x="302.98743">* answerboxes</tspan><tspan
id="tspan3028"
sodipodi:role="line"
y="87.149026"
x="302.98743">* phones</tspan><tspan
id="tspan3030"
sodipodi:role="line"
y="97.989672"
x="302.98743">* (a)synchronous</tspan><tspan
id="tspan3032"
sodipodi:role="line"
y="108.83032"
x="302.98743">* short messages</tspan></text>
</g>
</g>
<text
id="text2478"
y="129.82321"
x="104.04089"
style="font-size:38.06208038px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="129.82321"
x="104.04089"
id="tspan2480"
sodipodi:role="line">kernel</tspan></text>
</g>
<g
transform="translate(-53,37)"
id="g2681">
transform="translate(3.889087,2.828427)"
id="g2731"
style="fill:#bc4343;fill-opacity:1">
<path
sodipodi:type="arc"
style="opacity:1;fill:#e03c3c;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
id="path2671"
sodipodi:cx="578"
sodipodi:cy="277.36218"
sodipodi:rx="55"
sodipodi:ry="27.5"
d="M 633 277.36218 A 55 27.5 0 1 1 523,277.36218 A 55 27.5 0 1 1 633 277.36218 z" />
<text
xml:space="preserve"
style="font-size:12px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="538.5"
y="274.86218"
id="text2675"><tspan
sodipodi:role="line"
id="tspan2677"
x="538.5"
y="274.86218">Device Driver</tspan><tspan
sodipodi:role="line"
x="538.5"
y="289.86218"
id="tspan2679">Interface</tspan></text>
</g>
<g
style="fill:#bc4343;fill-opacity:1"
transform="matrix(0.770024,0.108992,-0.158575,0.529254,102.9892,114.3313)"
id="g2729">
<g
style="fill:#bc4343;fill-opacity:1"
id="g2731"
transform="translate(3.889087,2.828427)">
<path
transform="matrix(0.253276,-0.424118,0.424118,0.253276,239.4585,458.5603)"
d="M 461.5,228.36218 L 431.62212,176.61218 L 491.37788,176.61218 L 461.5,228.36218 z "
inkscape:randomized="0"
inkscape:rounded="0"
inkscape:flatsided="true"
sodipodi:arg2="2.6179939"
sodipodi:arg1="1.5707963"
sodipodi:r2="17.25"
sodipodi:r1="34.5"
sodipodi:cy="193.86218"
sodipodi:cx="461.5"
sodipodi:sides="3"
id="path2733"
style="fill:#bc4343;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
sodipodi:type="star" />
<rect
transform="matrix(0.455179,0.8904,-0.863773,0.503882,0,0)"
y="-339.11758"
x="487.99454"
height="88.587173"
width="8.4741507"
id="rect2735"
style="fill:#bc4343;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none" />
</g>
<path
sodipodi:type="star"
style="fill:#bc4343;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
id="path2737"
id="path2733"
sodipodi:sides="3"
sodipodi:cx="461.5"
sodipodi:cy="193.86218"
503,435 → 459,280
inkscape:rounded="0"
inkscape:randomized="0"
d="M 461.5,228.36218 L 431.62212,176.61218 L 491.37788,176.61218 L 461.5,228.36218 z "
transform="matrix(-0.253276,0.424118,-0.424118,-0.253276,716.5558,126.1674)" />
transform="matrix(0.253276,-0.424118,0.424118,0.253276,239.4585,458.5603)" />
<rect
style="fill:#bc4343;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
id="rect2735"
width="8.4741507"
height="88.587173"
x="487.99454"
y="-339.11758"
transform="matrix(0.455179,0.8904,-0.863773,0.503882,0,0)" />
</g>
<g
transform="translate(-15.05025,10.02691)"
id="g2757">
<path
sodipodi:type="arc"
style="fill:#1e1d70;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
id="path2743"
sodipodi:cx="578"
sodipodi:cy="277.36218"
sodipodi:rx="55"
sodipodi:ry="27.5"
d="M 633 277.36218 A 55 27.5 0 1 1 523,277.36218 A 55 27.5 0 1 1 633 277.36218 z"
transform="translate(-54.38743,-156.2596)" />
<text
xml:space="preserve"
style="font-size:12px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="498.11258"
y="126.60257"
id="text2745"><tspan
sodipodi:role="line"
x="498.11258"
y="126.60257"
id="tspan2749">NS Task</tspan></text>
</g>
<g
transform="translate(17,-17.5)"
id="g2789">
<path
sodipodi:type="arc"
style="fill:#a3a3a3;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
id="path2764"
sodipodi:cx="578"
sodipodi:cy="277.36218"
sodipodi:rx="55"
sodipodi:ry="27.5"
d="M 633 277.36218 A 55 27.5 0 1 1 523,277.36218 A 55 27.5 0 1 1 633 277.36218 z"
transform="translate(-55.44809,-207.1713)" />
<text
xml:space="preserve"
style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="493.05191"
<path
transform="matrix(-0.253276,0.424118,-0.424118,-0.253276,716.5558,126.1674)"
d="M 461.5,228.36218 L 431.62212,176.61218 L 491.37788,176.61218 L 461.5,228.36218 z "
inkscape:randomized="0"
inkscape:rounded="0"
inkscape:flatsided="true"
sodipodi:arg2="2.6179939"
sodipodi:arg1="1.5707963"
sodipodi:r2="17.25"
sodipodi:r1="34.5"
sodipodi:cy="193.86218"
sodipodi:cx="461.5"
sodipodi:sides="3"
id="path2737"
style="fill:#bc4343;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
sodipodi:type="star" />
</g>
<g
id="g2794"
transform="matrix(0.59418,0,0,0.59418,46.83021,27.11659)">
<path
transform="translate(-55.44809,-207.1713)"
d="M 633 277.36218 A 55 27.5 0 1 1 523,277.36218 A 55 27.5 0 1 1 633 277.36218 z"
sodipodi:ry="27.5"
sodipodi:rx="55"
sodipodi:cy="277.36218"
sodipodi:cx="578"
id="path2796"
style="fill:#a3a3a3;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
sodipodi:type="arc" />
<text
id="text2798"
y="75.690849"
x="493.05191"
style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
id="tspan2800"
y="75.690849"
id="text2766"><tspan
sodipodi:role="line"
x="493.05191"
y="75.690849"
id="tspan2768">User Task</tspan></text>
</g>
<g
transform="translate(165.4404,78.6328)"
id="g2794">
<path
sodipodi:type="arc"
style="fill:#a3a3a3;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
id="path2796"
sodipodi:cx="578"
sodipodi:cy="277.36218"
sodipodi:rx="55"
sodipodi:ry="27.5"
d="M 633 277.36218 A 55 27.5 0 1 1 523,277.36218 A 55 27.5 0 1 1 633 277.36218 z"
transform="translate(-55.44809,-207.1713)" />
<text
xml:space="preserve"
style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="493.05191"
sodipodi:role="line">User Task</tspan></text>
</g>
<g
id="g2802"
transform="matrix(0.59418,0,0,0.59418,21.49057,-9.482227)">
<path
transform="translate(-55.44809,-207.1713)"
d="M 633 277.36218 A 55 27.5 0 1 1 523,277.36218 A 55 27.5 0 1 1 633 277.36218 z"
sodipodi:ry="27.5"
sodipodi:rx="55"
sodipodi:cy="277.36218"
sodipodi:cx="578"
id="path2804"
style="fill:#a3a3a3;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
sodipodi:type="arc" />
<text
id="text2806"
y="75.690849"
x="493.05191"
style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
id="tspan2808"
y="75.690849"
id="text2798"><tspan
sodipodi:role="line"
x="493.05191"
y="75.690849"
id="tspan2800">User Task</tspan></text>
</g>
<g
transform="translate(122.794,17.0373)"
id="g2802">
<path
sodipodi:type="arc"
style="fill:#a3a3a3;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
id="path2804"
sodipodi:cx="578"
sodipodi:cy="277.36218"
sodipodi:rx="55"
sodipodi:ry="27.5"
d="M 633 277.36218 A 55 27.5 0 1 1 523,277.36218 A 55 27.5 0 1 1 633 277.36218 z"
transform="translate(-55.44809,-207.1713)" />
<text
xml:space="preserve"
style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="493.05191"
y="75.690849"
id="text2806"><tspan
sodipodi:role="line"
x="493.05191"
y="75.690849"
id="tspan2808">User Task</tspan></text>
</g>
sodipodi:role="line">User Task</tspan></text>
</g>
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.59417999px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline"
d="M 259.43351,73.89601 L 269.68312,87.710695"
id="path2854"
inkscape:connector-type="polyline" />
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.59417999px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 310.90709,44.578515 L 282.44201,53.926821"
id="path2858"
inkscape:connector-type="polyline" />
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.59417999px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline"
d="M 283.28231,59.073643 L 325.50726,65.375873"
id="path2862"
inkscape:connector-type="polyline" />
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.59417999px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline"
d="M 318.99495,47.099407 L 289.88524,159.75502"
id="path2864"
inkscape:connector-type="polyline" />
<text
xml:space="preserve"
style="font-size:7.13015985px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="295.35541"
y="75.066055"
id="text2868"><tspan
sodipodi:role="line"
id="tspan2870"
x="295.35541"
y="75.066055">IPC</tspan></text>
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.59417999px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline"
d="M 331.18074,78.352378 L 289.29106,159.45793"
id="path1541"
inkscape:connector-type="polyline" />
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.59417999px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 342.17307,47.752108 L 347.2236,53.099728"
id="path1545"
inkscape:connector-type="polyline" />
<g
id="g2443"
transform="matrix(0.59418,0,0,0.59418,-51.47117,-19.60545)">
<path
inkscape:connector-type="polyline"
id="path2854"
d="M 523.25,157.36218 L 540.5,180.61218"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline" />
<path
inkscape:connector-type="polyline"
id="path2858"
d="M 609.8796,108.02108 L 561.97311,123.7542"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
inkscape:connector-type="polyline"
id="path2860"
d="M 524.67323,79.560028 L 522.19836,104.66232"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline" />
<path
inkscape:connector-type="polyline"
id="path2862"
d="M 563.38733,132.41626 L 634.45156,143.02286"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline" />
<path
inkscape:connector-type="polyline"
id="path2864"
d="M 623.4914,112.26372 L 574.5,301.86218"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline" />
<path
inkscape:connector-type="polyline"
id="path2866"
d="M 574,300.86218 L 555.07882,78.852921"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline" />
transform="translate(-63.5,-78)"
d="M 633 277.36218 A 55 27.5 0 1 1 523,277.36218 A 55 27.5 0 1 1 633 277.36218 z"
sodipodi:ry="27.5"
sodipodi:rx="55"
sodipodi:cy="277.36218"
sodipodi:cx="578"
id="path2830"
style="fill:#1e1d70;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
sodipodi:type="arc" />
<text
id="text2868"
y="159.33136"
x="583.70624"
style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
id="text2832"
y="195.86217"
x="469.5"
style="font-size:12px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="159.33136"
x="583.70624"
id="tspan2870"
sodipodi:role="line">IPC</tspan></text>
<path
inkscape:connector-type="polyline"
id="path1541"
d="M 643.99998,164.86221 L 573.5,301.36218"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline" />
<path
inkscape:connector-type="polyline"
id="path1545"
d="M 662.49998,113.36221 L 670.99998,122.36221"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
inkscape:connector-type="polyline"
id="path1547"
d="M 586.99998,66.362209 L 600.99998,71.862208"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<g
id="g2443">
<path
sodipodi:type="arc"
style="fill:#1e1d70;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
id="path2830"
sodipodi:cx="578"
sodipodi:cy="277.36218"
sodipodi:rx="55"
sodipodi:ry="27.5"
d="M 633 277.36218 A 55 27.5 0 1 1 523,277.36218 A 55 27.5 0 1 1 633 277.36218 z"
transform="translate(-63.5,-78)" />
<text
xml:space="preserve"
style="font-size:12px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
id="tspan2834"
y="195.86217"
x="469.5"
y="195.86217"
id="text2832"><tspan
sodipodi:role="line"
x="469.5"
y="195.86217"
id="tspan2834">&quot;Capable&quot; task</tspan></text>
<text
xml:space="preserve"
style="font-size:6.39792728px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
sodipodi:role="line">&quot;Capable&quot; task</tspan></text>
<text
id="text2432"
y="204.60594"
x="486.80911"
style="font-size:6.39792728px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
id="tspan2438"
y="204.60594"
x="486.80911"
y="204.60594"
id="text2432"><tspan
sodipodi:role="line"
x="486.80911"
y="204.60594"
id="tspan2438">- I/O space manager</tspan><tspan
id="tspan3165"
sodipodi:role="line"
x="486.80911"
y="212.60335">- Memory manager</tspan><tspan
id="tspan3167"
sodipodi:role="line"
x="486.80911"
y="220.60076">- Task manager</tspan></text>
</g>
sodipodi:role="line">- I/O space manager</tspan><tspan
y="212.60335"
x="486.80911"
sodipodi:role="line"
id="tspan3165">- Memory manager</tspan><tspan
y="220.60076"
x="486.80911"
sodipodi:role="line"
id="tspan3167">- Task manager</tspan></text>
</g>
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.59417999px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 327.31857,75.084388 L 286.32015,95.583598"
id="path2452"
inkscape:connector-type="polyline" />
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.59417999px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 311.5728,45.375388 L 279.78417,88.453438"
id="path2454"
inkscape:connector-type="polyline" />
<g
id="g3108"
transform="matrix(0.373706,0.312811,-0.304907,0.383393,109.7533,-100.8556)">
<rect
y="251.99132"
x="370.5"
height="4"
width="152"
id="rect2480"
style="fill:#1e1d70;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none" />
<path
inkscape:connector-type="polyline"
id="path2452"
d="M 637.49998,159.36221 L 568.49999,193.86221"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
transform="translate(-150.5,-27.87087)"
d="M 679.5,281.86221 L 669.75,287.49138 L 669.75,276.23305 L 679.5,281.86221 z "
inkscape:randomized="0"
inkscape:rounded="0"
inkscape:flatsided="true"
sodipodi:arg2="1.0471976"
sodipodi:arg1="0"
sodipodi:r2="3.25"
sodipodi:r1="6.5"
sodipodi:cy="281.86221"
sodipodi:cx="673"
sodipodi:sides="3"
id="path2482"
style="fill:#1e1d70;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
sodipodi:type="star" />
</g>
<g
id="g3540"
transform="matrix(0.59418,0,0,0.59418,40.48983,-1.708006)">
<path
inkscape:connector-type="polyline"
id="path2454"
d="M 610.99998,109.36221 L 557.49999,181.86221"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
sodipodi:type="arc"
style="fill:#1e1d70;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4"
id="path2868"
sodipodi:cx="578"
sodipodi:cy="277.36218"
sodipodi:rx="55"
sodipodi:ry="27.5"
d="M 633 277.36218 A 55 27.5 0 1 1 523,277.36218 A 55 27.5 0 1 1 633 277.36218 z"
transform="translate(-47.76957,-75.62125)" />
<text
sodipodi:linespacing="100%"
xml:space="preserve"
style="font-size:10.53869343px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="477.68732"
y="204.36903"
id="text3534"><tspan
id="tspan3538"
sodipodi:role="line"
y="204.36903"
x="477.68732">Capability Manager</tspan></text>
</g>
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.59417999px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 279.19,108.95263 L 323.7535,116.67697"
id="path2874"
inkscape:connector-type="polyline" />
<g
id="g3136"
transform="matrix(0.59418,0,0,0.59418,-51.47117,-19.60545)">
<g
transform="matrix(0.774823,0.632178,-0.632178,0.774823,247.7602,-238.8583)"
id="g3108">
transform="matrix(1,0,0,1.167883,-2,8.65456)"
id="g2491">
<rect
style="fill:#1e1d70;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
id="rect2480"
width="152"
height="4"
x="370.5"
y="251.99132" />
<path
sodipodi:type="star"
style="fill:#1e1d70;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
id="path2482"
sodipodi:sides="3"
sodipodi:cx="673"
sodipodi:cy="281.86221"
sodipodi:r1="6.5"
sodipodi:r2="3.25"
sodipodi:arg1="0"
sodipodi:arg2="1.0471976"
inkscape:flatsided="true"
inkscape:rounded="0"
inkscape:randomized="0"
d="M 679.5,281.86221 L 669.75,287.49138 L 669.75,276.23305 L 679.5,281.86221 z "
transform="translate(-150.5,-27.87087)" />
style="opacity:1;fill:#a3a3a3;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
id="rect2456"
width="109"
height="68.5"
x="633.5"
y="234.3622" />
<rect
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
id="rect2458"
width="104.5"
height="64.745003"
x="635.5"
y="236.3622" />
</g>
<g
transform="translate(154.7696,30.12125)"
id="g3540">
<path
transform="translate(-47.76957,-75.62125)"
d="M 633 277.36218 A 55 27.5 0 1 1 523,277.36218 A 55 27.5 0 1 1 633 277.36218 z"
sodipodi:ry="27.5"
sodipodi:rx="55"
sodipodi:cy="277.36218"
sodipodi:cx="578"
id="path2868"
style="fill:#1e1d70;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4"
sodipodi:type="arc" />
<text
id="text3534"
y="204.36903"
x="477.68732"
style="font-size:10.53869343px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"
sodipodi:linespacing="100%"><tspan
x="477.68732"
y="204.36903"
sodipodi:role="line"
id="tspan3538">Capability Manager</tspan></text>
</g>
<path
inkscape:connector-type="polyline"
id="path2874"
d="M 556.5,216.36218 L 631.5,229.36218"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<g
id="g3136">
<g
id="g2491"
transform="matrix(1,0,0,1.167883,-2,8.65456)">
<rect
y="234.3622"
x="633.5"
height="68.5"
width="109"
id="rect2456"
style="opacity:1;fill:#a3a3a3;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none" />
<rect
y="236.3622"
x="635.5"
height="64.745003"
width="104.5"
id="rect2458"
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none" />
</g>
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline"
d="M 638.49998,290.86228 L 688.49998,290.86228"
id="path2460"
inkscape:connector-type="polyline" />
<text
xml:space="preserve"
style="font-size:9.35571384px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
id="path2460"
d="M 638.49998,290.86228 L 688.49998,290.86228"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline" />
<text
id="text2462"
y="295.39972"
x="704.25952"
style="font-size:9.35571384px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="295.39972"
x="704.25952"
y="295.39972"
id="text2462"><tspan
sodipodi:role="line"
id="tspan2464"
x="704.25952"
y="295.39972">IPC</tspan></text>
<g
id="g2474"
transform="translate(-2,64.0001)">
<rect
y="259.86218"
x="640"
height="4"
width="47"
id="rect2466"
style="opacity:1;fill:#bc4343;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none" />
<path
transform="translate(14,-20)"
d="M 679.5,281.86221 L 669.75,287.49138 L 669.75,276.23305 L 679.5,281.86221 z "
inkscape:randomized="0"
inkscape:rounded="0"
inkscape:flatsided="true"
sodipodi:arg2="1.0471976"
sodipodi:arg1="0"
sodipodi:r2="3.25"
sodipodi:r1="6.5"
sodipodi:cy="281.86221"
sodipodi:cx="673"
sodipodi:sides="3"
id="path2468"
style="opacity:1;fill:#bc4343;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
sodipodi:type="star" />
</g>
<text
xml:space="preserve"
style="font-size:6.61760855px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="697.02826"
y="327.43848"
id="text2470"><tspan
sodipodi:role="line"
id="tspan2472"
x="697.02826"
y="327.43848">HW access</tspan></text>
<text
xml:space="preserve"
style="font-size:7.98628139px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="698.61957"
y="342.43625"
id="text2485"><tspan
sodipodi:role="line"
id="tspan2487"
x="698.61957"
y="342.43625">Interrupt</tspan><tspan
sodipodi:role="line"
x="698.61957"
y="352.4191"
id="tspan2489">via IPC</tspan></text>
<g
id="g2589"
transform="translate(-2.908684,44.7891)"
style="fill:#000000;fill-opacity:1">
<rect
y="259.86218"
x="640"
height="4"
width="47"
id="rect2591"
style="opacity:1;fill:#000000;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none" />
<path
transform="translate(14,-20)"
d="M 679.5,281.86221 L 669.75,287.49138 L 669.75,276.23305 L 679.5,281.86221 z "
inkscape:randomized="0"
inkscape:rounded="0"
inkscape:flatsided="true"
sodipodi:arg2="1.0471976"
sodipodi:arg1="0"
sodipodi:r2="3.25"
sodipodi:r1="6.5"
sodipodi:cy="281.86221"
sodipodi:cx="673"
sodipodi:sides="3"
id="path2593"
style="opacity:1;fill:#000000;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
sodipodi:type="star" />
</g>
<text
xml:space="preserve"
style="font-size:7.98628139px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="699.96088"
y="308.22531"
id="text2595"><tspan
sodipodi:role="line"
x="699.96088"
y="308.22531"
id="tspan2599">Syscall</tspan></text>
<g
id="g3100"
transform="translate(-1,82.8708)"
style="fill:#1e1d70;fill-opacity:1">
<rect
y="259.86218"
x="640"
height="4"
width="47"
id="rect3102"
style="opacity:1;fill:#1e1d70;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none" />
<path
transform="translate(14,-20)"
d="M 679.5,281.86221 L 669.75,287.49138 L 669.75,276.23305 L 679.5,281.86221 z "
inkscape:randomized="0"
inkscape:rounded="0"
inkscape:flatsided="true"
sodipodi:arg2="1.0471976"
sodipodi:arg1="0"
sodipodi:r2="3.25"
sodipodi:r1="6.5"
sodipodi:cy="281.86221"
sodipodi:cx="673"
sodipodi:sides="3"
id="path3104"
style="opacity:1;fill:#1e1d70;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
sodipodi:type="star" />
</g>
</g>
id="tspan2464"
sodipodi:role="line">IPC</tspan></text>
<g
style="fill:#000000;fill-opacity:1"
transform="matrix(-0.774823,-0.632178,0.632178,-0.774823,634.3136,719.5827)"
id="g3112">
transform="translate(-2,64.0001)"
id="g2474">
<rect
style="fill:#000000;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
id="rect3114"
width="152"
style="opacity:1;fill:#bc4343;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
id="rect2466"
width="47"
height="4"
x="370.5"
y="251.99132" />
x="640"
y="259.86218" />
<path
sodipodi:type="star"
style="fill:#000000;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
id="path3116"
style="opacity:1;fill:#bc4343;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
id="path2468"
sodipodi:sides="3"
sodipodi:cx="673"
sodipodi:cy="281.86221"
943,23 → 744,47
inkscape:rounded="0"
inkscape:randomized="0"
d="M 679.5,281.86221 L 669.75,287.49138 L 669.75,276.23305 L 679.5,281.86221 z "
transform="translate(-150.5,-27.87087)" />
transform="translate(14,-20)" />
</g>
<text
id="text2470"
y="327.43848"
x="697.02826"
style="font-size:6.61760855px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="327.43848"
x="697.02826"
id="tspan2472"
sodipodi:role="line">HW access</tspan></text>
<text
id="text2485"
y="342.43625"
x="698.61957"
style="font-size:7.98628139px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="342.43625"
x="698.61957"
id="tspan2487"
sodipodi:role="line">Interrupt</tspan><tspan
id="tspan2489"
y="352.4191"
x="698.61957"
sodipodi:role="line">via IPC</tspan></text>
<g
style="fill:#000000;fill-opacity:1"
transform="matrix(-0.646158,0.799342,-0.791957,-0.652183,928.9679,-68.84077)"
id="g3118">
transform="translate(-2.908684,44.7891)"
id="g2589">
<rect
style="fill:#000000;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
id="rect3120"
width="152"
style="opacity:1;fill:#000000;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
id="rect2591"
width="47"
height="4"
x="370.5"
y="251.99132" />
x="640"
y="259.86218" />
<path
sodipodi:type="star"
style="fill:#000000;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
id="path3122"
style="opacity:1;fill:#000000;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
id="path2593"
sodipodi:sides="3"
sodipodi:cx="673"
sodipodi:cy="281.86221"
971,22 → 796,33
inkscape:rounded="0"
inkscape:randomized="0"
d="M 679.5,281.86221 L 669.75,287.49138 L 669.75,276.23305 L 679.5,281.86221 z "
transform="translate(-150.5,-27.87087)" />
transform="translate(14,-20)" />
</g>
<text
id="text2595"
y="308.22531"
x="699.96088"
style="font-size:7.98628139px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
id="tspan2599"
y="308.22531"
x="699.96088"
sodipodi:role="line">Syscall</tspan></text>
<g
id="g3132">
style="fill:#1e1d70;fill-opacity:1"
transform="translate(-1,82.8708)"
id="g3100">
<rect
style="fill:#000000;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
id="rect3126"
width="64.982285"
style="opacity:1;fill:#1e1d70;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
id="rect3102"
width="47"
height="4"
x="-464.48227"
y="-189.99142"
transform="scale(-1,-1)" />
x="640"
y="259.86218" />
<path
sodipodi:type="star"
style="fill:#000000;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
id="path3128"
style="opacity:1;fill:#1e1d70;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
id="path3104"
sodipodi:sides="3"
sodipodi:cx="673"
sodipodi:cy="281.86221"
998,8 → 834,116
inkscape:rounded="0"
inkscape:randomized="0"
d="M 679.5,281.86221 L 669.75,287.49138 L 669.75,276.23305 L 679.5,281.86221 z "
transform="matrix(-1,-2.284956e-17,2.284956e-17,-1,1072.5,469.8536)" />
transform="translate(14,-20)" />
</g>
</g>
<g
id="g3112"
transform="matrix(-0.460384,-0.375628,0.375628,-0.460384,325.4253,407.9562)"
style="fill:#000000;fill-opacity:1">
<rect
y="251.99132"
x="370.5"
height="4"
width="152"
id="rect3114"
style="fill:#000000;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none" />
<path
transform="translate(-150.5,-27.87087)"
d="M 679.5,281.86221 L 669.75,287.49138 L 669.75,276.23305 L 679.5,281.86221 z "
inkscape:randomized="0"
inkscape:rounded="0"
inkscape:flatsided="true"
sodipodi:arg2="1.0471976"
sodipodi:arg1="0"
sodipodi:r2="3.25"
sodipodi:r1="6.5"
sodipodi:cy="281.86221"
sodipodi:cx="673"
sodipodi:sides="3"
id="path3116"
style="fill:#000000;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
sodipodi:type="star" />
</g>
<g
id="g3118"
transform="matrix(-0.782845,0.321716,-0.959487,-0.262488,835.8266,-16.51773)"
style="fill:#000000;fill-opacity:1">
<rect
y="251.99132"
x="370.5"
height="4"
width="152"
id="rect3120"
style="fill:#000000;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none" />
<path
transform="translate(-150.5,-27.87087)"
d="M 679.5,281.86221 L 669.75,287.49138 L 669.75,276.23305 L 679.5,281.86221 z "
inkscape:randomized="0"
inkscape:rounded="0"
inkscape:flatsided="true"
sodipodi:arg2="1.0471976"
sodipodi:arg1="0"
sodipodi:r2="3.25"
sodipodi:r1="6.5"
sodipodi:cy="281.86221"
sodipodi:cx="673"
sodipodi:sides="3"
id="path3122"
style="fill:#000000;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
sodipodi:type="star" />
</g>
<g
id="g3132"
transform="matrix(0.713464,0,0,0.59418,-104.3912,-21.35598)">
<rect
transform="scale(-1,-1)"
y="-189.99142"
x="-464.48227"
height="4"
width="64.982285"
id="rect3126"
style="fill:#000000;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none" />
<path
transform="matrix(-1,-2.284956e-17,2.284956e-17,-1,1072.5,469.8536)"
d="M 679.5,281.86221 L 669.75,287.49138 L 669.75,276.23305 L 679.5,281.86221 z "
inkscape:randomized="0"
inkscape:rounded="0"
inkscape:flatsided="true"
sodipodi:arg2="1.0471976"
sodipodi:arg1="0"
sodipodi:r2="3.25"
sodipodi:r1="6.5"
sodipodi:cy="281.86221"
sodipodi:cx="673"
sodipodi:sides="3"
id="path3128"
style="fill:#000000;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
sodipodi:type="star" />
</g>
<g
id="g2757"
transform="matrix(0.59418,0,0,0.59418,-60.41373,-13.64766)">
<path
transform="translate(-54.38743,-156.2596)"
d="M 633 277.36218 A 55 27.5 0 1 1 523,277.36218 A 55 27.5 0 1 1 633 277.36218 z"
sodipodi:ry="27.5"
sodipodi:rx="55"
sodipodi:cy="277.36218"
sodipodi:cx="578"
id="path2743"
style="fill:#1e1d70;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
sodipodi:type="arc" />
<text
id="text2745"
y="126.60257"
x="498.11258"
style="font-size:12px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
id="tspan2749"
y="126.60257"
x="498.11258"
sodipodi:role="line">NS Task</tspan></text>
</g>
</g>
</svg>
/design/trunk/src/ch_memory_management.xml
60,12 → 60,6
physical address. This fact would make serios performance overhead in
virtual memory management. To avoid this <link linkend="tlb">Traslation
Lookaside Buffer (TLB)</link> is used.</para>
 
<para>At the moment HelenOS does not support swapping.</para>
 
<para>- pouzivame vypadky stranky k alokaci ramcu on-demand v ramci
as_area - na architekturach, ktere to podporuji, podporujeme non-exec
stranky</para>
</section>
 
<section>
72,40 → 66,77
<title>Address spaces</title>
 
<section>
<title>Address spaces and areas</title>
<title>Address space areas</title>
 
<para>- adresovy prostor se sklada z tzv. address space areas
usporadanych v B+stromu; tyto areas popisuji vyuzivane casti
adresoveho prostoru patrici do user address space. Kazda cast je dana
svoji bazovou adresou, velikosti a flagy (rwx/dd).</para>
<para>Each address space consists of mutually disjunctive continuous
address space areas. Address space area is precisely defined by its
base address and the number of frames is contains.</para>
 
<para>- uzivatelske thready maji moznost manipulovat se svym adresovym
prostorem (vytvaret/resizovat/sdilet) as_areas pomoci syscallu</para>
<para>Address space area also has special flags, that define behaviour
and permissions on the particular area. <itemizedlist>
<listitem>
 
<emphasis>AS_AREA_READ</emphasis>
 
flag indicates reading permission.
</listitem>
 
<listitem>
 
<emphasis>AS_AREA_WRITE</emphasis>
 
flag indicates writing permission.
</listitem>
 
<listitem>
 
<emphasis>AS_AREA_EXEC</emphasis>
 
flag indicates code execution permission. Some architectures do not support execution persmission restriction. In this case this flag has no effect.
</listitem>
 
<listitem>
 
<emphasis>AS_AREA_DEVICE</emphasis>
 
marks area as mapped to the device memory.
</listitem>
</itemizedlist></para>
 
<para>Kernel provides possibility tasks create/expand/shrink/share its
address space via the set of syscalls.</para>
</section>
 
<section>
<title>Address Space ID (ASID)</title>
 
<para>- nektery hardware umoznuje rozlisit ruzne adresove prostory od
sebe (cilem je maximalizovat vyuziti TLB); dela to tak, ze s kazdou
polozkou TLB/strankovacich tabulek sdruzi identifikator adresoveho
prostoru (ASID, RID, ppc32 ???). Tyto id mivaji ruznou sirku: 8-bitu
az 24-bitu (kolik ma ppc32?)</para>
<para>When switching to the different task, kernel also require to
switch mappings to the different address space. In case TLB cannot
distinguish address space mappings, all mappings from the old address
space should be flushed, which can create certain uncessary
overhead.</para>
 
<para>- kernel tomu rozumi a sam pouziva abstrakci ASIDu (na ia64 to
je napr. cislo odvozene od RIDu, na mips32 to je ASID samotny);
existence ASIDu je nutnou podminkou pouziti _global_ page hash table
mechanismu.</para>
<para>To avoid this, some architectures have capability to segregate
different address spaces on HW level introducing the ASID (address
space ID). On those architectures each TLB record contains an address
space identifier, that tells to which address space this record is
applicable.</para>
 
<para>- na vsech arch. plati, ze asidu je mnohem mene, nez teoreticky
pocet soucasne bezicich tasku ~ adresovych prostoru, takze je
implementovan mechanismus, ktery umoznuje jednomu adresovemu prostoru
ASID odebrat a pridelit ho jinemu</para>
<para>HelenOS kernel can take advantage of this hardware supported
identifier by having an ASID abstraction which is connected to the
corresponding architecture identifier. I.e. on ia64 kernel ASID is
built from RID (region identifier) and on the mips32 kernel ASID is
actually the hardware identifier.</para>
 
<para>- vztah task ~ adresovy prostor: teoreticky existuje moznost, ze
je adresovy prostor sdilen vice tasky, avsak tuto moznost nepouzivame
a neni ani nijak osetrena. Tim padem plati, ze kazdy task ma vlastni
adresovy prostor</para>
<para>Due to the hardware limitations ASID has limited length from 8
bits on ia64 to 24 bits on mips32, which makes it impossible to use as
unique address space identifier for all tasks running in the system.
In such situations special ASID stealing algoritm is used, which takes
ASID from inactive task and assigns it to the active task.</para>
</section>
</section>
 
145,7 → 176,8
 
<para>- global page hash table: existuje jen jedna v celem systemu
(vyuziva ji ia64), pozn. ia64 ma zatim vypnuty VHPT. Pouziva se
genericke hash table s oddelenymi collision chains</para>
genericke hash table s oddelenymi collision chains. ASID support is
required to use global hash tables.</para>
</formalpara>
 
<para>Thanks to the abstract paging interface, there is possibility
154,7 → 186,7
</section>
 
<section id="tlb">
<title>Translation Lookaside buffer</title>
<title>Translation Lookaside Buffer</title>
 
<para>- TLB cachuji informace ve strankovacich tabulkach; alternativne
se lze na strankovaci tabulky (ci ruzne hw rozsireni [e.g. VHPT, ppc32
169,9 → 201,19
Programming Languages and Operating Systems, 1989, pp. 113-122.</para>
 
<para>- nutno poznamenat, ze existuji odlehcenejsi verze TLB shootdown
algoritmu</para>
algoritm</para>
</section>
</section>
 
<section>
<title>---</title>
 
<para>At the moment HelenOS does not support swapping.</para>
 
<para>- pouzivame vypadky stranky k alokaci ramcu on-demand v ramci
as_area - na architekturach, ktere to podporuji, podporujeme non-exec
stranky</para>
</section>
</section>
 
<!-- End of VM -->
276,18 → 318,18
contains all unallocated blocks of size
<mathphrase>2<superscript>i</superscript></mathphrase>. The index i is
called the order of block. Should there be two adjacent equally sized
blocks in the list i<mathphrase> </mathphrase>(i.e. buddies), the
buddy allocator would coalesce them and put the resulting block in
list <mathphrase>i + 1</mathphrase>, provided that the resulting block
would be naturally aligned. Similarily, when the allocator is asked to
allocate a block of size
<mathphrase>2<superscript>i</superscript></mathphrase>, it first tries
to satisfy the request from the list with index i. If the request
cannot be satisfied (i.e. the list i is empty), the buddy allocator
will try to allocate and split a larger block from the list with index
i + 1. Both of these algorithms are recursive. The recursion ends
either when there are no blocks to coalesce in the former case or when
there are no blocks that can be split in the latter case.</para>
blocks in the list i<mathphrase />(i.e. buddies), the buddy allocator
would coalesce them and put the resulting block in list <mathphrase>i
+ 1</mathphrase>, provided that the resulting block would be naturally
aligned. Similarily, when the allocator is asked to allocate a block
of size <mathphrase>2<superscript>i</superscript></mathphrase>, it
first tries to satisfy the request from the list with index i. If the
request cannot be satisfied (i.e. the list i is empty), the buddy
allocator will try to allocate and split a larger block from the list
with index i + 1. Both of these algorithms are recursive. The
recursion ends either when there are no blocks to coalesce in the
former case or when there are no blocks that can be split in the
latter case.</para>
 
<!--graphic fileref="images/mm1.png" format="EPS" /-->
 
461,12 → 503,13
magazine size boundary. LIFO order is enforced, which should avoid
fragmentation as much as possible.</para>
 
<para>Another important entity of magazine layer is a full magazine
depot, that stores full magazines which are used by any of the CPU
magazine caches to reload active CPU magazine. Magazine depot can be
pre-filled with full magazines during initialization, but in current
implementation it is filled during object deallocation, when CPU
magazine becomes full.</para>
<para>Another important entity of magazine layer is the common full
magazine list (also called a depot), that stores full magazines that
may be used by any of the CPU magazine caches to reload active CPU
magazine. This list of magazines can be pre-filled with full
magazines during initialization, but in current implementation it is
filled during object deallocation, when CPU magazine becomes
full.</para>
 
<para>Slab allocator control structures are allocated from special
slabs, that are marked by special flag, indicating that it should