Subversion Repositories HelenOS-doc

Rev

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