Subversion Repositories HelenOS-doc

Compare Revisions

Ignore whitespace Rev 61 → Rev 62

/design/trunk/src/ch_ds.xml
50,7 → 50,7
inactive ASIDs or in userspace keyboard driver to buffer read
characters.</para>
 
<para>
<figure>
<mediaobject id="fifo" xreflabel="">
<imageobject role="html">
<imagedata fileref="images/fifo.png" format="PNG" />
60,9 → 60,9
<imagedata fileref="images.vector/fifo.svg" format="SVG" />
</imageobject>
<caption>FIFO queue showing the wrap around the end of the array.</caption>
</mediaobject>
</para>
<title>FIFO queue showing the wrap around the end of the array.</title>
</figure>
 
</section>
 
98,7 → 98,7
data. Moreover, B+trees can be used for easy storing, resizing and merging
of disjunctive intervals.</para>
 
<para>
<figure>
<mediaobject id="btree" xreflabel="">
<imageobject role="html">
<imagedata fileref="images/btree.png" format="PNG" />
108,9 → 108,10
<imagedata fileref="images.vector/btree.svg" format="SVG" />
</imageobject>
<caption>B+tree containing keys ranging from 1 to 12.</caption>
 
</mediaobject>
</para>
<title>B+tree containing keys ranging from 1 to 12.</title>
</figure>
 
