Subversion Repositories HelenOS-doc

Compare Revisions

Ignore whitespace Rev 36 → Rev 37

/design/trunk/src/ch_arch_overview.xml
16,8 → 16,87
</mediaobject>
</para>
</section>
 
<section>
<title>Task</title>
<title>Monolithic microkernel</title>
<para>
Though HelenOS was initially planned as a microkernel, we where trying to avoid several issues, connected
with microkernels, such as much higher overhead during memory management and hardware operations. For this reason
some of the subsytems, that are to be implmented as servers in classic microkernel design, where implemented
as a part of kernel, thus minimizing this overhead.
</para>
 
<formalpara>
<title>Memory management</title>
<para>
Unlike the classic microkernel, HelenOS has all its memory management functionality in the kernel, available to the memory
management server via the set of syscalls.
</para>
</formalpara>
 
<formalpara>
<title>Kernel device drivers</title>
<para>
HelenOS kernel has some of the very basic device drivers
<itemizedlist>
<listitem>ACPI</listitem>
<listitem>APIC</listitem>
<listitem>SMP configuration</listitem>
<listitem>System clock</listitem>
<listitem>Interrupt controllers</listitem>
<listitem>Console</listitem>
<listitem>VESA &amp; frame buffer</listitem>
</itemizedlist>
 
</para>
</formalpara>
 
</section>
 
<section>
<title>Kernel primitives</title>
<para>
<termdef><glossterm>Thread</glossterm> is the basic execution primitive.</termdef>
</para>
 
<para>
<termdef><glossterm>Thread context</glossterm> represents state of the <emphasis>thread</emphasis>. Contains registers state, FPU state, stack(s).</termdef>
</para>
 
<para>
<termdef><glossterm>Task</glossterm> </termdef>
</para>
 
<para>
<termdef>
<glossterm>Address space area</glossterm> is a mutually disjunctive range of memory with the code, stack and data.
</termdef>
</para>
 
<para>
<termdef>
<glossterm>Address space</glossterm> is a aggregating entity for address space areas, connecting them to the task.
</termdef>
</para> 1
</section>
 
 
 
<section>
<title>IPC</title>
 
<para>
Due to the high intertask communication traffic, IPC becomes critical subsystem for microkernels, putting high demands on the
speed, latency and reliability of IPC model and implementation. HelenOS IPC is designed in analogy with telephone communication.
Each task has an <emphasis>answerbox</emphasis> and a set of <emphasis>phones</emphasis> to call another tasks' answerboxes. Communication
is possible after the link establishment, and can be either <emphasis>asynchronious</emphasis> or <emphasis>synchronious</emphasis>.
</para>
 
</section>
 
 
<section>
<para>Task ID - unique 64 bit number. Used for syscalls.</para>
<para>Contains threads</para>
<para>Address space is created per task</para>
24,8 → 103,8
<para>Memory mapping is per task</para>
<para>Context per thread. (Note 2 stacks on IA64).</para>
<para>IPC answer box associated per task</para>
</section>
<section>
 
 
<title>Memory management</title>
<para>
Zones - linked list (not many zones, so we can afford it. Can be replaced with B-tree in the future)