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