</section>
</chapter>
/design/trunk/src/images/thread_states.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/design/trunk/src/images.vector/thread_states.svg
10,10 → 10,10
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
inkscape:export-ydpi="99.956085"
inkscape:export-xdpi="99.956085"
inkscape:export-filename="/afs/ms.mff.cuni.cz/u/j/jermj0bm/BIG/HelenOS-doc/design/src/images/btree.png"
inkscape:export-filename="/afs/ms.mff.cuni.cz/u/j/jermj0bm/BIG/HelenOS-doc/design/src/images/thread_states.png"
sodipodi:docname="thread_states.svg"
sodipodi:docbase="/home/jermar/software/HelenOS-doc/design/src/images.vector"
inkscape:version="0.42"
sodipodi:docbase="/afs/ms/u/j/jermj0bm/BIG/HelenOS-doc/design/src/images.vector"
inkscape:version="0.43"
sodipodi:version="0.32"
id="svg2"
height="233.89000pt"
141,7 → 141,7
</defs>
<sodipodi:namedview
inkscape:window-y="0"
inkscape:window-x="5"
inkscape:window-x="0"
inkscape:window-height="944"
inkscape:window-width="1272"
showguides="true"
148,9 → 148,9
showgrid="true"
inkscape:current-layer="layer1"
inkscape:document-units="px"
inkscape:cy="232.20966"
inkscape:cx="504.76473"
inkscape:zoom="1.0000000"
inkscape:cy="171.64011"
inkscape:cx="224.66868"
inkscape:zoom="3.462196"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
borderopacity="1.0"
176,219 → 176,221
inkscape:label="Layer 1">
<path
sodipodi:type="arc"
style="opacity:1.0000000;fill:none;fill-opacity:0.0000000;fill-rule:evenodd;stroke:none;stroke-width:5.0000000;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000"
id="path4129"
sodipodi:cx="314.50000"
sodipodi:cy="183.61252"
sodipodi:rx="117.50000"
sodipodi:ry="54.000000"
d="M 432.00000 183.61252 A 117.50000 54.000000 0 1 1 197.00000,183.61252 A 117.50000 54.000000 0 1 1 432.00000 183.61252 z"
transform="matrix(0.406899,0.000000,0.000000,0.406899,202.5103,150.4676)" />
<text
xml:space="preserve"
style="font-size:13.189154px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Vera Sans"
x="302.60602"
y="229.50343"
id="text4131"><tspan
sodipodi:role="line"
id="tspan4133"
x="302.60602"
y="229.50343">Running</tspan></text>
<path
sodipodi:type="arc"
style="font-size:32.413826px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125.00000%;writing-mode:lr-tb;text-anchor:start;opacity:0.35393259;fill:#f00000;fill-opacity:0.0000000;fill-rule:evenodd;stroke:none;stroke-width:5.0000000;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000;font-family:Bitstream Vera Sans"
style="font-size:32.41382599px;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;opacity:1;fill:#bc4343;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;font-family:Bitstream Vera Sans"
id="path4140"
sodipodi:cx="314.50000"
sodipodi:cx="314.5"
sodipodi:cy="183.61252"
sodipodi:rx="117.50000"
sodipodi:ry="54.000000"
d="M 432.00000 183.61252 A 117.50000 54.000000 0 1 1 197.00000,183.61252 A 117.50000 54.000000 0 1 1 432.00000 183.61252 z"
transform="matrix(0.406899,0.000000,0.000000,0.406899,29.62266,150.4675)" />
sodipodi:rx="117.5"
sodipodi:ry="54"
d="M 432 183.61252 A 117.5 54 0 1 1 197,183.61252 A 117.5 54 0 1 1 432 183.61252 z"
transform="matrix(0.337564,0,0,0.337564,31.59871,129.8711)" />
<text
xml:space="preserve"
style="font-size:13.189154px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125.00000%;writing-mode:lr-tb;text-anchor:start;fill:#f00000;fill-opacity:0.0000000;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Vera Sans"
x="129.42659"
y="229.5033"
style="font-size:10.94173813px;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:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="114.39616"
y="195.43927"
id="text4142"
sodipodi:linespacing="125.00000%"><tspan
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4146"
x="129.42659"
y="229.50330">Sleeping</tspan></text>
x="114.39616"
y="195.43927">Sleeping</tspan></text>
<path
sodipodi:type="arc"
style="opacity:1.0000000;fill:#ffffff;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:5.0000000;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000"
style="opacity:1;fill:#bc4343;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="path4148"
sodipodi:cx="314.50000"
sodipodi:cx="314.5"
sodipodi:cy="183.61252"
sodipodi:rx="117.50000"
sodipodi:ry="54.000000"
d="M 432.00000 183.61252 A 117.50000 54.000000 0 1 1 197.00000,183.61252 A 117.50000 54.000000 0 1 1 432.00000 183.61252 z"
transform="matrix(0.406899,0.000000,0.000000,0.406899,117.7399,53.35362)" />
sodipodi:rx="117.5"
sodipodi:ry="54"
d="M 432 183.61252 A 117.5 54 0 1 1 197,183.61252 A 117.5 54 0 1 1 432 183.61252 z"
transform="matrix(0.337564,0,0,0.337564,104.7009,49.30528)" />
<text
xml:space="preserve"
style="font-size:13.189154px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125.00000%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Vera Sans"
x="224.75291"
y="132.38945"
style="font-size:10.94173813px;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:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="193.479"
y="114.8735"
id="text4150"
sodipodi:linespacing="125.00000%"><tspan
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4154"
x="224.75291"
y="132.38945">Ready</tspan></text>
x="193.479"
y="114.8735">Ready</tspan></text>
<path
sodipodi:type="arc"
style="opacity:1.0000000;fill:#bc4343;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:6.0398583;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000"
style="opacity:1;fill:#bc4343;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:6.03985834;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="path4156"
sodipodi:cx="314.50000"
sodipodi:cx="314.5"
sodipodi:cy="183.61252"
sodipodi:rx="117.50000"
sodipodi:ry="54.000000"
d="M 432.00000 183.61252 A 117.50000 54.000000 0 1 1 197.00000,183.61252 A 117.50000 54.000000 0 1 1 432.00000 183.61252 z"
transform="matrix(0.406899,0.000000,0.000000,0.406899,-29.10630,-23.14346)" />
sodipodi:rx="117.5"
sodipodi:ry="54"
d="M 432 183.61252 A 117.5 54 0 1 1 197,183.61252 A 117.5 54 0 1 1 432 183.61252 z"
transform="matrix(0.337564,0,0,0.337564,-17.12291,-14.15679)" />
<text
xml:space="preserve"
style="font-size:13.189154px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125.00000%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:6.0398583;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000;font-family:Bitstream Vera Sans"
x="72.617035"
y="56.299263"
style="font-size:10.94173813px;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:#000000;fill-opacity:1;stroke:none;stroke-width:6.03985834;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="67.266891"
y="51.748989"
id="text4158"
sodipodi:linespacing="125.00000%"><tspan
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4162"
x="72.617035"
y="56.299263">Entering</tspan></text>
x="67.266891"
y="51.748989">Entering</tspan></text>
<path
sodipodi:type="arc"
style="opacity:1.0000000;fill:#bc4343;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:5.0000000;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000"
style="opacity:1;fill:#bc4343;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="path4164"
sodipodi:cx="314.50000"
sodipodi:cx="314.5"
sodipodi:cy="183.61252"
sodipodi:rx="117.50000"
sodipodi:ry="54.000000"
d="M 432.00000 183.61252 A 117.50000 54.000000 0 1 1 197.00000,183.61252 A 117.50000 54.000000 0 1 1 432.00000 183.61252 z"
transform="matrix(0.406899,0.000000,0.000000,0.406899,275.5714,-23.14362)" />
sodipodi:rx="117.5"
sodipodi:ry="54"
d="M 432 183.61252 A 117.5 54 0 1 1 197,183.61252 A 117.5 54 0 1 1 432 183.61252 z"
transform="matrix(0.337564,0,0,0.337564,235.6381,-14.15693)" />
<text
xml:space="preserve"
style="font-size:13.189154px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125.00000%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Vera Sans"
x="380.50845"
y="55.892204"
style="font-size:10.94173813px;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:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="322.69397"
y="51.411289"
id="text4166"
sodipodi:linespacing="125.00000%"><tspan
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4170"
x="380.50845"
y="55.892204">Exiting</tspan></text>
x="322.69397"
y="51.411289">Exiting</tspan></text>
<path
style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.4467583;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Lend);stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000"
d="M 259.52115,148.04884 C 297.86024,156.00601 334.75258,197.23862 334.75258,197.23862"
id="path4192"
sodipodi:nodetypes="cc" />
<path
style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.4467583;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Lend);stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000"
d="M 318.50903,205.40648 C 277.63227,201.82733 246.82953,159.71434 246.82953,159.71434"
id="path4974"
sodipodi:nodetypes="cc" />
<path
style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.2150525;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Lend);stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000"
d="M 283.49544,224.21377 C 252.11231,223.52837 214.56886,224.09505 214.56886,224.09505"
id="path4976"
sodipodi:nodetypes="cc" />
<path
style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.2465379;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Lend);stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000"
d="M 159.12787,204.58391 C 194.56314,180.73994 234.29138,155.17112 234.29138,155.17112"
id="path4978"
sodipodi:nodetypes="cc" />
<path
style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.2465379;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Lend);stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000"
d="M 101.32060,73.527619 C 133.22982,101.91764 190.30233,117.39893 190.30233,117.39893"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.03412938;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Lend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 91.079408,66.041653 C 117.55134,89.59405 165.76526,103.01502 165.76526,103.01502"
id="path4980"
sodipodi:nodetypes="cc" />
<path
style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.2465379;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Lend);stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000"
d="M 295.32535,123.94304 C 343.87230,125.56804 396.60455,79.562091 396.60455,79.562091"
id="path4982"
sodipodi:nodetypes="cc" />
<text
xml:space="preserve"
style="font-size:8.6805496px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125.00000%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Vera Sans"
x="62.150269"
y="119.92181"
style="font-size:7.20139456px;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:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="58.583652"
y="104.53033"
id="text4984"
sodipodi:linespacing="125.00000%"><tspan
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan5024"
x="62.150269"
y="119.92181">thread_create()</tspan></text>
x="58.583652"
y="104.53033">thread_create()</tspan></text>
<text
xml:space="preserve"
style="font-size:8.6805496px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125.00000%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Vera Sans"
x="140.76688"
y="93.156784"
style="font-size:7.20139456px;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:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="123.80408"
y="82.326027"
id="text4988"
sodipodi:linespacing="125.00000%"><tspan
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan5022"
x="140.76688"
y="93.156784">thread_ready()</tspan></text>
x="123.80408"
y="82.326027">thread_ready()</tspan></text>
<text
xml:space="preserve"
style="font-size:8.6805496px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125.00000%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Vera Sans"
x="308.17123"
y="166.21808"
style="font-size:7.20139456px;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:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="262.68295"
y="142.93776"
id="text4994"
sodipodi:linespacing="125.00000%"><tspan
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan5026"
x="308.17123"
y="166.21808">scheduler()</tspan></text>
x="262.68295"
y="142.93776">scheduler()</tspan></text>
<text
xml:space="preserve"
style="font-size:8.6805496px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125.00000%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Vera Sans"
x="196.94603"
y="247.23654"
style="font-size:7.20139456px;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:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="170.41039"
y="210.15079"
id="text4998"
sodipodi:linespacing="125.00000%"><tspan
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan5018"
x="196.94603"
y="247.23654">waitq_sleep_timeout()</tspan></text>
x="170.41039"
y="210.15079">waitq_sleep_timeout()</tspan></text>
<text
xml:space="preserve"
style="font-size:8.6805496px;font-style:oblique;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125.00000%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Vera Sans"
x="222.65424"
y="194.42986"
style="font-size:7.20139456px;font-style:oblique;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;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="191.73795"
y="166.3423"
id="text5002"
sodipodi:linespacing="125.00000%"><tspan
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan5004"
x="222.65424"
y="194.42986">preemption</tspan></text>
x="191.73795"
y="166.3423">preemption</tspan></text>
<text
xml:space="preserve"
style="font-size:8.6805496px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125.00000%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Vera Sans"
x="347.54028"
y="121.36857"
style="font-size:7.20139456px;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:#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.34357"
y="105.73057"
id="text5006"
sodipodi:linespacing="125.00000%"><tspan
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan5016"
x="347.54028"
y="121.36857">thread_exit()</tspan></text>
x="295.34357"
y="105.73057">thread_exit()</tspan></text>
<text
xml:space="preserve"
style="font-size:8.6805496px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125.00000%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Vera Sans"
x="128.22078"
y="172.04326"
style="font-size:7.20139456px;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:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="113.39584"
y="147.77034"
id="text5010"
sodipodi:linespacing="125.00000%"><tspan
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan5020"
x="128.22078"
y="172.04326">waitq_wakeup()</tspan></text>
x="113.39584"
y="147.77034">waitq_wakeup()</tspan></text>
<path
style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:2.2280076;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Lend);stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000"
d="M 42.333276,150.55173 C 55.330774,121.97840 69.605198,87.249839 69.605198,87.249839"
id="path5028"
sodipodi:type="arc"
style="font-size:32.41382599px;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;opacity:1;fill:#bc4343;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;font-family:Bitstream Vera Sans"
id="path2444"
sodipodi:cx="314.5"
sodipodi:cy="183.61252"
sodipodi:rx="117.5"
sodipodi:ry="54"
d="M 432 183.61252 A 117.5 54 0 1 1 197,183.61252 A 117.5 54 0 1 1 432 183.61252 z"
transform="matrix(0.337564,0,0,0.337564,176.4446,130.8755)" />
<text
xml:space="preserve"
style="font-size:10.94173813px;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:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="260.96609"
y="196.1692"
id="text2446"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan2450"
x="260.96609"
y="196.1692">Running</tspan></text>
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Lend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 32.502826,129.36249 L 67.136132,78.238858"
id="path3325"
inkscape:connector-type="polyline" />
<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;marker-end:url(#Arrow2Lend)"
d="M 224.24516,128.94016 C 257.13844,134.08145 273.02431,155.89231 277.93449,167.00852"
id="path4202"
sodipodi:nodetypes="cc" />
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Lend);stroke-opacity:1;display:inline"
d="M 242,191.84825 L 185.43144,191.55942"
id="path5077"
inkscape:connector-type="polyline" />
<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;marker-end:url(#Arrow2Lend)"
d="M 274.26453,175.20715 C 246.51967,169.97826 228.98473,157.23991 220.38036,137.00567"
id="path5079"
sodipodi:nodetypes="cc" />
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Lend);stroke-opacity:1;display:inline"
d="M 139.218,173.07404 L 204.49449,134.08145"
id="path5081"
inkscape:connector-type="polyline" />
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Lend);stroke-opacity:1;display:inline"
d="M 247.68933,104.90921 C 284.75773,101.55598 318.47723,87.053032 337.0693,71.115629"
id="path5083"
inkscape:connector-type="polyline"
sodipodi:nodetypes="cc" />
</g>
</svg>
/design/trunk/src/ch_synchronization.xml
295,19 → 295,24
and operate in a way similar to the example below. A thread waiting for
the condition becoming true does the following:</para>
 
