/design/trunk/src/images/slab_alloc.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/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="/afs/ms/u/j/jermj0bm/BIG/HelenOS-doc/design/src/images.vector" |
sodipodi:docbase="/afs/labts.troja.mff.cuni.cz/homes/jermj0bm/HelenOS-doc/design/src/images.vector" |
sodipodi:docname="slab_alloc.svg" |
inkscape:export-filename="/home/segabond/HelenOS-doc/design/src/images/slab_alloc.png" |
inkscape:export-filename="/afs/labts.troja.mff.cuni.cz/homes/jermj0bm/HelenOS-doc/design/src/images/slab_alloc.png" |
inkscape:export-xdpi="157.50999" |
inkscape:export-ydpi="157.50999"> |
<defs |
92,7 → 92,7 |
inkscape:window-width="1272" |
inkscape:window-height="940" |
inkscape:window-x="0" |
inkscape:window-y="0"> |
inkscape:window-y="25"> |
<sodipodi:guide |
orientation="vertical" |
position="15.152288" |
176,618 → 176,570 |
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" |
d="M 35.237022,99.474516 C 57.591673,99.474516 57.591673,99.474516 57.591673,99.474516" |
id="path3360" /> |
<g |
id="g3138"> |
<rect |
y="24.474579" |
x="74" |
height="54.525421" |
width="46.04369" |
id="rect3336" |
style="fill:#1e1d70;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> |
<text |
id="text3362" |
y="33.194035" |
<rect |
style="fill:#1e1d70;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" |
id="rect3336" |
width="46.04369" |
height="54.525421" |
x="74" |
y="24.474579" /> |
<text |
xml:space="preserve" |
style="font-size:5.68998718px;font-style:normal;font-weight:normal;fill:#feff00;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans" |
x="80.344711" |
y="33.194035" |
id="text3362"><tspan |
sodipodi:role="line" |
id="tspan3364" |
x="80.344711" |
style="font-size:5.68998718px;font-style:normal;font-weight:normal;fill:#feff00;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="33.194035" |
x="80.344711" |
id="tspan3364" |
sodipodi:role="line">CPU0 cache </tspan></text> |
<text |
sodipodi:linespacing="125%" |
id="text3366" |
y="38.663589" |
y="33.194035">CPU0 cache </tspan></text> |
<text |
xml:space="preserve" |
style="font-size:4.48867798;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr;text-anchor:start;fill:#feff00;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans" |
x="77.194489" |
y="38.663589" |
id="text3366" |
sodipodi:linespacing="125%"><tspan |
sodipodi:role="line" |
id="tspan2092" |
x="77.194489" |
style="font-size:4.48867798px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#feff00;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.663589" |
x="77.194489" |
id="tspan3368" |
sodipodi:role="line">Loaded</tspan></text> |
<text |
id="text3370" |
y="38.694172" |
x="98.374054" |
style="font-size:4.74100494px;font-style:normal;font-weight:normal;fill:#feff00;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.694172" |
x="98.374054" |
id="tspan3372" |
sodipodi:role="line">Previous</tspan></text> |
<g |
id="g3102"> |
<rect |
style="fill:#a8a8a8;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" |
id="rect7949" |
width="15.904104" |
height="5.1382489" |
x="100.22722" |
y="54.921501" /> |
<rect |
style="fill:#a8a8a8;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" |
id="rect7953" |
width="15.904104" |
height="5.1382489" |
x="100.2243" |
y="64.377678" /> |
<rect |
style="fill:#bc4343;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" |
id="rect3390" |
width="15.904104" |
height="5.1382489" |
x="100.2243" |
y="45.30592" /> |
<rect |
style="fill:#a8a8a8;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" |
id="rect7947" |
width="15.904104" |
height="5.1382489" |
x="100.2243" |
y="50.264641" /> |
<rect |
style="fill:#a8a8a8;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" |
id="rect7951" |
width="15.904104" |
height="5.1382489" |
x="100.2243" |
y="59.720818" /> |
<rect |
style="fill:#a8a8a8;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" |
id="rect7955" |
width="15.904104" |
height="5.1382489" |
x="100.2243" |
y="69.407631" /> |
</g> |
<g |
id="g3094"> |
<rect |
style="fill:#bc4343;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" |
id="rect1563" |
width="15.904104" |
height="5.1382489" |
x="77.306519" |
y="45.564636" /> |
<rect |
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" |
id="rect1565" |
width="15.904104" |
height="5.1382489" |
x="77.306519" |
y="50.523357" /> |
<rect |
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" |
id="rect1567" |
width="15.904104" |
height="5.1382489" |
x="77.309441" |
y="55.180214" /> |
<rect |
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" |
id="rect1569" |
width="15.904104" |
height="5.1382489" |
x="77.306519" |
y="59.97953" /> |
<rect |
style="fill:#a8a8a8;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" |
id="rect1571" |
width="15.904104" |
height="5.1382489" |
x="77.306519" |
y="64.636391" /> |
<rect |
style="fill:#a8a8a8;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" |
id="rect1573" |
width="15.904104" |
height="5.1382489" |
x="77.306519" |
y="69.666344" /> |
</g> |
<text |
id="text1629" |
y="43.151745" |
x="77.359871" |
style="font-size:3.20176601px;font-style:normal;font-weight:normal;fill:#feff00;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="43.151745" |
x="77.359871" |
id="tspan1631" |
sodipodi:role="line">[2 rounds]</tspan></text> |
<text |
id="text1633" |
y="42.977253" |
x="103.56418" |
style="font-size:3.20176601px;font-style:normal;font-weight:normal;fill:#feff00;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="42.977253" |
x="103.56418" |
id="tspan1635" |
sodipodi:role="line">[full]</tspan></text> |
</g> |
<rect |
style="opacity:1;fill:#1e1d70;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" |
id="rect1786" |
width="268" |
height="2.0254474" |
x="61" |
y="-100.49511" |
transform="scale(1,-1)" /> |
<rect |
style="opacity:1;fill:#1e1d70;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" |
id="rect1840" |
width="268" |
height="2.0254474" |
x="60.817307" |
y="-179.84258" |
transform="scale(1,-1)" /> |
<rect |
style="opacity:1;fill:#1e1d70;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" |
id="rect1842" |
width="268" |
height="2.0254474" |
x="61" |
y="-260.59644" |
transform="scale(1,-1)" /> |
y="38.663589">current</tspan></text> |
<text |
xml:space="preserve" |
style="font-size:4.74100494;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr;text-anchor:start;fill:#feff00;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans" |
x="100.5347" |
y="38.932865" |
id="text3370" |
sodipodi:linespacing="125%"><tspan |
sodipodi:role="line" |
id="tspan2094" |
x="100.5347" |
y="38.932865">last</tspan></text> |
<g |
id="g3046"> |
id="g3102"> |
<rect |
y="25" |
x="126.54958" |
height="54.525421" |
width="46.04369" |
id="rect2781" |
style="fill:#1e1d70;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> |
<text |
id="text2783" |
y="33.719456" |
x="132.89429" |
style="font-size:5.68998718px;font-style:normal;font-weight:normal;fill:#feff00;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="33.719456" |
x="132.89429" |
id="tspan2785" |
sodipodi:role="line">CPU1 cache </tspan></text> |
<text |
sodipodi:linespacing="125%" |
id="text2787" |
y="39.189011" |
x="129.74406" |
style="font-size:4.48867798px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#feff00;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="39.189011" |
x="129.74406" |
id="tspan2789" |
sodipodi:role="line">Loaded</tspan></text> |
<text |
id="text2791" |
y="39.219593" |
x="150.92363" |
style="font-size:4.74100494px;font-style:normal;font-weight:normal;fill:#feff00;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="39.219593" |
x="150.92363" |
id="tspan2793" |
sodipodi:role="line">Previous</tspan></text> |
<rect |
y="55.446922" |
x="152.77679" |
y="54.921501" |
x="100.22722" |
height="5.1382489" |
width="15.904104" |
id="rect2795" |
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> |
id="rect7949" |
style="fill:#a8a8a8;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> |
<rect |
y="64.903099" |
x="152.77388" |
y="64.377678" |
x="100.2243" |
height="5.1382489" |
width="15.904104" |
id="rect2797" |
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> |
id="rect7953" |
style="fill:#a8a8a8;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> |
<rect |
y="45.831341" |
x="152.77388" |
y="45.30592" |
x="100.2243" |
height="5.1382489" |
width="15.904104" |
id="rect2799" |
id="rect3390" |
style="fill:#bc4343;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> |
<rect |
y="50.790062" |
x="152.77388" |
y="50.264641" |
x="100.2243" |
height="5.1382489" |
width="15.904104" |
id="rect2801" |
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> |
<rect |
y="60.246239" |
x="152.77388" |
height="5.1382489" |
width="15.904104" |
id="rect2803" |
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> |
<rect |
y="69.933052" |
x="152.77388" |
height="5.1382489" |
width="15.904104" |
id="rect2805" |
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> |
<rect |
y="46.090057" |
x="129.85609" |
height="5.1382489" |
width="15.904104" |
id="rect2807" |
style="fill:#bc4343;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> |
<rect |
y="51.048779" |
x="129.85609" |
height="5.1382489" |
width="15.904104" |
id="rect2809" |
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> |
<rect |
y="55.705635" |
x="129.85902" |
height="5.1382489" |
width="15.904104" |
id="rect2811" |
id="rect7947" |
style="fill:#a8a8a8;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> |
<rect |
y="60.504951" |
x="129.85609" |
y="59.720818" |
x="100.2243" |
height="5.1382489" |
width="15.904104" |
id="rect2813" |
id="rect7951" |
style="fill:#a8a8a8;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> |
<rect |
y="65.161812" |
x="129.85609" |
y="69.407631" |
x="100.2243" |
height="5.1382489" |
width="15.904104" |
id="rect2815" |
id="rect7955" |
style="fill:#a8a8a8;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> |
<rect |
y="70.191765" |
x="129.85609" |
height="5.1382489" |
width="15.904104" |
id="rect2817" |
style="fill:#a8a8a8;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> |
<text |
id="text2819" |
y="43.677166" |
x="129.90945" |
style="font-size:3.20176601px;font-style:normal;font-weight:normal;fill:#feff00;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="43.677166" |
x="129.90945" |
id="tspan2821" |
sodipodi:role="line">[4 rounds]</tspan></text> |
<text |
id="text2823" |
y="43.502674" |
x="154.11375" |
style="font-size:3.20176601px;font-style:normal;font-weight:normal;fill:#feff00;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="43.502674" |
x="154.11375" |
id="tspan2825" |
sodipodi:role="line">[empty]</tspan></text> |
</g> |
<g |
id="g3021"> |
id="g3094"> |
<rect |
y="25" |
x="179" |
height="54.525421" |
width="46.04369" |
id="rect2829" |
style="fill:#1e1d70;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> |
<text |
id="text2831" |
y="33.719456" |
x="185.34471" |
style="font-size:5.68998718px;font-style:normal;font-weight:normal;fill:#feff00;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="33.719456" |
x="185.34471" |
id="tspan2833" |
sodipodi:role="line">CPU2 cache </tspan></text> |
<text |
sodipodi:linespacing="125%" |
id="text2835" |
y="39.189011" |
x="182.19449" |
style="font-size:4.48867798px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#feff00;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="39.189011" |
x="182.19449" |
id="tspan2837" |
sodipodi:role="line">Loaded</tspan></text> |
<text |
id="text2839" |
y="39.219593" |
x="203.37405" |
style="font-size:4.74100494px;font-style:normal;font-weight:normal;fill:#feff00;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="39.219593" |
x="203.37405" |
id="tspan2841" |
sodipodi:role="line">Previous</tspan></text> |
<rect |
y="55.446922" |
x="205.22722" |
y="45.564636" |
x="77.306519" |
height="5.1382489" |
width="15.904104" |
id="rect2843" |
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> |
<rect |
y="64.903099" |
x="205.2243" |
height="5.1382489" |
width="15.904104" |
id="rect2845" |
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> |
<rect |
y="45.831341" |
x="205.2243" |
height="5.1382489" |
width="15.904104" |
id="rect2847" |
id="rect1563" |
style="fill:#bc4343;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> |
<rect |
y="50.790062" |
x="205.2243" |
y="50.523357" |
x="77.306519" |
height="5.1382489" |
width="15.904104" |
id="rect2849" |
id="rect1565" |
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> |
<rect |
y="60.246239" |
x="205.2243" |
y="55.180214" |
x="77.309441" |
height="5.1382489" |
width="15.904104" |
id="rect2851" |
id="rect1567" |
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> |
<rect |
y="69.933052" |
x="205.2243" |
y="59.97953" |
x="77.306519" |
height="5.1382489" |
width="15.904104" |
id="rect2853" |
id="rect1569" |
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> |
<rect |
y="46.090057" |
x="182.30652" |
y="64.636391" |
x="77.306519" |
height="5.1382489" |
width="15.904104" |
id="rect2855" |
style="fill:#bc4343;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> |
<rect |
y="51.048779" |
x="182.30652" |
height="5.1382489" |
width="15.904104" |
id="rect2857" |
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> |
<rect |
y="55.705635" |
x="182.30945" |
height="5.1382489" |
width="15.904104" |
id="rect2859" |
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> |
<rect |
y="60.504951" |
x="182.30652" |
height="5.1382489" |
width="15.904104" |
id="rect2861" |
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> |
<rect |
y="65.161812" |
x="182.30652" |
height="5.1382489" |
width="15.904104" |
id="rect2863" |
id="rect1571" |
style="fill:#a8a8a8;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> |
<rect |
y="70.191765" |
x="182.30652" |
y="69.666344" |
x="77.306519" |
height="5.1382489" |
width="15.904104" |
id="rect2865" |
id="rect1573" |
style="fill:#a8a8a8;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> |
<text |
id="text2867" |
y="43.677166" |
x="182.35986" |
style="font-size:3.20176601px;font-style:normal;font-weight:normal;fill:#feff00;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="43.677166" |
x="182.35986" |
id="tspan2869" |
sodipodi:role="line">[3 rounds]</tspan></text> |
<text |
id="text2871" |
y="43.502674" |
</g> |
<text |
xml:space="preserve" |
style="font-size:3.20176601px;font-style:normal;font-weight:normal;fill:#feff00;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans" |
x="100.84136" |
y="43.43259" |
id="text1633"><tspan |
sodipodi:role="line" |
id="tspan1635" |
x="100.84136" |
y="43.43259">[full]</tspan></text> |
<rect |
style="opacity:1;fill:#1e1d70;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" |
id="rect1786" |
width="268" |
height="2.0254474" |
x="61" |
y="-100.49511" |
transform="scale(1,-1)" /> |
<rect |
style="opacity:1;fill:#1e1d70;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" |
id="rect1840" |
width="268" |
height="2.0254474" |
x="60.817307" |
y="-179.84258" |
transform="scale(1,-1)" /> |
<rect |
style="opacity:1;fill:#1e1d70;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" |
id="rect1842" |
width="268" |
height="2.0254474" |
x="61" |
y="-260.59644" |
transform="scale(1,-1)" /> |
<rect |
style="fill:#1e1d70;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" |
id="rect2781" |
width="46.04369" |
height="54.525421" |
x="126.54958" |
y="25" /> |
<text |
xml:space="preserve" |
style="font-size:5.68998718px;font-style:normal;font-weight:normal;fill:#feff00;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans" |
x="132.89429" |
y="33.719456" |
id="text2783"><tspan |
sodipodi:role="line" |
id="tspan2785" |
x="132.89429" |
y="33.719456">CPU1 cache </tspan></text> |
<text |
xml:space="preserve" |
style="font-size:4.48867798;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr;text-anchor:start;fill:#feff00;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans" |
x="129.74406" |
y="39.189011" |
id="text2787" |
sodipodi:linespacing="125%"><tspan |
sodipodi:role="line" |
id="tspan2096" |
x="129.74406" |
y="39.189011">current</tspan></text> |
<text |
xml:space="preserve" |
style="font-size:4.74100494px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#feff00;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans" |
x="153.56203" |
y="39.602051" |
id="text2791" |
sodipodi:linespacing="125%"><tspan |
sodipodi:role="line" |
id="tspan2102" |
x="153.56203" |
y="39.602051">last</tspan></text> |
<rect |
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" |
id="rect2795" |
width="15.904104" |
height="5.1382489" |
x="152.77679" |
y="55.446922" /> |
<rect |
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" |
id="rect2797" |
width="15.904104" |
height="5.1382489" |
x="152.77388" |
y="64.903099" /> |
<rect |
style="fill:#bc4343;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" |
id="rect2799" |
width="15.904104" |
height="5.1382489" |
x="152.77388" |
y="45.831341" /> |
<rect |
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" |
id="rect2801" |
width="15.904104" |
height="5.1382489" |
x="152.77388" |
y="50.790062" /> |
<rect |
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" |
id="rect2803" |
width="15.904104" |
height="5.1382489" |
x="152.77388" |
y="60.246239" /> |
<rect |
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" |
id="rect2805" |
width="15.904104" |
height="5.1382489" |
x="152.77388" |
y="69.933052" /> |
<rect |
style="fill:#bc4343;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" |
id="rect2807" |
width="15.904104" |
height="5.1382489" |
x="129.85609" |
y="46.090057" /> |
<rect |
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" |
id="rect2809" |
width="15.904104" |
height="5.1382489" |
x="129.85609" |
y="51.048779" /> |
<rect |
style="fill:#a8a8a8;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" |
id="rect2811" |
width="15.904104" |
height="5.1382489" |
x="129.85902" |
y="55.705635" /> |
<rect |
style="fill:#a8a8a8;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" |
id="rect2813" |
width="15.904104" |
height="5.1382489" |
x="129.85609" |
y="60.504951" /> |
<rect |
style="fill:#a8a8a8;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" |
id="rect2815" |
width="15.904104" |
height="5.1382489" |
x="129.85609" |
y="65.161812" /> |
<rect |
style="fill:#a8a8a8;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" |
id="rect2817" |
width="15.904104" |
height="5.1382489" |
x="129.85609" |
y="70.191765" /> |
<text |
xml:space="preserve" |
style="font-size:3.20176601px;font-style:normal;font-weight:normal;fill:#feff00;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans" |
x="154.11375" |
y="43.502674" |
id="text2823"><tspan |
sodipodi:role="line" |
id="tspan2825" |
x="154.11375" |
y="43.502674">[empty]</tspan></text> |
<rect |
style="fill:#1e1d70;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" |
id="rect2829" |
width="46.04369" |
height="54.525421" |
x="179" |
y="25" /> |
<text |
xml:space="preserve" |
style="font-size:5.68998718px;font-style:normal;font-weight:normal;fill:#feff00;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans" |
x="185.34471" |
y="33.719456" |
id="text2831"><tspan |
sodipodi:role="line" |
id="tspan2833" |
x="185.34471" |
y="33.719456">CPU2 cache </tspan></text> |
<text |
xml:space="preserve" |
style="font-size:4.48867798;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr;text-anchor:start;fill:#feff00;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans" |
x="182.19449" |
y="39.189011" |
id="text2835" |
sodipodi:linespacing="125%"><tspan |
sodipodi:role="line" |
id="tspan2098" |
x="182.19449" |
y="39.189011">current</tspan></text> |
<text |
xml:space="preserve" |
style="font-size:4.74100494px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#feff00;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans" |
x="206.55322" |
y="38.932865" |
id="text2839" |
sodipodi:linespacing="125%"><tspan |
sodipodi:role="line" |
id="tspan2100" |
x="206.55322" |
y="38.932865">last</tspan></text> |
<rect |
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" |
id="rect2843" |
width="15.904104" |
height="5.1382489" |
x="205.22722" |
y="55.446922" /> |
<rect |
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" |
id="rect2845" |
width="15.904104" |
height="5.1382489" |
x="205.2243" |
y="64.903099" /> |
<rect |
style="fill:#bc4343;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" |
id="rect2847" |
width="15.904104" |
height="5.1382489" |
x="205.2243" |
y="45.831341" /> |
<rect |
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" |
id="rect2849" |
width="15.904104" |
height="5.1382489" |
x="205.2243" |
y="50.790062" /> |
<rect |
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" |
id="rect2851" |
width="15.904104" |
height="5.1382489" |
x="205.2243" |
y="60.246239" /> |
<rect |
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" |
id="rect2853" |
width="15.904104" |
height="5.1382489" |
x="205.2243" |
y="69.933052" /> |
<rect |
style="fill:#bc4343;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" |
id="rect2855" |
width="15.904104" |
height="5.1382489" |
x="182.30652" |
y="46.090057" /> |
<rect |
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" |
id="rect2857" |
width="15.904104" |
height="5.1382489" |
x="182.30652" |
y="51.048779" /> |
<rect |
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" |
id="rect2859" |
width="15.904104" |
height="5.1382489" |
x="182.30945" |
y="55.705635" /> |
<rect |
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" |
id="rect2861" |
width="15.904104" |
height="5.1382489" |
x="182.30652" |
y="60.504951" /> |
<rect |
style="fill:#a8a8a8;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" |
id="rect2863" |
width="15.904104" |
height="5.1382489" |
x="182.30652" |
y="65.161812" /> |
<rect |
style="fill:#a8a8a8;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" |
id="rect2865" |
width="15.904104" |
height="5.1382489" |
x="182.30652" |
y="70.191765" /> |
<text |
xml:space="preserve" |
style="font-size:3.20176601px;font-style:normal;font-weight:normal;fill:#feff00;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans" |
x="206.56418" |
y="43.502674" |
id="text2871"><tspan |
sodipodi:role="line" |
id="tspan2873" |
x="206.56418" |
style="font-size:3.20176601px;font-style:normal;font-weight:normal;fill:#feff00;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="43.502674" |
x="206.56418" |
id="tspan2873" |
sodipodi:role="line">[empty]</tspan></text> |
</g> |
<g |
id="g2996"> |
<rect |
y="25" |
x="247.9563" |
height="54.525421" |
width="46.04369" |
id="rect2877" |
style="fill:#1e1d70;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> |
<text |
id="text2879" |
y="33.719456" |
y="43.502674">[empty]</tspan></text> |
<rect |
style="fill:#1e1d70;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" |
id="rect2877" |
width="46.04369" |
height="54.525421" |
x="247.9563" |
y="25" /> |
<text |
xml:space="preserve" |
style="font-size:5.68998718px;font-style:normal;font-weight:normal;fill:#feff00;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans" |
x="254.30101" |
y="33.719456" |
id="text2879"><tspan |
sodipodi:role="line" |
id="tspan2881" |
x="254.30101" |
style="font-size:5.68998718px;font-style:normal;font-weight:normal;fill:#feff00;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="33.719456" |
x="254.30101" |
id="tspan2881" |
sodipodi:role="line">CPUn cache </tspan></text> |
<text |
sodipodi:linespacing="125%" |
id="text2883" |
y="39.189011" |
y="33.719456">CPUn cache </tspan></text> |
<text |
xml:space="preserve" |
style="font-size:4.48867798;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr;text-anchor:start;fill:#feff00;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans" |
x="251.15079" |
y="39.189011" |
id="text2883" |
sodipodi:linespacing="125%"><tspan |
sodipodi:role="line" |
id="tspan2088" |
x="251.15079" |
style="font-size:4.48867798px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#feff00;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="39.189011" |
x="251.15079" |
id="tspan2885" |
sodipodi:role="line">Loaded</tspan></text> |
<text |
id="text2887" |
y="39.219593" |
x="272.33035" |
style="font-size:4.74100494px;font-style:normal;font-weight:normal;fill:#feff00;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="39.219593" |
x="272.33035" |
id="tspan2889" |
sodipodi:role="line">Previous</tspan></text> |
<rect |
y="55.446922" |
x="274.18353" |
height="5.1382489" |
width="15.904104" |
id="rect2891" |
style="fill:#a8a8a8;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> |
<rect |
y="64.903099" |
x="274.1806" |
height="5.1382489" |
width="15.904104" |
id="rect2893" |
style="fill:#a8a8a8;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> |
<rect |
y="45.831341" |
x="274.1806" |
height="5.1382489" |
width="15.904104" |
id="rect2895" |
style="fill:#bc4343;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> |
<rect |
y="50.790062" |
x="274.1806" |
height="5.1382489" |
width="15.904104" |
id="rect2897" |
style="fill:#a8a8a8;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> |
<rect |
y="60.246239" |
x="274.1806" |
height="5.1382489" |
width="15.904104" |
id="rect2899" |
style="fill:#a8a8a8;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> |
<rect |
y="69.933052" |
x="274.1806" |
height="5.1382489" |
width="15.904104" |
id="rect2901" |
style="fill:#a8a8a8;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> |
<rect |
y="46.090057" |
x="251.26282" |
height="5.1382489" |
width="15.904104" |
id="rect2903" |
style="fill:#bc4343;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> |
<rect |
y="51.048779" |
x="251.26282" |
height="5.1382489" |
width="15.904104" |
id="rect2905" |
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> |
<rect |
y="55.705635" |
x="251.26575" |
height="5.1382489" |
width="15.904104" |
id="rect2907" |
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> |
<rect |
y="60.504951" |
x="251.26282" |
height="5.1382489" |
width="15.904104" |
id="rect2909" |
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> |
<rect |
y="65.161812" |
x="251.26282" |
height="5.1382489" |
width="15.904104" |
id="rect2911" |
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> |
<rect |
y="70.191765" |
x="251.26282" |
height="5.1382489" |
width="15.904104" |
id="rect2913" |
style="fill:#a8a8a8;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> |
<text |
id="text2915" |
y="43.677166" |
x="251.31618" |
style="font-size:3.20176601px;font-style:normal;font-weight:normal;fill:#feff00;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="43.677166" |
x="251.31618" |
id="tspan2917" |
sodipodi:role="line">[1 round]</tspan></text> |
<text |
id="text2919" |
y="43.43259" |
x="278.72485" |
style="font-size:3.20176601px;font-style:normal;font-weight:normal;fill:#feff00;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="43.43259" |
x="278.72485" |
id="tspan2921" |
sodipodi:role="line">[full]</tspan></text> |
</g> |
y="39.189011">current</tspan></text> |
<text |
xml:space="preserve" |
style="font-size:4.74100494px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#feff00;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans" |
x="274.09811" |
y="38.932865" |
id="text2887" |
sodipodi:linespacing="125%"><tspan |
sodipodi:role="line" |
id="tspan2090" |
x="274.09811" |
y="38.932865">last</tspan></text> |
<rect |
style="fill:#a8a8a8;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" |
id="rect2891" |
width="15.904104" |
height="5.1382489" |
x="274.18353" |
y="55.446922" /> |
<rect |
style="fill:#a8a8a8;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" |
id="rect2893" |
width="15.904104" |
height="5.1382489" |
x="274.1806" |
y="64.903099" /> |
<rect |
style="fill:#bc4343;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" |
id="rect2895" |
width="15.904104" |
height="5.1382489" |
x="274.1806" |
y="45.831341" /> |
<rect |
style="fill:#a8a8a8;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" |
id="rect2897" |
width="15.904104" |
height="5.1382489" |
x="274.1806" |
y="50.790062" /> |
<rect |
style="fill:#a8a8a8;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" |
id="rect2899" |
width="15.904104" |
height="5.1382489" |
x="274.1806" |
y="60.246239" /> |
<rect |
style="fill:#a8a8a8;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" |
id="rect2901" |
width="15.904104" |
height="5.1382489" |
x="274.1806" |
y="69.933052" /> |
<rect |
style="fill:#bc4343;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" |
id="rect2903" |
width="15.904104" |
height="5.1382489" |
x="251.26282" |
y="46.090057" /> |
<rect |
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" |
id="rect2905" |
width="15.904104" |
height="5.1382489" |
x="251.26282" |
y="51.048779" /> |
<rect |
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" |
id="rect2907" |
width="15.904104" |
height="5.1382489" |
x="251.26575" |
y="55.705635" /> |
<rect |
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" |
id="rect2909" |
width="15.904104" |
height="5.1382489" |
x="251.26282" |
y="60.504951" /> |
<rect |
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" |
id="rect2911" |
width="15.904104" |
height="5.1382489" |
x="251.26282" |
y="65.161812" /> |
<rect |
style="fill:#a8a8a8;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" |
id="rect2913" |
width="15.904104" |
height="5.1382489" |
x="251.26282" |
y="70.191765" /> |
<text |
xml:space="preserve" |
style="font-size:3.20176601px;font-style:normal;font-weight:normal;fill:#feff00;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans" |
x="274.84137" |
y="43.43259" |
id="text2919"><tspan |
sodipodi:role="line" |
id="tspan2921" |
x="274.84137" |
y="43.43259">[full]</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="230.71428" |
y="63.285717" |
1325,5 → 1277,49 |
d="M 126.60329,127.18072 C 132.89034,127.18072 132.89034,127.18072 132.89034,127.18072" |
id="path2008" /> |
</g> |
<text |
xml:space="preserve" |
style="font-size:3.20176601px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#feff00;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans" |
x="77.724846" |
y="43.334007" |
id="text2076" |
sodipodi:linespacing="125%"><tspan |
sodipodi:role="line" |
id="tspan2080" |
x="77.724846" |
y="43.334007">[partial]</tspan></text> |
<text |
xml:space="preserve" |
style="font-size:3.20176601px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#feff00;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans" |
x="130.46965" |
y="43.43259" |
id="text2104" |
sodipodi:linespacing="125%"><tspan |
sodipodi:role="line" |
id="tspan2106" |
x="130.46965" |
y="43.43259">[partial]</tspan></text> |
<text |
xml:space="preserve" |
style="font-size:3.20176601px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#feff00;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans" |
x="182.46965" |
y="43.334007" |
id="text2108" |
sodipodi:linespacing="125%"><tspan |
sodipodi:role="line" |
id="tspan2110" |
x="182.46965" |
y="43.334007">[partial]</tspan></text> |
<text |
xml:space="preserve" |
style="font-size:3.20176601px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#feff00;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans" |
x="251.46965" |
y="43.334007" |
id="text2112" |
sodipodi:linespacing="125%"><tspan |
sodipodi:role="line" |
id="tspan2114" |
x="251.46965" |
y="43.334007">[partial]</tspan></text> |
</g> |
</svg> |
/design/trunk/src/ch_memory_management.xml |
---|
14,7 → 14,6 |
<title>Physical memory management</title> |
<section id="zones_and_frames"> |
<indexterm><primary>memory management</primary><secondary>memory zone</secondary></indexterm> |
<title>Zones and frames</title> |
<para>HelenOS represents continuous areas of physical memory in |
45,7 → 44,6 |
</section> |
<section id="frame_allocator"> |
<indexterm><primary>memory management</primary><secondary>frame allocator</secondary></indexterm> |
<title>Frame allocator</title> |
<para>The frame allocator satisfies kernel requests to allocate |
85,7 → 83,6 |
</section> |
<section id="buddy_allocator"> |
<indexterm><primary>memory management</primary><secondary>buddy system</secondary></indexterm> |
<title>Buddy allocator</title> |
<para>In the buddy system, the memory is broken down into power-of-two |
160,8 → 157,7 |
</section> |
<section id="slab"> |
<indexterm><primary>memory management</primary><secondary>slab</secondary></indexterm> |
<title>Slab allocator</title> |
<title>Slab allocator</title> |
<para>The majority of memory allocation requests in the kernel is for |
small, frequently used data structures. The basic idea behind the slab |
202,7 → 198,8 |
the list of full magazines. In other words, the slab allocator tries to |
keep the processor magazine cache only half-full in order to prevent |
thrashing when allocations and deallocations interleave on magazine |
boundaries.</para> |
boundaries. The advantage of this setup is that during most of the |
allocations, no global spinlock needs to be held.</para> |
<para>Should HelenOS run short of memory, it would start deallocating |
objects from magazines, calling slab cache destructor on them and |
226,125 → 223,81 |
allocator by Jeff Bonwick and Jonathan Adams with the following |
exceptions:<itemizedlist> |
<listitem> |
empty slabs are immediately deallocated |
empty slabs are immediately deallocated and |
</listitem> |
<listitem> |
<para>empty magazines are deallocated when not needed</para> |
<para>empty magazines are deallocated when not needed.</para> |
</listitem> |
</itemizedlist> Following features are not currently supported but |
would be easy to do: <itemizedlist> |
</itemizedlist>The following features are not currently supported |
but would be easy to do: <itemizedlist> |
<listitem> |
cache coloring |
cache coloring and |
</listitem> |
<listitem> |
dynamic magazine grow (different magazine sizes are already supported, but the allocation strategy would need to be adjusted) |
dynamic magazine grow (different magazine sizes are already supported, but the allocation strategy would need to be adjusted). |
</listitem> |
</itemizedlist></para> |
<section> |
<indexterm><primary>memory management</primary><secondary>slab magazine</secondary></indexterm> |
<title>Magazine layer</title> |
<para>Due to the extensive bottleneck on SMP architures, caused by |
global slab locking mechanism, making processing of all slab |
allocation requests serialized, a new layer was introduced to the |
classic slab allocator design. Slab allocator was extended to |
support per-CPU caches 'magazines' to achieve good SMP scaling. |
<termdef>Slab SMP perfromance bottleneck was resolved by introducing |
a per-CPU caching scheme called as <glossterm>magazine |
layer</glossterm></termdef>.</para> |
<para>Magazine is a N-element cache of objects, so each magazine can |
satisfy N allocations. Magazine behaves like a automatic weapon |
magazine (LIFO, stack), so the allocation/deallocation become simple |
push/pop pointer operation. Trick is that CPU does not access global |
slab allocator data during the allocation from its magazine, thus |
making possible parallel allocations between CPUs.</para> |
<para>Implementation also requires adding another feature as the |
CPU-bound magazine is actually a pair of magazines to avoid |
thrashing when during allocation/deallocatiion of 1 item at the |
magazine size boundary. LIFO order is enforced, which should avoid |
fragmentation as much as possible.</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 |
not be used for slab magazine layer. This is done to avoid possible |
infinite recursions and deadlock during conventional slab allocaiton |
requests.</para> |
</section> |
<section> |
<title>Allocation/deallocation</title> |
<para>Every cache contains list of full slabs and list of partialy |
full slabs. Empty slabs are immediately freed (thrashing will be |
avoided because of magazines).</para> |
<para>The following two paragraphs summarize and complete the |
description of the slab allocator operation (i.e. |
<code>slab_alloc</code> and <code>slab_free</code> |
operations).</para> |
<para>The SLAB allocator allocates lots of space and does not free |
it. When frame allocator fails to allocate the frame, it calls |
slab_reclaim(). It tries 'light reclaim' first, then brutal reclaim. |
The light reclaim releases slabs from cpu-shared magazine-list, |
until at least 1 slab is deallocated in each cache (this algorithm |
should probably change). The brutal reclaim removes all cached |
objects, even from CPU-bound magazines.</para> |
<formalpara> |
<title>Allocation</title> |
<para><emphasis>Step 1.</emphasis> When it comes to the allocation |
request, slab allocator first of all checks availability of memory |
in local CPU-bound magazine. If it is there, we would just "pop" |
the CPU magazine and return the pointer to object.</para> |
<para><emphasis>Step 1.</emphasis> When an allocation request |
comes, the slab allocator checks availability of memory in the |
current magazine of the local processor magazine cache. If the |
available memory is there, the allocator just pops the magazine |
and returns pointer to the object.</para> |
<para><emphasis>Step 2.</emphasis> If the CPU-bound magazine is |
empty, allocator will attempt to reload magazin, swapping it with |
second CPU magazine and returns to the first step.</para> |
<para><emphasis>Step 2.</emphasis> If the current magazine in the |
processor magazine cache is empty, the allocator will attempt to |
swap it with the last magazine from the cache and return to the |
first step. If also the last magazine is empty, the algorithm will |
fall through to Step 3.</para> |
<para><emphasis>Step 3.</emphasis> Now we are in the situation |
when both CPU-bound magazines are empty, which makes allocator to |
access shared full-magazines depot to reload CPU-bound magazines. |
If reload is succesful (meaning there are full magazines in depot) |
algoritm continues at Step 1.</para> |
<para><emphasis>Step 3.</emphasis> Now the allocator is in the |
situation when both magazines in the processor magazine cache are |
empty. The allocator reloads one magazine from the shared list of |
full magazines. If the reload is successful (i.e. there are full |
magazines in the list), the algorithm continues with Step |
1.</para> |
<para><emphasis>Step 4.</emphasis> Final step of the allocation. |
In this step object is allocated from the conventional slab layer |
and pointer is returned.</para> |
<para><emphasis>Step 4.</emphasis> In this fail-safe step, an |
object is allocated from the conventional slab layer and a pointer |
to it is returned. If also the last magazine is full,</para> |
</formalpara> |
<formalpara> |
<title>Deallocation</title> |
<para><emphasis>Step 1.</emphasis> During deallocation request, |
slab allocator will check if the local CPU-bound magazine is not |
full. In this case we will just push the pointer to this |
magazine.</para> |
<para><emphasis>Step 1.</emphasis> During a deallocation request, |
the slab allocator checks if the current magazine of the local |
processor magazine cache is not full. If yes, the pointer to the |
objects is just pushed into the magazine and the algorithm |
returns.</para> |
<para><emphasis>Step 2.</emphasis> If the CPU-bound magazine is |
full, allocator will attempt to reload magazin, swapping it with |
second CPU magazine and returns to the first step.</para> |
<para><emphasis>Step 2.</emphasis> If the current magazine is |
full, the allocator will attempt to swap it with the last magazine |
from the cache and return to the first step. If also the last |
magazine is empty, the algorithm will fall through to Step |
3.</para> |
<para><emphasis>Step 3.</emphasis> Now we are in the situation |
when both CPU-bound magazines are full, which makes allocator to |
access shared full-magazines depot to put one of the magazines to |
the depot and creating new empty magazine. Algoritm continues at |
Step 1.</para> |
<para><emphasis>Step 3.</emphasis> Now the allocator is in the |
situation when both magazines in the processor magazine cache are |
full. The allocator moves one magazine to the shared list of full |
magazines. The algoritm continues with Step 1.</para> |
</formalpara> |
</section> |
</section> |
</section> |
<!-- End of Physmem --> |
</section> |
<section> |
370,6 → 323,11 |
<para><!-- |
TLB shootdown ASID/ASID:PAGE/ALL. |
TLB shootdown requests can come in asynchroniously |
so there is a cache of TLB shootdown requests. Upon cache overflow TLB shootdown ALL is executed |
<para> |
Address spaces. Address space area (B+ tree). Only for uspace. Set of syscalls (shrink/extend etc). |
Special address space area type - device - prohibits shrink/extend syscalls to call on it. |
380,11 → 338,31 |
</section> |
<section> |
<title>Paging</title> |
<para>Virtual memory is usually using paged memory model, where virtual |
memory address space is divided into the <emphasis>pages</emphasis> |
(usually having size 4096 bytes) and physical memory is divided into the |
frames (same sized as a page, of course). Each page may be mapped to |
some frame and then, upon memory access to the virtual address, CPU |
performs <emphasis>address translation</emphasis> during the instruction |
execution. Non-existing mapping generates page fault exception, calling |
kernel exception handler, thus allowing kernel to manipulate rules of |
memory access. Information for pages mapping is stored by kernel in the |
<link linkend="page_tables">page tables</link></para> |
<para>The majority of the architectures use multi-level page tables, |
which means need to access physical memory several times before getting |
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> |
</section> |
<section> |
<title>Address spaces</title> |
<section> |
<indexterm><primary>memory management</primary><secondary>address space area</secondary></indexterm> |
<title>Address space areas</title> |
<title>Address space areas</title> |
<para>Each address space consists of mutually disjunctive continuous |
address space areas. Address space area is precisely defined by its |
430,7 → 408,6 |
</section> |
<section> |
<indexterm><primary>memory management</primary><secondary>asid</secondary></indexterm> |
<title>Address Space ID (ASID)</title> |
<para>When switching to the different task, kernel also require to |
464,55 → 441,26 |
<section> |
<title>Virtual address translation</title> |
<section id="paging"> |
<title>Paging</title> |
<section id="page_tables"> |
<title>Page tables</title> |
<section> |
<title>Introduction</title> |
<para>HelenOS kernel has two different approaches to the paging |
implementation: <emphasis>4 level page tables</emphasis> and |
<emphasis>global hash tables</emphasis>, which are accessible via |
generic paging abstraction layer. Such different functionality was |
caused by the major architectural differences between supported |
platforms. This abstraction is implemented with help of the global |
structure of pointers to basic mapping functions |
<emphasis>page_mapping_operations</emphasis>. To achieve different |
functionality of page tables, corresponding layer must implement |
functions, declared in |
<emphasis>page_mapping_operations</emphasis></para> |
<para>Virtual memory is usually using paged memory model, where |
virtual memory address space is divided into the |
<emphasis>pages</emphasis> (usually having size 4096 bytes) and |
physical memory is divided into the frames (same sized as a page, of |
course). Each page may be mapped to some frame and then, upon memory |
access to the virtual address, CPU performs <emphasis>address |
translation</emphasis> during the instruction execution. |
Non-existing mapping generates page fault exception, calling kernel |
exception handler, thus allowing kernel to manipulate rules of |
memory access. Information for pages mapping is stored by kernel in |
the page tables</para> |
<formalpara> |
<title>4-level page tables</title> |
<para>The majority of the architectures use multi-level page tables, |
which means need to access physical memory several times before |
getting 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>HelenOS kernel has two different approaches to the paging |
implementation: <emphasis>4 level page tables</emphasis> and |
<emphasis>global hash table</emphasis>, which are accessible via |
generic paging abstraction layer. Such different functionality was |
caused by the major architectural differences between supported |
platforms. This abstraction is implemented with help of the global |
structure of pointers to basic mapping functions |
<emphasis>page_mapping_operations</emphasis>. To achieve different |
functionality of page tables, corresponding layer must implement |
functions, declared in |
<emphasis>page_mapping_operations</emphasis></para> |
<para>Thanks to the abstract paging interface, there was a place |
left for more paging implementations (besides already implemented |
hieararchical page tables and hash table), for example B-Tree based |
page tables.</para> |
</section> |
<section> |
<title>Hierarchical 4-level page tables</title> |
<para>Hierarchical 4-level page tables are the generalization of the |
hardware capabilities of most architectures. Each address space has |
its own page tables.<itemizedlist> |
<para>4-level page tables are the generalization of the hardware |
capabilities of several architectures.<itemizedlist> |
<listitem> |
ia32 uses 2-level page tables, with full hardware support. |
</listitem> |
525,34 → 473,23 |
mips and ppc32 have 2-level tables, software simulated support. |
</listitem> |
</itemizedlist></para> |
</section> |
</formalpara> |
<section> |
<indexterm><primary>memory management</primary><secondary>hash table</secondary></indexterm> |
<title>Global hash table</title> |
<formalpara> |
<title>Global hash tables</title> |
<para>Implementation of the global hash table was encouraged by the |
ia64 architecture support. One of the major differences between |
global hash table and hierarchical tables is that global hash table |
exists only once in the system and the hierarchical tables are |
maintained per address space.</para> |
<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. ASID support is |
required to use global hash tables.</para> |
</formalpara> |
<para>Thus, hash table contains information about all address spaces |
mappings in the system, so, the hash of an entry must contain |
information of both address space pointer or id and the virtual |
address of the page. Generic hash table implementation assumes that |
the addresses of the pointers to the address spaces are likely to be |
on the close addresses, so it uses least significant bits for hash; |
also it assumes that the virtual page addresses have roughly the |
same probability of occurring, so the least significant bits of VPN |
compose the hash index.</para> |
<para>Collision chains ...</para> |
</section> |
<para>Thanks to the abstract paging interface, there is possibility |
left have more paging implementations, for example B-Tree page |
tables.</para> |
</section> |
<section id="tlb"> |
<indexterm><primary>memory management</primary><secondary>tlb</secondary></indexterm> |
<title>Translation Lookaside buffer</title> |
<para>Due to the extensive overhead during the page mapping lookup in |
567,16 → 504,15 |
invalidating the contents of TLB, whenever there is some change in |
page tables. Those changes may occur when page or group of pages |
were unmapped, mapping is changed or system switching active address |
space to schedule a new system task. Moreover, this invalidation |
operation must be done an all system CPUs because each CPU has its |
own independent TLB cache. Thus maintaining TLB consistency on SMP |
configuration as not as trivial task as it looks on the first |
glance. Naive solution would assume that is the CPU which wants to |
invalidate TLB will invalidate TLB caches on other CPUs. It is not |
possible on the most of the architectures, because of the simple |
fact - flushing TLB is allowed only on the local CPU and there is no |
possibility to access other CPUs' TLB caches, thus invalidate TLB |
remotely.</para> |
space to schedule a new system task (which is a batch unmap of all |
address space mappings). Moreover, this invalidation operation must |
be done an all system CPUs because each CPU has its own independent |
TLB cache. Thus maintaining TLB consistency on SMP configuration as |
not as trivial task as it looks at the first glance. Naive solution |
would assume remote TLB invalidatation, which is not possible on the |
most of the architectures, because of the simple fact - flushing TLB |
is allowed only on the local CPU and there is no possibility to |
access other CPUs' TLB caches.</para> |
<para>Technique of remote invalidation of TLB entries is called "TLB |
shootdown". HelenOS uses a variation of the algorithm described by |
588,41 → 524,28 |
<para>As the situation demands, you will want partitial invalidation |
of TLB caches. In case of simple memory mapping change it is |
necessary to invalidate only one or more adjacent pages. In case if |
the architecture is aware of ASIDs, when kernel needs to dump some |
ASID to use by another task, it invalidates only entries from this |
particular address space. Final option of the TLB invalidation is |
the complete TLB cache invalidation, which is the operation that |
flushes all entries in TLB.</para> |
the architecture is aware of ASIDs, during the address space |
switching, kernel invalidates only entries from this particular |
address space. Final option of the TLB invalidation is the complete |
TLB cache invalidation, which is the operation that flushes all |
entries in TLB.</para> |
<para>TLB shootdown is performed in two phases.</para> |
<para>TLB shootdown is performed in two phases. First, the initiator |
process sends an IPI message indicating the TLB shootdown request to |
the rest of the CPUs. Then, it waits until all CPUs confirm TLB |
invalidating action execution.</para> |
</section> |
</section> |
</section> |
<formalpara> |
<title>Phase 1.</title> |
<section> |
<title>---</title> |
<para>First, initiator locks a global TLB spinlock, then request |
is being put to the local request cache of every other CPU in the |
system protected by its spinlock. In case the cache is full, all |
requests in the cache are replaced by one request, indicating |
global TLB flush. Then the initiator thread sends an IPI message |
indicating the TLB shootdown request to the rest of the CPUs and |
waits actively until all CPUs confirm TLB invalidating action |
execution by setting up a special flag. After setting this flag |
this thread is blocked on the TLB spinlock, held by the |
initiator.</para> |
</formalpara> |
<para>At the moment HelenOS does not support swapping.</para> |
<formalpara> |
<title>Phase 2.</title> |
<para>All CPUs are waiting on the TLB spinlock to execute TLB |
invalidation action and have indicated their intention to the |
initiator. Initiator continues, cleaning up its TLB and releasing |
the global TLB spinlock. After this all other CPUs gain and |
immidiately release TLB spinlock and perform TLB invalidation |
actions.</para> |
</formalpara> |
</section> |
</section> |
<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> |
</chapter> |