Subversion Repositories HelenOS-doc

Compare Revisions

Ignore whitespace Rev 48 → Rev 49

/design/trunk/src/ch_arch_overview.xml
59,7 → 59,53
by the scheduler. Special purpose kernel threads strive to keep processors
balanced by thread migration. Threads are scheduled by the round robing
scheduling policy with respect to multiple priority run queues.</para>
</section>
 
<para></para>
<section>
<title>Memory management</title>
 
<para>Memory management is another large subsystem in HelenOS. It serves
the kernel to satisfy its own memory allocation requests, provides
translation between virtual and physical memory addresses and manages
virtual address spaces of userspace tasks.</para>
 
<para>Kernel allocates memory from the slab allocator, which itself
allocates memory from a buddy system based allocator of physical memory
frames.</para>
 
<para>The virtual address translation layer currently supports two
mechanisms for mapping virtual memory pages to physical memory frames
(i.e. 4-level hierarchical page tables and global page hash table), and is
further extensible to other mechanisms.</para>
 
<para>Userspace tasks depend on support of address spaces provided by the
kernel. Each address space is a set of mutually dijunctive address space
areas that group pages of common attributes. An address space area is
usually connected to, and backed by, an anonymous memory or an executable
image of some program. Anonymous memory address space areas can be easily
shared among address spaces.</para>
</section>
 
<section>
<title>IPC</title>
 
<para>Due to the fact that HelenOS is a microkernel, strong emphasis is
put on its IPC (Inter-Process Communication<footnote>
<para>The term Inter-Process Communication is slightly confusing
because in HelenOS terminology there are tasks instead of processes.
However, its abbreviation, IPC, is being publicly used as a standard
name for similar facilities. This book will therefore use the term IPC
to refer to communication among tasks.</para>
</footnote>). Tasks communicate by passing very short messages to one
another or by sending (i.e. sharing) address space areas when larger data
is to be transfered.</para>
 
<para>The abstraction uses terms like phones, calls and answerboxes, but
is pretty similar to well-known abstraction of message queues. A task can
have multiple simultaneous simplex connections to several other tasks. A
connection leads from one of the source task's phones to the destination
task's answerbox. The phones are used as handles for making calls to other
tasks. Calls can be synchronous or asynchronous and can be forwarded from
one task to another.</para>
</section>
</chapter>