<para><programlisting language="C"><function>mutex_lock</function>(<varname>mtx</varname>);
<example>
<title>Use of <code>condvar_wait_timeout</code>.</title>
<programlisting language="C"><function>mutex_lock</function>(<varname>mtx</varname>);
while (!<varname>condition</varname>)
<function>condvar_wait_timeout</function>(<varname>cv</varname>, <varname>mtx</varname>);
/* <remark>the condition is true, do something</remark> */
<function>mutex_unlock</function>(<varname>mtx</varname>);</programlisting></para>
<function>mutex_unlock</function>(<varname>mtx</varname>);</programlisting>
</example>
 
<para>A thread that causes the condition become true signals this event
like this:</para>
 
<para><programlisting><function>mutex_lock</function>(<varname>mtx</varname>);
<example>
<title>Use of <code>condvar_signal</code>.</title>
<programlisting><function>mutex_lock</function>(<varname>mtx</varname>);
<varname>condition</varname> = <constant>true</constant>;
<function>condvar_signal</function>(<varname>cv</varname>); /* <remark>condvar_broadcast(cv);</remark> */
<function>mutex_unlock</function>(<varname>mtx</varname>);</programlisting></para>
<function>mutex_unlock</function>(<varname>mtx</varname>);</programlisting></example>
 
