Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Mach (kernel)
(section)
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" />
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)