1
2/*! @page components Components
3
4RefOS embraces the component-based multi-server operating system design. RefOS's two main components are a process server and a fileserver. The process server runs as the initial thread, and it is responsible for starting the rest of the sysem. Other components of the system include clients, device drivers, file servers, terminal programs, tetris and snake.
5
6@image html component_design.png "Figure 1 - RefOS Components"
7
8@section procserv Process server
9@image html procserv.png "Figure 2 - Process Server"
10
11The process server is the most trusted component in the system. It runs as the initial kernel thread and does not depend on any other component (this avoids deadlock). The process server implementation is single-threaded. The process server also implements the dataspace interface for anonymous memory and acts as the memory manager.
12
13The process server implements the following interfaces:
14
15<ul>
16    <li> Process server interface (naming, memory windows, processes and so on) </li>
17    <li> Dataspace server interface (for anonymous memory) </li>
18    <li> Name server interface (acts as the root name server) </li>
19</ul>
20
21<center>See code here: @ref apps/process_server/src/main.c </center>
22
23@section fileserv File server
24@image html fileserv.png "Figure 3 - File Server"
25
26The file server is more trusted than clients, but it is less trusted than the process server (this avoids deadlock). In RefOS, the file server does not use a disk driver, and the actual file contents are compiled into the file server executable itself using a cpio archive. The file server acts as the main data server in the system.
27
28The file server implements the following interfaces:
29
30<ul>
31    <li> Dataspace server interface (for stored file data) </li>
32    <li> Server connection interface (for clients to connect to it) </li>
33</ul>
34
35<center>See code here: @ref apps/file_server/src/file_server.c </center>
36
37@section conserv  Console Server
38@image html conserv.png "Figure 4 - Console Server"
39
40The console server provides serial and EGA input and output functionality, which is exposed through the dataspace interface. The console server also provides terminal emulation for EGA screen output.
41
42The console server implements the following interfaces:
43
44<ul>
45    <li> Dataspace server interface (for serial input and output and EGA screen devices) </li>
46    <li> Server connection interface (for clients to connect to it) </li>
47</ul>
48
49<center>See code here: @ref apps/console_server/src/console_server.c </center>
50
51@section timeserv  Timer Server
52@image html timeserv.png "Figure 5 - Timer Server"
53
54The timer server provides timer get time and sleep functionality, which is exposed through the dataspace interface.
55
56The timer server implements the following interfaces:
57
58<ul>
59    <li> Dataspace server interface (for timer devices) </li>
60    <li> Server connection interface (for clients to connect to it) </li>
61</ul>
62
63<center>See code here: @ref apps/timer_server/src/timer_server.c </center>
64
65*/
66