<para>The wait operation, <code>condvar_wait_timeout</code>, always puts
the calling thread to sleep. The thread then sleeps until another thread
/design/trunk/src/ch_arch_overview.xml
19,7 → 19,7
be used even without some traditional subsystems (e.g. block devices,
filesystems and networking).</para>
 
<para><mediaobject id="arch1" xreflabel="">
<figure><mediaobject id="arch1" xreflabel="">
<imageobject role="html">
<imagedata fileref="images/arch1.png" format="PNG" />
</imageobject>
26,11 → 26,11
 
<imageobject role="fop">
<imagedata fileref="images.vector/arch1.svg" format="SVG" />
</imageobject>
</imageobject>
</mediaobject>
<title>HelenOS architecture overview.</title>
</figure>
 
<caption>HelenOS architecture overview</caption>
</mediaobject></para>
 
<para>HelenOS is comprised of the kernel and userspace server tasks. The
kernel provides scheduling, memory management and IPC. It also contains
essential device drivers that control the system clock and other devices
/design/trunk/src/ch_memory_management.xml
288,7 → 288,7
<section id="frame_allocator">
<title>Frame allocator</title>
 
<para><mediaobject id="frame_alloc">
<figure><mediaobject id="frame_alloc">
<imageobject role="html">
<imagedata fileref="images/frame_alloc.png" format="PNG" />
</imageobject>
296,7 → 296,9
<imageobject role="fop">
<imagedata fileref="images.vector/frame_alloc.svg" format="SVG" />
</imageobject>
</mediaobject></para>
</mediaobject>
<title>Frame allocator scheme.</title>
</figure>
 
