73,7 → 73,7 |
spaces on hardware level (i.e. ASIDs and page tables pointers).</para> |
|
<section> |
<title>Synchronous context switches</title> |
<title>Synchronous Context Switches</title> |
|
<para>The scheduler, but also other pieces of the kernel, make heavy use |
of synchronous context switches, because it is a natural vehicle not |
122,7 → 122,7 |
possible.</para> |
|
<formalpara> |
<title>Thread states</title> |
<title>Thread States</title> |
|
<para>In each moment, a thread exists in one of six possible thread |
states. When the thread is created and first readied into the |
146,8 → 146,7 |
|
<mediaobject id="thread_states" xreflabel=""> |
<imageobject role="pdf"> |
<imagedata fileref="images/thread_states.pdf" |
format="PDF" /> |
<imagedata fileref="images/thread_states.pdf" format="PDF" /> |
</imageobject> |
|
<imageobject role="html"> |
155,8 → 154,7 |
</imageobject> |
|
<imageobject role="fop"> |
<imagedata fileref="images/thread_states.svg" |
format="SVG" /> |
<imagedata fileref="images/thread_states.svg" format="SVG" /> |
</imageobject> |
</mediaobject> |
</figure></para> |
163,7 → 161,7 |
</formalpara> |
|
<formalpara> |
<title>Pseudo threads</title> |
<title>Pseudo Threads</title> |
|
<para>HelenOS userspace layer knows even smaller units of execution. |
Each userspace thread can make use of an arbitrary number of pseudo |
194,7 → 192,7 |
<title>Scheduler</title> |
|
<section> |
<title>Run queues</title> |
<title>Run Queues</title> |
|
<para>There is an array of several run queues on each processor. The |
current version of HelenOS uses 16 run queues implemented by 16 doubly |
206,7 → 204,7 |
</section> |
|
<section> |
<title>Scheduler operation</title> |
<title>Scheduler Operation</title> |
|
<para>The scheduler is invoked either explicitly when a thread calls the |
<code>scheduler</code> function (e.g. goes to sleep or merely wants to |
255,7 → 253,7 |
</section> |
|
<section> |
<title>Processor load balancing</title> |
<title>Processor Load Balancing</title> |
|
<para>Normally, for the sake of cache locality, threads are scheduled on |
one of the processors and don't leave it. Nevertheless, a situation in |