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> |