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)
/design/trunk/src/ch_memory_management.xml
36,7 → 36,7
<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 cause). Each page may be mapped to some
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
56,7 → 56,7
 
<para>At the moment HelenOS does not support swapping.</para>
 
- pouzivame vypadky stranky k alokaci ramcu on-demand v ramci as_area - na architekturach, ktere to podporuji, podporujeme non-exec stranky
<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>
65,11 → 65,15
<section>
<title>Address spaces and areas</title>
 
<para>- adresovy prostor se sklada z tzv. address space areas
<para>
 
- adresovy prostor se sklada z tzv. address space areas
usporadanych v B+stromu; tyto areas popisuji vyuzivane casti
adresoveho prostoru patrici do user address space. Kazda cast je dana
svoji bazovou adresou, velikosti a flagy (rwx/dd).</para>
svoji bazovou adresou, velikosti a flagy (rwx/dd).
 
</para>
 
<para>- uzivatelske thready maji moznost manipulovat se svym adresovym
prostorem (vytvaret/resizovat/sdilet) as_areas pomoci syscallu</para>
</section>