summaryrefslogtreecommitdiff
path: root/microkernel/mach/continuation.mdwn
blob: 7a3267f32869502e07ffaa038fd2b16eba570f61 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
[[!meta copyright="Copyright © 2010 Free Software Foundation, Inc."]]

[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts.  A copy of the license
is included in the section entitled [[GNU Free Documentation
License|/fdl]]."]]"""]]

[[Mach]] internally uses *continuation*s for kernel [[thread]] management.

The advantage is that not a full kernel thread stack has to be preserved in
case that a thread is about to enter a blocking state.  This saves space.  It
is not clear this is still worthwhile given today's RAM offerings.  (How many
kernel threads are there, typically?)

And, this would no longer be possible in case Mach were be made a
[[preemptive|preemtion]] kernel.  In the latter case, the kernel itself, that
is, kernel threads can be preempted, and then their full state needs to be
preserved.

[[!tag open_issue_documentation]] <!-- Not linked to from any Mach page.  Move
to GNU Mach pages, as this is only an implementation detail?  -->