<formalpara>
<title>Overview</title>
339,7 → 341,7
<section>
<title>Overview</title>
 
<para><mediaobject id="buddy_alloc">
<figure><mediaobject id="buddy_alloc">
<imageobject role="html">
<imagedata fileref="images/buddy_alloc.png" format="PNG" />
</imageobject>
347,7 → 349,9
<imageobject role="fop">
<imagedata fileref="images.vector/buddy_alloc.svg" format="SVG" />
</imageobject>
</mediaobject></para>
</mediaobject>
<title>Buddy system scheme.</title>
</figure>
 
<para>In the buddy allocator, the memory is broken down into
power-of-two sized naturally aligned blocks. These blocks are
483,7 → 487,7
<section>
<title>Implementation</title>
 
<para><mediaobject id="slab_alloc">
<figure><mediaobject id="slab_alloc">
<imageobject role="html">
<imagedata fileref="images/slab_alloc.png" format="PNG" />
</imageobject>
491,14 → 495,16
<imageobject role="fop">
<imagedata fileref="images.vector/slab_alloc.svg" format="SVG" />
</imageobject>
</mediaobject></para>
</mediaobject>
<title>Slab allocator scheme.</title>
</figure>
 
<para>The SLAB allocator is closely modelled after <ulink
<para>The slab allocator is closely modelled after <ulink
url="http://www.usenix.org/events/usenix01/full_papers/bonwick/bonwick_html/">
OpenSolaris SLAB allocator by Jeff Bonwick and Jonathan Adams </ulink>
OpenSolaris slab allocator by Jeff Bonwick and Jonathan Adams </ulink>
with the following exceptions: <itemizedlist>
<listitem>
empty SLABS are deallocated immediately (in Linux they are kept in linked list, in Solaris ???)
empty slabs are deallocated immediately (in Linux they are kept in linked list, in Solaris ???)
</listitem>
 
