Rev 132 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 132 | Rev 138 | ||
---|---|---|---|
Line 4... | Line 4... | ||
4 | 4 | ||
5 | <title>Architecture Overview</title> |
5 | <title>Architecture Overview</title> |
6 | 6 | ||
7 | <para>The HelenOS operating system is designed as a relatively small |
7 | <para>The HelenOS operating system is designed as a relatively small |
8 | microkernel assisted with a set of userspace drivers and server tasks. |
8 | microkernel assisted with a set of userspace drivers and server tasks. |
9 | HelenOS is not very radical in what subsystems should or should not be |
9 | HelenOS is not very radical in which subsystems should or should not be |
10 | implemented in the kernel - in some cases, both kernel and userspace drivers |
10 | implemented in the kernel - in some cases, both kernel and userspace drivers |
11 | exist. The reason for creating the system as a microkernel is prosaic. Even |
11 | exist. The reason for creating the system as a microkernel is prosaic. Even |
12 | though it is initially more difficult to get the same level of functionality |
12 | though it is initially more difficult to get the same level of functionality |
13 | from a microkernel than it is in the case of a simple monolithic kernel, a |
13 | from a microkernel than it is in the case of a simple monolithic kernel, a |
14 | microkernel is much easier to maintain once the pieces have been put to work |
14 | microkernel is much easier to maintain once the pieces have been put to work |
Line 95... | Line 95... | ||
95 | <indexterm> |
95 | <indexterm> |
96 | <primary>address space</primary> |
96 | <primary>address space</primary> |
97 | </indexterm> |
97 | </indexterm> |
98 | 98 | ||
99 | <para>Userspace tasks depend on support of address spaces provided by the |
99 | <para>Userspace tasks depend on support of address spaces provided by the |
100 | kernel. Each address space is a set of mutually dijunctive address space |
100 | kernel. Each address space is a set of mutually disjunctive address space |
101 | areas that group pages of common attributes. An address space area is |
101 | areas. An address space area is usually connected to, and backed by, |
102 | usually connected to, and backed by, anonymous memory, executable image of |
102 | anonymous memory, executable image of some program or continuous region of |
103 | some program or continuous region of physical memory. However, swapping |
103 | physical memory. However, swapping pages in and out to external memory is |
104 | pages in and out to external memory is not supported. Address space areas |
104 | not supported. Address space areas can be easily shared among address |
105 | can be easily shared among address spaces.</para> |
105 | spaces.</para> |
106 | </section> |
106 | </section> |
107 | 107 | ||
108 | <section> |
108 | <section> |
109 | <indexterm> |
109 | <indexterm> |
110 | <primary>IPC</primary> |
110 | <primary>IPC</primary> |
Line 140... | Line 140... | ||
140 | 140 | ||
141 | <secondary>- message queue</secondary> |
141 | <secondary>- message queue</secondary> |
142 | </indexterm> |
142 | </indexterm> |
143 | 143 | ||
144 | <para>The abstraction uses terms like phones, calls and answerboxes, but |
144 | <para>The abstraction uses terms like phones, calls and answerboxes, but |
145 | is pretty similar to well-known abstraction of message queues. A task can |
145 | is similar to well-known abstraction of message queues. A task can have |
146 | have multiple simultaneous simplex connections to several other tasks. A |
146 | multiple simultaneous simplex connections to several other tasks. A |
147 | connection leads from one of the source task's phones to the destination |
147 | connection leads from one of the source task's phones to the destination |
148 | task's answerbox. The phones are used as handles for making calls to other |
148 | task's answerbox. The phones are used as handles for making calls to other |
149 | tasks. Calls can be synchronous or asynchronous and can be forwarded from |
149 | tasks. Calls are asynchronous and can be forwarded from one task to |
150 | one task to another.</para> |
150 | another.</para> |
151 | </section> |
151 | </section> |
152 | </chapter> |
152 | </chapter> |
153 | 153 |