]> rtime.felk.cvut.cz Git - l4.git/blob - l4/doc/source/server_overview.dox
Update
[l4.git] / l4 / doc / source / server_overview.dox
1 // vi:ft=c
2 /**
3
4 \page l4re_servers L4Re Servers
5 \brief Here you shall find a quick overview over the standard services
6        running on Fiasco.OC and L4Re.
7
8 Sigma0, the Root Pager
9 ======================
10
11 Sigma0 is a special server running on L4 because it is responsible
12 of resolving page faults for the root task, the first useful task on
13 L4Re.  Sigma0 can be seen as part of the kernel, however it runs in
14 unprivileged mode.  To run something useful on Fiasco.OC you usually
15 need to run Sigma0, nevertheless it is possible to replace Sigma0
16 by a different implementation.
17
18
19 Moe, the Root Task
20 ==================
21
22 Moe is our implementation of the L4 root task that is responsible for
23 bootstrapping the system, and to provide basic resource management services
24 to the applications on top.  Therefore Moe provides L4Re resource management
25 an multiplexing services:
26 \li \b Memory in the form of memory allocators (L4Re::Mem_alloc, L4::Factory)
27     and data spaces (L4Re::Dataspace)
28 \li \b Cpu in the form of basic scheduler objects (L4::Scheduler)
29 \li \b Vcon multiplexing for debug output (output only)
30 \li \b Virtual \b memory \b management for applications, L4Re::Rm
31
32 Moe further provides an implementation of L4Re name spaces (L4Re::Namespace),
33 which are for example used to provide a read only directory of all multi-boot
34 modules.  In the case of a boot loader, like grub that enables a VESA frame
35 buffer, there is also a single instance of an L4Re graphics session
36 (L4Re::Goos).
37
38 To start the system Moe starts a single ELF program, this init process.  The
39 init process (usually Ned, see the next section) gets access to all resources
40 managed by Moe and to the Sigma0 root pager interface.
41
42 For more details see \subpage l4re_servers_moe "Moe, the Root-Task".
43
44
45 Ned, the Default Init Process
46 =============================
47
48 To keep the root task free from complicated scripting engines and to avoid
49 circular dependencies in application startup (that could lead to dead locks)
50 the configuration and startup of the real system is managed by an extra task,
51 the init process.
52
53 Ned is such an init process that allows system configuration via Lua scripts.
54
55 For more information see \subpage l4re_servers_ned "Ned".
56
57
58 Io, the Platform and Device Resource Manager
59 ============================================
60
61 Because all peripheral management of Fiasco.OC is done in user-level
62 applications, there is the need to have a centralized management of
63 the resources belonging to the platform and to peripheral devices.
64
65 This is the job of Io.  Io provides portable abstractions for iterating and
66 accessing devices and their resources (IRQ's, IO Memory...), as well as
67 delegating access to those resources to other applications (e.g., device
68 drivers).
69
70 For more details see \subpage io "Io, the Io Server".
71
72
73 Mag, the GUI Multiplexer
74 ========================
75
76 Our default multiplexer for the graphics hardware is Mag.  Mag is a
77 Nitpicker (TODO: ref) derivate that allows secure multiplexing of the
78 graphics and input hardware among multiple applications and multiple complete
79 windowing environments.
80
81 \todo Add some Nitpicker reference
82
83 For more information see \subpage l4re_servers_mag "Mag".
84
85
86 fb-drv, the Low-Level Graphics Driver
87 =====================================
88
89 The fb-drv server provides low-level access and initialization of various
90 graphics hardware.  It has support for running VESA BIOS calls on Intel x86
91 platforms, as well as support for various ARM display controllers.
92 \em fb-drv, provides a single instance of the L4Re::Goos interface and can
93 serve as a back end for the Mag server, in particular, if there is no graphics
94 support in the boot loader.
95
96
97 Rtc, the Real-Time Clock Server
98 ===============================
99
100 Rtc is a simple multiplexer for real-time clock hardware on your platform.
101
102
103 */