Jump to content
Main menu
Main menu
move to sidebar
hide
Navigation
Main page
Recent changes
Random page
Help about MediaWiki
Special pages
Niidae Wiki
Search
Search
Appearance
Create account
Log in
Personal tools
Create account
Log in
Pages for logged out editors
learn more
Contributions
Talk
Editing
Mach (kernel)
(section)
Page
Discussion
English
Read
Edit
View history
Tools
Tools
move to sidebar
hide
Actions
Read
Edit
View history
General
What links here
Related changes
Page information
Appearance
move to sidebar
hide
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
===Second-generation microkernels=== Further analysis demonstrated that the IPC performance problem was not as obvious as it seemed. Recall that a single-side of a syscall took 20μs under BSD<ref name="JuRtBN" /> and 114μs on Mach running on the same system.<ref name="HyeRgh" /> Of the 114, 11 were due to the context switch, identical to BSD.<ref name="hartig97p67" /> An additional 18 were used by the MMU to map the message between user-space and kernel space.<ref name="JuRtBN" /> This adds up to only 29μs, longer than a traditional syscall, but not by much. The rest, the majority of the actual problem, was due to the kernel performing tasks such as checking the message for port access rights.<ref name="singh" /> While it would seem this is an important security concern, in fact, it only makes sense in a UNIX-like system. For instance, a single-user operating system running a [[cell phone]] or [[robot]] might not need any of these features, and this is exactly the sort of system where Mach's pick-and-choose operating system would be most valuable. Likewise Mach caused problems when memory had been moved by the operating system, another task that only really makes sense if the system has more than one address space. [[DOS]] and the early [[Classic Mac OS|Mac OS]] have a [[Single address space operating system|single large address space]] shared by all programs, so under these systems the mapping did not provide any benefits. These realizations led to a series of second generation microkernels, which further reduced the complexity of the system and placed almost all functionality in the user space. For instance, the [[L4 kernel]] (version 2) includes only seven system calls and uses 12k of memory,<ref name="JuRtBN" /> whereas Mach 3 includes about 140 functions and uses about 330k of memory.<ref name="JuRtBN" /> IPC calls under L4 on a 486DX-50 take only 5μs,<ref name="HytGhy" /> faster than a UNIX syscall on the same system, and over 20 times as fast as Mach. Of course this ignores the fact that L4 is not handling permissioning or security; but by leaving this to the user-space programs, they can select as much or as little overhead as they require. The potential performance gains of L4 are tempered by the fact that the user-space applications will often have to provide many of the functions formerly supported by the kernel. In order to test the end-to-end performance, MkLinux in co-located mode was compared with an L4 port running in user-space. L4 added about 5%–10% overhead,<ref name="hartig97p67" /> compared to Mach's 29%.<ref name="hartig97p67" />
Summary:
Please note that all contributions to Niidae Wiki may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see
Encyclopedia:Copyrights
for details).
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)
Search
Search
Editing
Mach (kernel)
(section)
Add topic