<?xml version="1.0" encoding="UTF-8"?>
<chapter id="architecture">
<?dbhtml filename="arch.html"?>
<title>Architecture overview</title>
<section>
<para>
<mediaobject id="arch1">
<imageobject role="html">
<imagedata fileref="images/arch1.png" format="PNG" />
</imageobject>
<imageobject role="fop">
<imagedata fileref="images.vector/arch1.svg" format="SVG" />
</imageobject>
</mediaobject>
</para>
</section>
<section>
<para>The HelenOS operating system is designed as a relatively small
microkernel assisted with a set of userspace drivers and server tasks.
HelenOS is not very radical in what subsystems should or should not be
implemented in the kernel - in some cases, both kernel and userspace
drivers exist. The reason for creating the system as a microkernel is
prosaic. Even though it is initially more difficult to get the same level
of functionality from a microkernel than it is in the case of a simple
monolithic kernel, a microkernel is much easier to maintain once the
pieces have been put to work together. Therefore, the kernel of HelenOS,
as well as the essential userspace libraries thereof can be maintained by
only a few developers who understand them completely. In addition, a
microkernel based operating system reaches completion sooner than
monolithic kernels as the system can be used even without some traditional
subsystems (e.g. block devices, filesystems and networking).</para>
<para>HelenOS is comprised of the kernel and userspace server tasks. The
kernel provides scheduling, memory management and IPC. It also contains
essential device drivers that control the system clock and other devices
necessary to guarantee a safe environment. Userspace communicates with the
kernel through </para>
</section>
</chapter>