<listitem>
519,7 → 525,7
<title>Magazine layer</title>
 
<para>Due to the extensive bottleneck on SMP architures, caused by
global SLAB locking mechanism, making processing of all slab
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.
/design/trunk/src/ch_scheduling.xml
119,21 → 119,20
preemption and thread migration during times when preemption is
possible.</para>
 
<para>
<mediaobject id="thread_states" xreflabel="">
<figure>
<title>Transitions among thread states.</title>
 
<mediaobject id="thread_states" xreflabel="">
<imageobject role="html">
<imagedata fileref="images/thread_states.png" format="PNG" />
</imageobject>
<imageobject role="fop">
<imagedata fileref="images.vector/thread_states.svg" format="SVG" />
</imageobject>
<caption>Transitions among thread states.</caption>
</mediaobject>
</para>
<imagedata fileref="images/thread_states.png" format="PNG" />
</imageobject>
 
<imageobject role="fop">
<imagedata fileref="images.vector/thread_states.svg" format="SVG" />
</imageobject>
</mediaobject>
</figure>
 
<para>HelenOS userspace layer knows even smaller units of execution. Each
userspace thread can make use of an arbitrary number of pseudo threads.
These pseudo threads have their own synchronous register context,
190,7 → 189,7
essential. If the processor kept running using the stack of the
preempted thread it could damage it because the old thread can be
migrated to another processor and scheduled there. In the worst case
scenario, two execution flows would be using the same stack. </para>
scenario, two execution flows would be using the same stack.</para>
 
<para>The scheduling policy is implemented in function
<code>find_best_thread</code>. This function walks the processor run