Knowledge

Microkernel

Source 📝

147:" to these new systems. New device drivers, protocol stacks, file systems and other low-level systems were being developed all the time. This code was normally located in the monolithic kernel, and thus required considerable work and careful code management to work on. Microkernels were developed with the idea that all of these services would be implemented as user-space programs, like any other, allowing them to be worked on monolithically and started and stopped like any other program. This would not only allow these services to be more easily worked on, but also separated the kernel code to allow it to be finely tuned without worrying about unintended side effects. Moreover, it would allow entirely new operating systems to be "built up" on a common core, aiding OS research. 139:. Its nucleus provided inter-process communication based on message-passing for up to 23 unprivileged processes, out of which 8 at a time were protected from one another. It further implemented scheduling of time slices of programs executed in parallel, initiation and control of program execution at the request of other running programs, and initiation of data transfers to or from peripherals. Besides these elementary mechanisms, it had no built-in strategy for program execution and resource allocation. This strategy was to be implemented by a hierarchy of running programs in which parent processes had complete control over child processes and acted as their operating systems. 425:
lead and only provided a synchronous IPC primitive. Asynchronous IPC could be implemented on top by using helper threads. However, experience has shown that the utility of synchronous IPC is dubious: synchronous IPC forces a multi-threaded design onto otherwise simple systems, with the resulting synchronization complexities. Moreover, an RPC-like server invocation sequentializes client and server, which should be avoided if they are running on separate cores. Versions of L4 deployed in commercial products have therefore found it necessary to add an asynchronous notification mechanism to better support asynchronous communication. This
511:(MTS), in 1967, supported user space drivers (including its file system support), the first operating system to be designed with that capability. Historically, drivers were less of a problem, as the number of devices was small and trusted anyway, so having them in the kernel simplified the design and avoided potential performance problems. This led to the traditional driver-in-the-kernel style of Unix, Linux, and Windows NT. With the proliferation of various kinds of peripherals, the amount of driver code escalated and in modern operating systems dominates the kernel in code size. 351:) for the availability of the message, or is alerted to it via some notification mechanism. Asynchronous IPC requires that the kernel maintains buffers and queues for messages, and deals with buffer overflows; it also requires double copying of messages (sender to kernel and kernel to receiver). In synchronous IPC, the first party (sender or receiver) blocks until the other party is ready to perform the IPC. It does not require buffering or multiple copies, but the implicit rendezvous can make programming tricky. Most programmers prefer asynchronous send and synchronous receive. 441:
indicates that the IPC should fail immediately if the partner is not ready. This approach effectively provides a choice of the two timeout values of zero and infinity. Recent versions of L4 and MINIX have gone down this path (older versions of L4 used timeouts). QNX avoids the problem by requiring the client to specify the reply buffer as part of the message send call. When the server replies the kernel copies the data to the client's buffer, without having to wait for the client to receive the response explicitly.
685:. No comprehensive comparison of performance relative to monolithic systems has been published for those multiserver systems. Furthermore, performance does not seem to be the overriding concern for those commercial systems, which instead emphasize reliably quick interrupt handling response times (QNX) and simplicity for the sake of robustness. An attempt to build a high-performance multiserver operating system was the IBM Sawmill Linux project. However, this project was never completed. 3569: 3559: 33: 417:. Their results explained Mach's poorer performance by higher MCPI and demonstrated that IPC alone is not responsible for much of the system overhead, suggesting that optimizations focused exclusively on IPC will have a limited effect. Liedtke later refined Chen and Bershad's results by making an observation that the bulk of the difference between Ultrix and Mach MCPI was caused by capacity 724:(EAL) 7) has an explicit requirement that the target of evaluation be "simple", an acknowledgment of the practical impossibility of establishing true trustworthiness for a complex system. Again, the term "simple" is misleading and ill-defined. At least the Department of Defense Trusted Computer System Evaluation Criteria introduced somewhat more precise verbiage at the B3/A1 classes: 578:, it is what enables the construction of arbitrary systems on top of a minimal kernel. Any policy built into the kernel cannot be overwritten at user level and therefore limits the generality of the microkernel. Policy implemented in user-level servers can be changed by replacing the servers (or letting the application choose between competing servers offering similar services). 794:
degree of assurance which goes beyond even CC EAL7. It was followed by proofs of security-enforcement properties of the API, and a proof demonstrating that the executable binary code is a correct translation of the C implementation, taking the compiler out of the TCB. Taken together, these proofs establish an end-to-end proof of security properties of the kernel.
383:, avoids traversing scheduling queues during IPC by leaving threads that block during IPC in the ready queue. Once the scheduler is invoked, it moves such threads to the appropriate waiting queue. As in many cases a thread gets unblocked before the next scheduler invocation, this approach saves significant work. Similar approaches have since been adopted by 469:. The necessary servers are started at system startup and provide services, such as file, network, and device access, to ordinary application programs. With such servers running in the environment of a user application, server development is similar to ordinary application development, rather than the build-and-boot process needed for kernel development. 170:, proved to have disappointing performance, but the inherent advantages appeared so great that it was a major line of research into the late 1990s. However, during this time the speed of computers grew greatly in relation to networking systems, and the disadvantages in performance came to overwhelm the advantages in development terms. 496:(DMA), and therefore can write to arbitrary locations of physical memory, including various kernel data structures. Such drivers must therefore be trusted. It is a common misconception that this means that they must be part of the kernel. In fact, a driver is not inherently more or less trustworthy by being part of the kernel. 754:
More recent work on microkernels has been focusing on formal specifications of the kernel API, and formal proofs of the API's security properties and implementation correctness. The first example of this is a mathematical proof of the confinement mechanisms in EROS, based on a simplified model of the
480:
connections: If this server is restarted, applications will experience a "lost" connection, a normal occurrence in a networked system. For other services, failure is less expected and may require changes to application code. For QNX, restart capability is offered as the QNX High Availability Toolkit.
339:
is, strictly defined, also an inter-process communication mechanism, but the abbreviation IPC usually refers to message passing only, and it is the latter that is particularly relevant to microkernels. IPC allows the operating system to be built from a number of smaller programs called servers, which
670:
While these results demonstrate that the poor performance of systems based on first-generation microkernels is not representative for second-generation kernels such as L4, this constitutes no proof that microkernel-based systems can be built with good performance. It has been shown that a monolithic
499:
While running a device driver in user space does not necessarily reduce the damage a misbehaving driver can cause, in practice it is beneficial for system stability in the presence of buggy (rather than malicious) drivers: memory-access violations by the driver code itself (as opposed to the device)
374:
is performed from the sender directly to the receiver. If, as in L4, part or all of the message is passed in registers, this transfers the in-register part of the message without any copying at all. Furthermore, the overhead of invoking the scheduler is avoided; this is especially beneficial in the
134:
fertilizer plant in Poland. The computer used a small real-time operating system tailored for the needs of the plant. Brinch Hansen and his team became concerned with the lack of generality and reusability of the RC 4000 system. They feared that each installation would require a different operating
793:
In the case of seL4, complete formal verification of the implementation has been achieved, i.e. a mathematical proof that the kernel's implementation is consistent with its formal specification. This provides a guarantee that the properties proved about the API actually hold for the real kernel, a
616:
system and virtual-memory-manager design that allows implementing page-fault handling and swapping in usermode servers in a safe way. Since all services are performed by usermode programs, efficient means of communication between programs are essential, far more so than in monolithic kernels. The
424:
In a client-server system, most communication is essentially synchronous, even if using asynchronous primitives, as the typical operation is a client invoking a server and then waiting for a reply. As it also lends itself to more efficient implementation, most microkernels generally followed L4's
241:
Although major work on microkernels had largely ended, experimenters continued development. It has since been shown that many of the performance problems of earlier designs were not a fundamental limitation of the concept, but instead due to the designer's desire to use single-purpose systems to
158:
kernel was an early example, introduced in 1986 and used in a PC with relative commercial success. The lack of memory protection, considered in other respects a flaw, allowed this kernel to have very high message-passing performance because it did not need to copy data while exchanging messages
440:
on IPC calls, which limit the blocking time. In practice, choosing sensible timeout values is difficult, and systems almost inevitably use infinite timeouts for clients and zero timeouts for servers. As a consequence, the trend is towards not providing arbitrary timeouts, but only a flag which
705:(TCB) should be kept minimal. As the kernel (the code that executes in the privileged mode of the hardware) has unvetted access to any data and can thus violate its integrity or confidentiality, the kernel is always part of the TCB. Minimizing it is natural in a security-driven design. 642:
if the drivers are implemented as processes, or a function call if they are implemented as procedures. In addition, passing actual data to the server and back may incur extra copying overhead, while in a monolithic system the kernel can directly access the data in the client's buffers.
914:, which claimed to be a microkernel while Shapiro considered it monolithic, essentially unstructured, and slower than the systems it sought to replace. Subsequent reuse of and response to the term, including the picokernel coinage, suggest that the point was largely missed. Both 2276: 728:"The TCB shall complete, conceptually simple protection mechanisms with precisely defined semantics. Significant system engineering shall be directed toward minimizing the complexity of the TCB, as well as excluding from the TCB those modules that are not protection-critical." 688:
It has been shown in the meantime that user-level device drivers can come close to the performance of in-kernel drivers even for such high-throughput, high-interrupt devices as Gigabit Ethernet. This seems to imply that high-performance multi-server systems are possible.
671:
Linux server ported to L4 exhibits only a few percent overhead over native Linux. However, such a single-server system exhibits few, if any, of the advantages microkernels are supposed to provide by structuring operating system functionality into separate servers.
592:, which are not part of the kernel. Typically, this means that they are packaged with the kernel in the boot image, and the kernel supports a bootstrap protocol that defines how the drivers are located and started; this is the traditional bootstrap procedure of 453:
programs like any others, except that the kernel grants some of them privileges to interact with parts of physical memory that are otherwise off limits to most programs. This allows some servers, particularly device drivers, to interact directly with hardware.
142:
Following Brinch Hansen's work, microkernels have been developed since the 1970s. The term microkernel itself first appeared no later than 1981. Microkernels were meant as a response to changes in the computer world, and to several challenges adapting existing
666:
that through careful design and implementation, and especially by following the minimality principle, IPC costs could be reduced by more than an order of magnitude compared to Mach. L4's IPC performance is still unbeaten across a range of architectures.
429:-like mechanism does not carry data and therefore does not require buffering by the kernel. By having two forms of IPC, they have nonetheless violated the principle of minimality. Other versions of L4 have switched to asynchronous IPC completely. 173:
Many attempts were made to adapt the existing systems to have better performance, but the overhead was always considerable and most of these efforts required the user-space programs to be moved back into the kernel. By 2000, most large-scale
608:
in the kernel to simplify booting. A microkernel-based system may boot via multiboot compatible boot loader. Such systems usually load statically-linked servers to make an initial bootstrap or mount an OS image to continue bootstrapping.
2304: 2026:
Klein, Gerwin; Elphinstone, Kevin; Heiser, Gernot; Andronick, June; Cock, David; Derrin, Philip; Elkaduwe, Dhammika; Engelhardt, Kai; Kolanski, Rafal; Norrish, Michael; Sewell, Thomas; Tuch, Harvey; Winwood, Simon (October 2009).
625:
On most mainstream processors, obtaining a service is inherently more expensive in a microkernel-based system than a monolithic system. In the monolithic system, the service is obtained by a single system call, which requires two
273:
Early operating system kernels were rather small, partly because computer memory was limited. As the capability of computers grew, the number of devices the kernel had to control also grew. Throughout the early history of
500:
may still be caught by the memory-management hardware. Furthermore, many devices are not DMA-capable, their drivers can be made untrusted by running them in user space. Recently, an increasing number of computers feature
366:. These include an IPC system call that supports a send as well as a receive operation, making all IPC synchronous, and passing as much data as possible in registers. Furthermore, Liedtke introduced the concept of the 2335:
Black, D.L., Golub, D.B., Julin, D.P., Rashid, R.F., Draves, R.P., Dean, R.W., Forin, A., Barrera, J., Tokuda, H., Malan, G., and Bohman, D. (March 1992). "Microkernel Operating System Architecture and Mach".
746:
kernel at the time. The study concluded that 40% of the issues could not occur at all in a formally verified microkernel, and only 4% of the issues would remain entirely unmitigated in such a system.
567:
A concept is tolerated inside the microkernel only if moving it outside the kernel, i.e., permitting competing implementations, would prevent the implementation of the system's required functionality.
308:
The microkernel was intended to address this growth of kernels and the difficulties that resulted. In theory, the microkernel design allows for easier management of code due to its division into
301:
and a number of "virtual" devices that allowed the existing programs to work 'invisibly' over the network. This growth continued for many years, resulting in kernels with millions of lines of
571:
Everything else can be done in a usermode program, although device drivers implemented as user programs may on some processor architectures require special privileges to access I/O hardware.
2171:
Klein, Gerwin; Andronick, June; Elphinstone, Kevin; Murray, Toby; Sewell, Thomas; Kolanski, Rafal; Heiser, Gernot (February 2014). "Comprehensive Formal Verification of an OS Microkernel".
436:
attack on a server by sending a request and never attempting to receive the reply. Therefore, synchronous IPC must provide a means to prevent indefinite blocking. Many microkernels provide
697:
The security benefits of microkernels have been frequently discussed. In the context of security the minimality principle of microkernels is, some have argued, a direct consequence of the
1345: 738:
In 2018, a paper presented at the Asia-Pacific Systems Conference claimed that microkernels were demonstrably safer than monolithic kernels by investigating all published critical
638:). In the microkernel-based system, the service is obtained by sending an IPC message to a server, and obtaining the result in another IPC message from the server. This requires a 476:. However, part of the system state is lost with the failing server, hence this approach requires applications to cope with failure. A good example is a server responsible for 347:
IPC can be synchronous or asynchronous. Asynchronous IPC is analogous to network communication: the sender dispatches a message and continues executing. The receiver checks (
162:
The same mechanisms that allowed the kernel to be distributed into user space also allowed the system to be distributed across network links. The first microkernels, notably
2334: 286:
implementations. When address spaces increased from 16 to 32 bits, kernel design was no longer constrained by the hardware architecture, and kernels began to grow larger.
1693: 617:
design of the IPC system makes or breaks a microkernel. To be effective, the IPC system must not only have low overhead, but also interact well with CPU scheduling.
340:
are used by other programs on the system, invoked via IPC. Most or all support for peripheral hardware is handled in this fashion, with servers for device drivers,
581:
For efficiency, most microkernels contain schedulers and manage timers, in violation of the minimality principle and the principle of policy-mechanism separation.
432:
As synchronous IPC blocks the first party until the other is ready, unrestricted use could easily lead to deadlocks. Furthermore, a client could easily mount a
135:
system so they started to investigate novel and more general ways of creating software for the RC 4000. In 1969, their effort resulted in the completion of the
246:
and relying on the processor to enforce concepts normally supported in software led to a new series of microkernels with dramatically improved performance.
1607: 2048: 519:
As a microkernel must allow building arbitrary operating system services on top, it must provide some core functionality. At a minimum, this includes:
2630: 941: 1881:
Leslie, Ben; Chubb, Peter; FitzRoy-Dale, Nicholas; Götz, Stefan; Gray, Charles; Macpherson, Luke; Potts, Daniel; Shen, Yueting; Elphinstone, Kevin;
3660: 2355: 2326: 1284: 2420: 701:, according to which all code should have only the privileges needed to provide required functionality. Minimality requires that a system's 3563: 755:
EROS API. More recently (in 2007) a comprehensive set of machine-checked proofs was performed of the properties of the protection model of
1995: 1808: 3607: 1586: 905: 297:
began the era of larger kernels. In addition to operating a basic system consisting of the CPU, disks and printers, BSD added a complete
504:, many of which can be used to restrict a device's access to physical memory. This also allows user-mode drivers to become untrusted. 130:
where he led software development efforts for the RC 4000 computer. In 1967, Regnecentralen was installing a RC 4000 prototype in the
779: 896:
A kernel where the total amount of kernel code, i.e. code executing in the privileged mode of the hardware, is very small. The term
354:
First-generation microkernels typically supported synchronous as well as asynchronous IPC, and suffered from poor IPC performance.
2426: 457:
A basic set of servers for a general-purpose microkernel includes file system servers, device driver servers, networking servers,
2087: 3222: 3936: 3907: 2463: 1703: 1561:
Elphinstone, Kevin; Heiser, Gernot (November 2013). "From L3 to seL4: What Have We Learnt in 20 Years of L4 Microkernels?".
837: 596:. Some microkernels simplify this by placing some key drivers inside the kernel (in violation of the minimality principle), 1780:. 1st International Workshop on Microkernels for Embedded Systems. Sydney, Australia: NICTA. pp. 11–21. Archived from 739: 646:
Performance is therefore a potential issue in microkernel systems. The experience of first-generation microkernels such as
1974: 948:
There is also at least one case where the term nanokernel is used to refer not to a small kernel, but one that supports a
358:
assumed the design and implementation of the IPC mechanisms to be the underlying reason for this poor performance. In his
1775: 1754: 713: 658:
showed that Mach's performance problems were the result of poor design and implementation, specifically Mach's excessive
3216: 3210: 2368: 1246:
Rashid, Richard; Robertson, George (December 1981). "Accent: A communication oriented network operating system kernel".
3339: 2679: 575: 2264: 1828: 312:
services. This also allows for increased security and stability resulting from the reduced amount of code running in
83:, the microkernel may be the only software executing at the most privileged level, which is generally referred to as 3711: 3655: 2972: 783: 756: 3630: 3600: 3364: 2686: 552: 136: 1205:
Wulf, William; Cohen, Ellis; Corwin, William; Jones, Anita; Levin, Roy; Pierson, C.; Pollack, Fred (June 1974).
708:
Consequently, microkernel designs have been used for systems designed for high-security applications, including
3823: 3721: 3248: 3204: 1417: 774:
as a first-class concern, novel approaches to kernel resource management, and a design goal of suitability for
290: 2703: 1614: 868: 4101: 3650: 3635: 3403: 2402: 993: 320:, only the networking service's memory would be corrupted, leaving the rest of the system still functional. 3696: 3681: 3640: 2895: 1637: 771: 698: 682: 242:
implement as many of these services as possible. Using a more pragmatic approach to the problem, including
17: 331:(IPC) is any mechanism which allows separate processes to communicate with each other, usually by sending 3862: 3809: 2817: 2396: 1008: 613: 540: 437: 328: 131: 69: 2062: 1632: 421:
and concluding that drastically reducing the cache working set of a microkernel will solve the problem.
305:. As a result of this growth, kernels were prone to bugs and became increasingly difficult to maintain. 3877: 3716: 3593: 3544: 3391: 3141: 1499: 933: 721: 675: 450: 348: 3912: 3731: 3691: 3686: 3645: 3431: 3409: 3306: 3048: 2979: 2934: 2913: 2852: 2484: 2456: 961: 858: 806: 767: 2255: 2156: 1173: 3955: 3842: 3706: 3424: 3385: 3260: 2966: 2845: 1866: 1480: 863: 787: 631: 508: 2207: 1856:; Elphinstone, Kevin J.; Uhlig, Volkmar; Tidswell, Jonathon E.; Deller, Luke; et al. (2000). 1298: 3701: 3377: 3172: 2919: 1331: 1057: 477: 925:
A virtualization layer underneath an operating system, which is more correctly referred to as a
4089: 4028: 3917: 3897: 3846: 3804: 2762: 2722: 2250: 2151: 2001: 1861: 1475: 1168: 998: 976: 702: 395: 341: 2413: 4122: 3872: 3838: 3740: 3676: 3573: 3088: 3019: 2514: 2493: 2349: 2320: 843: 593: 556: 535: 376: 359: 2407: 2028: 1948:"The Jury Is In: Monolithic OS Design Is Flawed: Microkernel-based Designs Improve Security" 1730:. 6th Workshop on Hot Topics in Operating Systems. Cape Cod, MA, USA: IEEE. pp. 28–31. 4069: 4043: 3552: 3397: 3059: 2449: 2141: 1659:
Alexander, Michael T. (1971). "Organization and Features of the Michigan Terminal System".
1029: 493: 2782: 2389:
An assessment of the present and future state of microkernel based OSes as of January 1994
1474:. 14th ACM Symposium on Operating System Principles. Asheville, NC, USA. pp. 175–88. 574:
Related to the minimality principle, and equally important for microkernel design, is the
8: 4038: 3990: 3867: 3511: 1920: 937: 473: 3975: 3882: 3420: 2955: 2638: 2296: 2188: 1902: 1834: 1674: 1563:
SOSP '13 Proceedings of the Twenty-Fourth ACM Symposium on Operating Systems Principles
1437: 1395: 1278: 1228: 1186: 531: 426: 363: 151: 65: 2715: 2095: 4084: 4033: 3965: 3922: 3763: 3496: 3481: 3461: 2541: 2260: 1954:. Jeju Island, Republic of Korea: Association for Computing Machinery. pp. 1–7. 1947: 1824: 1813:
Proceedings of the sixteenth ACM symposium on Operating systems principles - SOSP '97
1748: 1699: 981: 466: 433: 123: 107: 2234: 1678: 1507:
SOSP '93 Proceedings of the fourteenth ACM symposium on Operating systems principles
4064: 3616: 2733: 2520: 2288: 2192: 2180: 2122: 2054: 1955: 1906: 1894: 1838: 1816: 1777:
High-performance microkernels and virtualisation on ARM and segmented architectures
1731: 1664: 1566: 1541: 1538:
SOSP '95 Proceedings of the fifteenth ACM symposium on Operating systems principles
1510: 1441: 1429: 1399: 1385: 1251: 1232: 1218: 1190: 1178: 57: 41: 3001: 2602: 922:
have subsequently come to have the same meaning expressed by the term microkernel.
4008: 3970: 3941: 3466: 3164: 2559: 2300: 1101: 717: 332: 317: 258: 76: 2376: 1248:
SOSP '81 Proceedings of the eighth ACM symposium on Operating systems principles
1153: 418: 4094: 4018: 3980: 3852: 3506: 3491: 3471: 2993: 2696: 2609: 2509: 1980: 1853: 1804: 1719: 1533: 1467: 1078: 826: 775: 663: 655: 639: 458: 379:(RPC) type fashion by a client invoking a server. Another optimization, called 371: 355: 298: 262: 257:, but the latter make no claim to minimality and are specialized to supporting 219: 167: 127: 92: 3148: 2053:. 1st Workshop on Isolation and Integration in Embedded Systems. Glasgow, UK. 1898: 1735: 1325: 766:, characterised by a security-oriented API with resource access controlled by 4116: 4003: 3960: 3799: 3753: 3516: 3486: 2657: 2146:. IIES'09: Second Workshop on Isolation and Integration in Embedded Systems. 1882: 1771: 1750: 1723: 1413: 988: 971: 911: 848: 647: 589: 548: 524: 489: 403: 336: 279: 243: 183: 175: 163: 88: 61: 36:
Structure of monolithic and microkernel-based operating systems, respectively
2126: 1959: 1669: 1571: 1433: 1125: 3887: 3521: 3291: 3271: 3074: 2901: 2596: 2441: 2247:
Proceedings of the Workshop on Micro-kernels and Other Kernel Architectures
2143:
Taming Subsystems – Capabilities as Universal Resource Access Control in L4
155: 99:, are typically removed from the microkernel itself and are instead run in 1820: 1759:. USENIX Annual Technical Conference. Annaheim, CA, USA. pp. 264–278. 1546: 1514: 1390: 1373: 1255: 1223: 1206: 1182: 4013: 3995: 3778: 3768: 3351: 2997: 1781: 605: 313: 302: 283: 195: 144: 96: 84: 2433: 2292: 1923: 1860:. 9th ACM SIGOPS European Workshop. Kolding, Denmark. pp. 109–114. 936:
that forms the lowest-level part of a kernel, sometimes used to provide
3453: 3357: 3321: 2673: 1661:
Proceedings of the November 16–18, 1971, Fall Joint Computer Conference
1500:"The Impact of Operating System Structure on Memory System Performance" 949: 926: 873: 414: 309: 254: 231: 223: 215: 114:
microkernel, for example, has only approximately 12,000 lines of code.
100: 2036:. 22nd ACM Symposium on Operating System Principles. Big Sky, MT, USA. 1749:
Gray, Charles; Chapman, Matthew; Chubb, Peter; Mosberger-Tang, David;
150:
Microkernels were a very hot topic in the 1980s when the first usable
106:
In terms of the source code size, microkernels are often smaller than
3950: 3857: 3783: 3748: 3501: 3476: 3240: 3110: 3100: 3008: 2794: 2754: 2531: 2392: 2274: 2238: 2147: 2088:"TUD Home: Operating Systems: Research: Microkernel & Hypervisor" 2047:
Elkaduwe, Dhammika; Derrin, Philip; Elphinstone, Kevin (April 2008).
1885:(September 2005). "User-level device drivers: achieved performance". 1003: 966: 822: 674:
A number of commercial multi-server systems exist, in particular the
659: 635: 461:, and user interface device servers. This set of servers (drawn from 250: 202:
7.3 kernel) with code from BSD UNIX, and this kernel is also used in
80: 3585: 2205: 2184: 2058: 1445: 4079: 3327: 3284: 3080: 2888: 2768: 2664: 2548: 651: 278:, kernels were generally small, even though they contained various 227: 53: 654:
showed that systems based on them performed very poorly. However,
4074: 3773: 3443: 3370: 3333: 3253: 3230: 3199: 3178: 3153: 3126: 3119: 3028: 2809: 2800: 2709: 1728:
Achieved IPC performance (still the foundation for extensibility)
1718: 832: 733:
Department of Defense Trusted Computer System Evaluation Criteria
585: 388: 211: 111: 2119:
NOVA: A Microhypervisor-Based Secure Virtualization Architecture
2094:. Technische Universität Dresden. 12 August 2010. Archived from 543:, required to invoke servers running in their own address spaces 3437: 3314: 3068: 3041: 3034: 2960: 2949: 2943: 2864: 2833: 2615: 2170: 2025: 817: 709: 597: 530:
Some execution abstraction to manage CPU allocation, typically
407: 399: 235: 122:
Microkernels trace their roots back to Danish computer pioneer
32: 1994:
Elkaduwe, Dhammika; Klein, Gerwin; Elphinstone, Kevin (2007).
4023: 3190: 2986: 2907: 2858: 2788: 2775: 2744: 2586: 2503: 1802: 1722:; Elphinstone, Kevin; Schönberg, Sebastian; Härtig, Hermann; 900:
was sometimes used to further emphasize small size. The term
853: 743: 601: 501: 394:
In a series of experiments, Chen and Bershad compared memory
199: 191: 179: 27:
Kernel that provides fewer services than a traditional kernel
2110: 2050:
Kernel design for isolation and assurance of physical memory
2871: 2574: 2568: 2245:
Dan Hildebrand (1992). "An Architectural Overview of QNX".
1880: 778:, besides the usual goal of high performance. Examples are 410: 294: 275: 207: 226:, uses a hybrid kernel design. As of 2012, the Mach-based 4059: 3345: 2839: 2646: 2206:
David L. Mills and Poul-Henning Kamp (28 November 2000).
2046: 1979:. IEEE Conference on Security and Privacy. Archived from 1851: 812: 678: 465:) provides roughly the set of services offered by a Unix 462: 384: 203: 187: 2021: 2019: 1993: 1207:"HYDRA: The Kernel of a Multiprocessor Operating System" 472:
Additionally, many "crashes" can be corrected by simply
2421:
Linus Torvalds about the microkernels again, 2006.05.09
1952:
Proceedings of the 9th Asia-Pacific Workshop on Systems
1695:
Lions' Commentary on UNIX 6th Edition, with Source Code
1418:"Are Virtual-Machine Monitors Microkernels Done Right?" 230:
is also functional and included in testing versions of
56:
that can provide the mechanisms needed to implement an
514: 316:. For example, if a networking service crashed due to 2016: 1540:. Copper Mountain Resort, CO, USA. pp. 237–250. 1498:
Chen, J. Bradley; Bershad, Brian N. (December 1993).
507:
User-mode drivers actually predate microkernels. The
2277:"Can We Make Operating Systems Reliable and Secure?" 1845: 1416:; Uhlig, Volkmar; LeVasseur, Joshua (January 2006). 1412: 1204: 1154:"The Nucleus of a Multiprogramming Operating System" 1103:
A Programmer's Story: The Life of a Computer Pioneer
2133: 1874: 1763: 2414:Can We Make Operating Systems Reliable and Secure? 2275:Tanenbaum, A., Herder, J. and Bos, H. (May 2006). 2140:Lackorzynski, Adam; Warg, Alexander (March 2009). 1493: 1491: 1262: 1250:. Pacific Grove, California, USA. pp. 64–75. 1151: 362:he pioneered methods that lowered IPC costs by an 87:. Traditional operating system functions, such as 2121:. Eurosys 2010. Paris, France. pp. 209–222. 1997:Verified Protection Model of the seL4 Microkernel 1946:Biggs, Simon; Lee, Damon; Heiser, Gernot (2018). 1936:Tanenbaum, A., Herder, J. and Bos, H. (May 2006). 1712: 1560: 4114: 2139: 1769: 1554: 940:functionality to normal operating systems, like 370:, where during an IPC execution an (incomplete) 2164: 1488: 1245: 904:was coined by Jonathan S. Shapiro in the paper 265:frequently finds use in a hypervisor capacity. 2244: 2117:Steinberg, Udo; Kauer, Bernhard (April 2010). 2116: 2040: 1945: 1852:Gefflaut, Alain; Jaeger, Trent; Park, Yoonho; 323: 3601: 3564:Category: Microkernel-based operating systems 2457: 1536:(December 1995). "On µ-Kernel Construction". 1528: 1526: 1524: 1367: 1365: 1363: 1346:"Porting UNIX/Linux Applications to Mac OS X" 1123: 1099: 662:footprint. Liedtke demonstrated with his own 190:, which combines a heavily modified (hybrid) 2471: 2354:: CS1 maint: multiple names: authors list ( 2325:: CS1 maint: multiple names: authors list ( 1742: 1406: 1030:"Toward a True Microkernel Operating System" 559:. It has since been formalised in Liedtke's 2000:. submitted for publication. Archived from 1809:"The performance of μ-kernel-based systems" 1726:; Islam, Nayeem; Jaeger, Trent (May 1997). 1497: 612:A key component of a microkernel is a good 178:kernel efforts had ended, although Apple's 3608: 3594: 2464: 2450: 1887:Journal of Computer Science and Technology 1685: 1633:"I/O, I/O, It's Off to Virtual Work We Go" 1521: 1460: 1360: 1283:: CS1 maint: location missing publisher ( 1268: 1117: 1093: 126:and his tenure in Danish computer company 2408:The Tanenbaum-Torvalds Debate, 1992.01.29 2254: 2155: 2030:seL4: Formal verification of an OS kernel 1865: 1796: 1668: 1658: 1570: 1565:. Farmington, PA, USA. pp. 133–150. 1545: 1479: 1389: 1222: 1172: 1127:RC 4000 Software: Multiprogramming System 588:) of a microkernel-based system requires 527:, required for managing memory protection 60:(OS). These mechanisms include low-level 3109: 1976:Verifying the EROS Confinement Mechanism 1972: 1509:. Asheville, NC, USA. pp. 120–133. 1327:WWDC 2000 Session 106 - Mac OS X: Kernel 1239: 1071: 31: 1807:; Schönberg, Sebastian (October 1997). 1624: 1532: 1466: 1371: 762:This has led to what is referred to as 14: 4115: 2366: 2235:Scientific articles about microkernels 2082: 2080: 1334:from the original on 11 December 2021. 1197: 1028:Herder, Jorrit N. (23 February 2005). 1027: 3615: 3589: 2445: 1973:Shapiro, Jonathan S.; Weber, Samuel. 1919: 1691: 1323: 720:(CC) at the highest assurance level ( 547:This minimal design was pioneered by 253:. They also have much in common with 2199: 2173:ACM Transactions on Computer Systems 1924:"Tanenbaum-Torvalds debate, part II" 1630: 449:Microkernel servers are essentially 249:Microkernels are closely related to 154:were being introduced.. The AmigaOS 2077: 1803:Härtig, Hermann; Hohmuth, Michael; 1756:Itanium—a system implementor's tale 1608:"The QNX High Availability Toolkit" 1422:ACM SIGOPS Operating Systems Review 802:Some examples of microkernels are: 749: 515:Essential components and minimality 375:common case where IPC is used in a 24: 2434:Tanenbaum-Torvalds Debate: Part II 2228: 1663:. Vol. 40. pp. 589–591. 1372:Liedtke, Jochen (September 1996). 1133:(Technical report). Regnecentralen 907:The KeyKOS NanoKernel Architecture 604:are examples. Some even include a 576:separation of mechanism and policy 474:stopping and restarting the server 75:If the hardware provides multiple 25: 4134: 2367:Varhol, Peter D. (January 1994). 2338:Journal of Information Processing 1271:Amiga ROM Kernel Reference Manual 1124:Brinch Hansen, Per (April 1969). 523:Some mechanisms for dealing with 484: 182:, released in 2001, still uses a 3712:Object-oriented operating system 3568: 3567: 3558: 3557: 1858:The Sawmill multiserver approach 1815:. Vol. 31. pp. 66–77. 910:. It was a sardonic response to 52:) is the near-minimum amount of 2476: 1987: 1966: 1939: 1930: 1913: 1698:. Peer-To-Peer Communications. 1652: 1631:Wong, William (27 April 2007). 1600: 1579: 1338: 1317: 1299:"CMU CS Project Mach Home Page" 1291: 344:, file systems, graphics, etc. 268: 137:RC 4000 Multiprogramming System 3722:Supercomputer operating system 2331:-the basic reliable reference. 1472:Improving IPC by kernel design 1145: 1050: 1021: 716:and military systems. In fact 620: 291:Berkeley Software Distribution 13: 1: 1692:Lions, John (1 August 1977). 1587:"Synchronous Message Passing" 1014: 879: 764:third-generation microkernels 159:between user-space programs. 3697:Just enough operating system 3682:Distributed operating system 1585: 1305:. Carnegie Mellon University 699:principle of least privilege 630:(changes of the processor's 555:and the hypervisor of IBM's 7: 3810:User space and kernel space 2818:Multi-Environment Real-Time 2397:Portland Pattern Repository 2360:– the basic Mach reference. 2092:Faculty of Computer Science 1374:"Towards Real Microkernels" 1152:Brinch Hansen, Per (1970). 1100:Brinch Hansen, Per (2004). 1009:Multi-Environment Real-Time 955: 797: 692: 541:Inter-process communication 329:Inter-process communication 324:Inter-process communication 70:inter-process communication 10: 4139: 3717:Real-time operating system 2369:"Small Kernels Hit It Big" 2271:– the basic QNX reference. 934:hardware abstraction layer 892:historically referred to: 722:Evaluation Assurance Level 444: 402:with those of microkernel 117: 4052: 3989: 3935: 3913:Multilevel feedback queue 3908:Fixed-priority preemptive 3896: 3831: 3822: 3792: 3739: 3730: 3692:Hobbyist operating system 3687:Embedded operating system 3669: 3623: 3530: 3452: 3419: 3270: 3239: 3189: 3163: 3099: 3058: 3018: 2933: 2880: 2753: 2743: 2732: 2585: 2558: 2530: 2492: 2483: 2403:Tanenbaum–Torvalds debate 1899:10.1007/s11390-005-0654-4 1736:10.1109/HOTOS.1997.595177 1378:Communications of the ACM 1269:Sassenrath, Carl (1986). 1211:Communications of the ACM 1161:Communications of the ACM 994:Tanenbaum–Torvalds debate 962:Kernel (operating system) 85:supervisor or kernel mode 3956:General protection fault 3707:Network operating system 3661:User features comparison 2427:Debunking Linus's Latest 509:Michigan Terminal System 299:TCP/IP networking system 3702:Mobile operating system 2127:10.1145/1755913.1755935 1960:10.1145/3265723.3265733 1670:10.1145/1478873.1478951 1572:10.1145/2517349.2522720 1434:10.1145/1113361.1113363 1081:. IEEE Computer Society 342:network protocol stacks 3805:Loadable kernel module 3574:Category: Microkernels 999:Trusted computing base 977:Loadable kernel module 736: 703:trusted computing base 569: 396:cycles per instruction 132:Zakłady Azotowe Puławy 48:(often abbreviated as 37: 3873:Process control block 3839:Computer multitasking 3677:Disk operating system 1821:10.1145/268998.266660 1547:10.1145/224056.224075 1515:10.1145/168619.168629 1391:10.1145/234215.234473 1256:10.1145/800216.806593 1224:10.1145/355616.364017 1183:10.1145/362258.362278 844:L4 microkernel family 726: 565: 536:scheduler activations 398:(MCPI) of monolithic 377:remote procedure call 368:direct process switch 35: 4044:Virtual tape library 3636:Forensic engineering 3553:Open-source software 3060:Java virtual machine 2249:. pp. 113–126. 1921:Tanenbaum, Andrew S. 561:minimality principle 494:direct memory access 222:and continuing with 4053:Supporting concepts 4039:Virtual file system 3512:Andrew S. Tanenbaum 2293:10.1109/MC.2006.156 2004:on 29 November 2011 1079:"Per Brinch Hansen" 759:, a version of L4. 492:frequently perform 152:local area networks 3976:Segmentation fault 3824:Process management 2432:Tanenbaum, A. S. " 2412:Tanenbaum, A. S. " 1770:van Schaik, Carl; 1620:on 24 August 2005. 1448:on 13 January 2014 1330:. 14 minutes in. 952:clock resolution. 413:server running in 364:order of magnitude 108:monolithic kernels 38: 4110: 4109: 3966:Memory protection 3937:Memory management 3931: 3930: 3923:Shortest job next 3818: 3817: 3617:Operating systems 3583: 3582: 3497:James G. Mitchell 3482:Per Brinch Hansen 3301: 3300: 3136: 3135: 2929: 2928: 2625: 2624: 2542:Mac OS nanokernel 1705:978-1-57398-013-5 1638:Electronic Design 1470:(December 1993). 1428:(1). ACM: 95–99. 982:Monolithic kernel 676:real-time systems 600:and the original 467:monolithic kernel 434:denial-of-service 124:Per Brinch Hansen 16:(Redirected from 4130: 4065:Computer network 3829: 3828: 3737: 3736: 3610: 3603: 3596: 3587: 3586: 3571: 3570: 3561: 3560: 3107: 3106: 2935:Capability-based 2751: 2750: 2741: 2740: 2490: 2489: 2466: 2459: 2452: 2443: 2442: 2393:MicroKernel page 2388: 2386: 2384: 2375:. Archived from 2359: 2353: 2345: 2330: 2324: 2316: 2314: 2312: 2303:. Archived from 2270: 2258: 2222: 2221: 2219: 2217: 2212: 2208:"The Nanokernel" 2203: 2197: 2196: 2168: 2162: 2161: 2159: 2137: 2131: 2130: 2114: 2108: 2107: 2105: 2103: 2084: 2075: 2074: 2072: 2070: 2065:on 24 April 2010 2061:. Archived from 2044: 2038: 2037: 2035: 2023: 2014: 2013: 2011: 2009: 1991: 1985: 1984: 1983:on 3 March 2016. 1970: 1964: 1963: 1943: 1937: 1934: 1928: 1927: 1917: 1911: 1910: 1878: 1872: 1871: 1869: 1849: 1843: 1842: 1800: 1794: 1793: 1791: 1789: 1784:on 26 April 2007 1774:(January 2007). 1767: 1761: 1760: 1746: 1740: 1739: 1716: 1710: 1709: 1689: 1683: 1682: 1672: 1656: 1650: 1649: 1647: 1645: 1628: 1622: 1621: 1619: 1613:. Archived from 1612: 1604: 1598: 1597: 1595: 1593: 1583: 1577: 1576: 1574: 1558: 1552: 1551: 1549: 1530: 1519: 1518: 1504: 1495: 1486: 1485: 1483: 1464: 1458: 1457: 1455: 1453: 1444:. Archived from 1410: 1404: 1403: 1393: 1369: 1358: 1357: 1355: 1353: 1342: 1336: 1335: 1321: 1315: 1314: 1312: 1310: 1295: 1289: 1288: 1282: 1274: 1266: 1260: 1259: 1243: 1237: 1236: 1226: 1201: 1195: 1194: 1176: 1158: 1149: 1143: 1142: 1140: 1138: 1132: 1121: 1115: 1114: 1112: 1110: 1097: 1091: 1090: 1088: 1086: 1075: 1069: 1068: 1066: 1064: 1054: 1048: 1047: 1045: 1043: 1034: 1025: 750:Third generation 734: 406:combined with a 259:virtual machines 218:, starting with 68:management, and 58:operating system 42:computer science 21: 4138: 4137: 4133: 4132: 4131: 4129: 4128: 4127: 4113: 4112: 4111: 4106: 4048: 4009:Defragmentation 3994: 3985: 3971:Protection ring 3940: 3927: 3899: 3892: 3814: 3788: 3726: 3665: 3619: 3614: 3584: 3579: 3556: 3526: 3467:Thomas Bushnell 3448: 3415: 3297: 3266: 3235: 3185: 3159: 3132: 3095: 3054: 3014: 2925: 2876: 2735: 2728: 2621: 2581: 2554: 2526: 2479: 2470: 2382: 2380: 2379:on 7 March 2006 2347: 2346: 2318: 2317: 2310: 2308: 2307:on 21 June 2017 2267: 2256:10.1.1.459.4481 2231: 2229:Further reading 2226: 2225: 2215: 2213: 2210: 2204: 2200: 2185:10.1145/2560537 2179:(1): 2:1–2:70. 2169: 2165: 2157:10.1.1.629.9845 2138: 2134: 2115: 2111: 2101: 2099: 2098:on 6 April 2012 2086: 2085: 2078: 2068: 2066: 2059:10.1145/1435458 2045: 2041: 2033: 2024: 2017: 2007: 2005: 1992: 1988: 1971: 1967: 1944: 1940: 1935: 1931: 1918: 1914: 1879: 1875: 1854:Liedtke, Jochen 1850: 1846: 1831: 1805:Liedtke, Jochen 1801: 1797: 1787: 1785: 1768: 1764: 1747: 1743: 1720:Liedtke, Jochen 1717: 1713: 1706: 1690: 1686: 1657: 1653: 1643: 1641: 1629: 1625: 1617: 1610: 1606: 1605: 1601: 1591: 1589: 1584: 1580: 1559: 1555: 1534:Liedtke, Jochen 1531: 1522: 1502: 1496: 1489: 1468:Liedtke, Jochen 1465: 1461: 1451: 1449: 1411: 1407: 1370: 1361: 1351: 1349: 1344: 1343: 1339: 1322: 1318: 1308: 1306: 1297: 1296: 1292: 1276: 1275: 1267: 1263: 1244: 1240: 1202: 1198: 1174:10.1.1.105.4204 1156: 1150: 1146: 1136: 1134: 1130: 1122: 1118: 1108: 1106: 1098: 1094: 1084: 1082: 1077: 1076: 1072: 1062: 1060: 1056: 1055: 1051: 1041: 1039: 1032: 1026: 1022: 1017: 958: 882: 800: 790:and Fiasco.OC. 776:formal analysis 752: 735: 732: 718:common criteria 695: 623: 594:L4 microkernels 517: 487: 459:display servers 447: 381:lazy scheduling 326: 318:buffer overflow 271: 120: 93:protocol stacks 28: 23: 22: 15: 12: 11: 5: 4136: 4126: 4125: 4108: 4107: 4105: 4104: 4099: 4098: 4097: 4095:User interface 4092: 4082: 4077: 4072: 4067: 4062: 4056: 4054: 4050: 4049: 4047: 4046: 4041: 4036: 4031: 4026: 4021: 4019:File attribute 4016: 4011: 4006: 4000: 3998: 3987: 3986: 3984: 3983: 3981:Virtual memory 3978: 3973: 3968: 3963: 3958: 3953: 3947: 3945: 3933: 3932: 3929: 3928: 3926: 3925: 3920: 3915: 3910: 3904: 3902: 3894: 3893: 3891: 3890: 3885: 3880: 3875: 3870: 3865: 3860: 3855: 3853:Context switch 3850: 3835: 3833: 3826: 3820: 3819: 3816: 3815: 3813: 3812: 3807: 3802: 3796: 3794: 3790: 3789: 3787: 3786: 3781: 3776: 3771: 3766: 3761: 3756: 3751: 3745: 3743: 3734: 3728: 3727: 3725: 3724: 3719: 3714: 3709: 3704: 3699: 3694: 3689: 3684: 3679: 3673: 3671: 3667: 3666: 3664: 3663: 3658: 3653: 3648: 3643: 3638: 3633: 3627: 3625: 3621: 3620: 3613: 3612: 3605: 3598: 3590: 3581: 3580: 3578: 3577: 3548: 3540: 3538:= discontinued 3531: 3528: 3527: 3525: 3524: 3519: 3514: 3509: 3507:Richard Rashid 3504: 3499: 3494: 3492:Jochen Liedtke 3489: 3484: 3479: 3474: 3472:David Cheriton 3469: 3464: 3458: 3456: 3450: 3449: 3447: 3441: 3435: 3429: 3427: 3417: 3416: 3414: 3413: 3407: 3401: 3382: 3374: 3368: 3361: 3355: 3349: 3343: 3337: 3331: 3325: 3319: 3311: 3302: 3299: 3298: 3296: 3295: 3276: 3274: 3268: 3267: 3265: 3264: 3257: 3251: 3245: 3243: 3237: 3236: 3234: 3233: 3228: 3227: 3226: 3223:Icaros Desktop 3220: 3214: 3202: 3196: 3194: 3187: 3186: 3184: 3169: 3167: 3161: 3160: 3158: 3157: 3149:Classic Mac OS 3145: 3137: 3134: 3133: 3131: 3130: 3123: 3115: 3113: 3104: 3097: 3096: 3094: 3093: 3085: 3064: 3062: 3056: 3055: 3053: 3052: 3046: 3038: 3032: 3025: 3023: 3016: 3015: 3013: 3012: 2994:HarmonyOS NEXT 2990: 2983: 2976: 2970: 2963: 2939: 2937: 2931: 2930: 2927: 2926: 2924: 2923: 2917: 2911: 2905: 2899: 2893: 2884: 2882: 2878: 2877: 2875: 2868: 2861: 2856: 2849: 2843: 2837: 2830: 2814: 2806: 2805: 2804: 2798: 2786: 2779: 2772: 2766: 2759: 2757: 2748: 2738: 2730: 2729: 2727: 2726: 2719: 2716:TI-RTOS kernel 2713: 2707: 2700: 2693: 2692:Off++ → Plan B 2690: 2683: 2677: 2670: 2669: 2668: 2654: 2651: 2643: 2635: 2626: 2623: 2622: 2620: 2619: 2612: 2607: 2606: 2605: 2592: 2590: 2583: 2582: 2580: 2579: 2564: 2562: 2556: 2555: 2553: 2552: 2545: 2537: 2535: 2528: 2527: 2525: 2524: 2518: 2499: 2497: 2487: 2481: 2480: 2469: 2468: 2461: 2454: 2446: 2440: 2439: 2438: 2437: 2430: 2423: 2417: 2410: 2399: 2390: 2363: 2362: 2361: 2332: 2272: 2265: 2241:), including: 2230: 2227: 2224: 2223: 2198: 2163: 2132: 2109: 2076: 2039: 2015: 1986: 1965: 1938: 1929: 1912: 1893:(5): 654–664. 1883:Heiser, Gernot 1873: 1867:10.1.1.25.8376 1844: 1829: 1795: 1772:Heiser, Gernot 1762: 1753:(April 2005). 1751:Heiser, Gernot 1741: 1724:Heiser, Gernot 1711: 1704: 1684: 1651: 1623: 1599: 1578: 1553: 1520: 1487: 1481:10.1.1.40.1293 1459: 1414:Heiser, Gernot 1405: 1359: 1337: 1316: 1303:www.cs.cmu.edu 1290: 1261: 1238: 1217:(6): 337–345. 1196: 1167:(4): 238–250. 1144: 1116: 1092: 1070: 1049: 1019: 1018: 1016: 1013: 1012: 1011: 1006: 1001: 996: 991: 986: 985: 984: 979: 974: 969: 957: 954: 946: 945: 930: 923: 881: 878: 877: 876: 871: 866: 861: 856: 851: 846: 840: 835: 830: 827:HarmonyOS NEXT 820: 815: 809: 799: 796: 772:virtualization 751: 748: 730: 694: 691: 664:L4 microkernel 656:Jochen Liedtke 640:context switch 622: 619: 590:device drivers 545: 544: 538: 528: 525:address spaces 516: 513: 490:Device drivers 486: 485:Device drivers 483: 446: 443: 372:context switch 360:L4 microkernel 356:Jochen Liedtke 325: 322: 280:device drivers 270: 267: 263:L4 microkernel 168:Richard Rashid 128:Regnecentralen 119: 116: 89:device drivers 26: 9: 6: 4: 3: 2: 4135: 4124: 4121: 4120: 4118: 4103: 4100: 4096: 4093: 4091: 4088: 4087: 4086: 4083: 4081: 4078: 4076: 4073: 4071: 4068: 4066: 4063: 4061: 4058: 4057: 4055: 4051: 4045: 4042: 4040: 4037: 4035: 4032: 4030: 4027: 4025: 4022: 4020: 4017: 4015: 4012: 4010: 4007: 4005: 4002: 4001: 3999: 3997: 3992: 3988: 3982: 3979: 3977: 3974: 3972: 3969: 3967: 3964: 3962: 3961:Memory paging 3959: 3957: 3954: 3952: 3949: 3948: 3946: 3943: 3938: 3934: 3924: 3921: 3919: 3916: 3914: 3911: 3909: 3906: 3905: 3903: 3901: 3895: 3889: 3886: 3884: 3881: 3879: 3876: 3874: 3871: 3869: 3866: 3864: 3861: 3859: 3856: 3854: 3851: 3848: 3844: 3840: 3837: 3836: 3834: 3830: 3827: 3825: 3821: 3811: 3808: 3806: 3803: 3801: 3800:Device driver 3798: 3797: 3795: 3791: 3785: 3782: 3780: 3777: 3775: 3772: 3770: 3767: 3765: 3762: 3760: 3757: 3755: 3752: 3750: 3747: 3746: 3744: 3742: 3741:Architectures 3738: 3735: 3733: 3729: 3723: 3720: 3718: 3715: 3713: 3710: 3708: 3705: 3703: 3700: 3698: 3695: 3693: 3690: 3688: 3685: 3683: 3680: 3678: 3675: 3674: 3672: 3668: 3662: 3659: 3657: 3654: 3652: 3649: 3647: 3644: 3642: 3639: 3637: 3634: 3632: 3629: 3628: 3626: 3622: 3618: 3611: 3606: 3604: 3599: 3597: 3592: 3591: 3588: 3576: 3575: 3566: 3565: 3555: 3554: 3549: 3547: 3546: 3541: 3539: 3536: 3533: 3532: 3529: 3523: 3520: 3518: 3517:Avie Tevanian 3515: 3513: 3510: 3508: 3505: 3503: 3500: 3498: 3495: 3493: 3490: 3488: 3487:Gernot Heiser 3485: 3483: 3480: 3478: 3475: 3473: 3470: 3468: 3465: 3463: 3460: 3459: 3457: 3455: 3451: 3445: 3442: 3439: 3436: 3433: 3430: 3428: 3426: 3422: 3418: 3411: 3408: 3405: 3402: 3400: 3399: 3394: 3393: 3388: 3387: 3383: 3380: 3379: 3375: 3372: 3369: 3367: 3366: 3362: 3359: 3356: 3353: 3350: 3347: 3344: 3341: 3338: 3335: 3332: 3329: 3326: 3323: 3320: 3317: 3316: 3312: 3309: 3308: 3304: 3303: 3294: 3293: 3288: 3286: 3281: 3278: 3277: 3275: 3273: 3269: 3263: 3262: 3258: 3255: 3252: 3250: 3247: 3246: 3244: 3242: 3238: 3232: 3229: 3224: 3221: 3218: 3215: 3212: 3209: 3208: 3206: 3203: 3201: 3198: 3197: 3195: 3192: 3188: 3182: 3180: 3175: 3174: 3170: 3168: 3166: 3162: 3155: 3151: 3150: 3146: 3144: 3143: 3139: 3138: 3129: 3128: 3124: 3122: 3121: 3117: 3116: 3114: 3112: 3108: 3105: 3102: 3098: 3091: 3090: 3086: 3083: 3082: 3078:^ integrates 3077: 3076: 3071: 3070: 3066: 3065: 3063: 3061: 3057: 3050: 3047: 3044: 3043: 3039: 3036: 3033: 3030: 3027: 3026: 3024: 3021: 3017: 3011: 3010: 3005: 3003: 2999: 2995: 2991: 2989: 2988: 2984: 2982: 2981: 2977: 2974: 2971: 2969: 2968: 2964: 2962: 2958: 2957: 2952: 2951: 2946: 2945: 2941: 2940: 2938: 2936: 2932: 2921: 2918: 2915: 2912: 2909: 2906: 2903: 2900: 2897: 2894: 2892: 2890: 2886: 2885: 2883: 2879: 2874: 2873: 2869: 2867: 2866: 2862: 2860: 2857: 2855: 2854: 2850: 2847: 2844: 2841: 2838: 2836: 2835: 2831: 2828: 2824: 2820: 2819: 2815: 2812: 2811: 2807: 2802: 2799: 2796: 2793: 2792: 2790: 2787: 2785: 2784: 2780: 2778: 2777: 2773: 2770: 2767: 2765: 2764: 2760: 2758: 2756: 2752: 2749: 2746: 2742: 2739: 2737: 2731: 2725: 2724: 2720: 2717: 2714: 2711: 2708: 2706: 2705: 2701: 2699: 2698: 2694: 2691: 2689: 2688: 2684: 2681: 2678: 2676: 2675: 2671: 2666: 2663: 2662: 2660: 2659: 2655: 2653:Little Kernel 2652: 2649: 2648: 2644: 2641: 2640: 2636: 2633: 2632: 2628: 2627: 2618: 2617: 2613: 2611: 2608: 2604: 2601: 2600: 2599: 2598: 2594: 2593: 2591: 2588: 2584: 2577: 2576: 2571: 2570: 2566: 2565: 2563: 2561: 2557: 2551: 2550: 2546: 2544: 2543: 2539: 2538: 2536: 2533: 2529: 2522: 2519: 2516: 2512: 2511: 2506: 2505: 2501: 2500: 2498: 2495: 2491: 2488: 2486: 2482: 2478: 2474: 2467: 2462: 2460: 2455: 2453: 2448: 2447: 2444: 2435: 2431: 2428: 2425:Shapiro, J. " 2424: 2422: 2419:Torvalds, L. 2418: 2415: 2411: 2409: 2406: 2405: 2404: 2400: 2398: 2394: 2391: 2378: 2374: 2370: 2364: 2357: 2351: 2343: 2339: 2333: 2328: 2322: 2306: 2302: 2298: 2294: 2290: 2286: 2282: 2278: 2273: 2268: 2266:1-880446-42-1 2262: 2257: 2252: 2248: 2243: 2242: 2240: 2236: 2233: 2232: 2209: 2202: 2194: 2190: 2186: 2182: 2178: 2174: 2167: 2158: 2153: 2149: 2145: 2144: 2136: 2128: 2124: 2120: 2113: 2097: 2093: 2089: 2083: 2081: 2064: 2060: 2056: 2052: 2051: 2043: 2032: 2031: 2022: 2020: 2003: 1999: 1998: 1990: 1982: 1978: 1977: 1969: 1961: 1957: 1953: 1949: 1942: 1933: 1925: 1922: 1916: 1908: 1904: 1900: 1896: 1892: 1888: 1884: 1877: 1868: 1863: 1859: 1855: 1848: 1840: 1836: 1832: 1830:0-89791-916-5 1826: 1822: 1818: 1814: 1810: 1806: 1799: 1783: 1779: 1778: 1773: 1766: 1758: 1757: 1752: 1745: 1737: 1733: 1729: 1725: 1721: 1715: 1707: 1701: 1697: 1696: 1688: 1680: 1676: 1671: 1666: 1662: 1655: 1640: 1639: 1634: 1627: 1616: 1609: 1603: 1588: 1582: 1573: 1568: 1564: 1557: 1548: 1543: 1539: 1535: 1529: 1527: 1525: 1516: 1512: 1508: 1501: 1494: 1492: 1482: 1477: 1473: 1469: 1463: 1447: 1443: 1439: 1435: 1431: 1427: 1423: 1419: 1415: 1409: 1401: 1397: 1392: 1387: 1383: 1379: 1375: 1368: 1366: 1364: 1347: 1341: 1333: 1329: 1328: 1320: 1304: 1300: 1294: 1286: 1280: 1272: 1265: 1257: 1253: 1249: 1242: 1234: 1230: 1225: 1220: 1216: 1212: 1208: 1200: 1192: 1188: 1184: 1180: 1175: 1170: 1166: 1162: 1155: 1148: 1129: 1128: 1120: 1105: 1104: 1096: 1080: 1074: 1059: 1053: 1038: 1031: 1024: 1020: 1010: 1007: 1005: 1002: 1000: 997: 995: 992: 990: 989:Microservices 987: 983: 980: 978: 975: 973: 972:Hybrid kernel 970: 968: 965: 964: 963: 960: 959: 953: 951: 943: 939: 935: 931: 928: 924: 921: 917: 913: 909: 908: 903: 899: 895: 894: 893: 891: 887: 875: 872: 870: 867: 865: 862: 860: 857: 855: 852: 850: 847: 845: 841: 839: 836: 834: 831: 828: 824: 821: 819: 816: 814: 810: 808: 805: 804: 803: 795: 791: 789: 785: 781: 777: 773: 769: 765: 760: 758: 747: 745: 741: 729: 725: 723: 719: 715: 711: 706: 704: 700: 690: 686: 684: 680: 677: 672: 668: 665: 661: 657: 653: 649: 644: 641: 637: 633: 629: 628:mode switches 618: 615: 610: 607: 603: 599: 595: 591: 587: 582: 579: 577: 572: 568: 564: 562: 558: 554: 550: 549:Brinch Hansen 542: 539: 537: 533: 529: 526: 522: 521: 520: 512: 510: 505: 503: 497: 495: 491: 482: 479: 475: 470: 468: 464: 460: 455: 452: 442: 439: 435: 430: 428: 422: 420: 416: 412: 409: 405: 401: 397: 392: 390: 386: 382: 378: 373: 369: 365: 361: 357: 352: 350: 345: 343: 338: 337:Shared memory 334: 330: 321: 319: 315: 311: 306: 304: 300: 296: 292: 287: 285: 281: 277: 266: 264: 260: 256: 252: 247: 245: 244:assembly code 239: 237: 233: 229: 225: 221: 217: 213: 209: 205: 201: 197: 193: 189: 185: 184:hybrid kernel 181: 177: 171: 169: 165: 160: 157: 153: 148: 146: 140: 138: 133: 129: 125: 115: 113: 109: 104: 102: 98: 94: 90: 86: 82: 78: 73: 71: 67: 63: 62:address space 59: 55: 51: 47: 43: 34: 30: 19: 4123:Microkernels 3996:file systems 3888:Time-sharing 3758: 3572: 3562: 3550: 3542: 3537: 3534: 3522:William Wulf 3396: 3390: 3384: 3376: 3363: 3313: 3305: 3292:Workplace OS 3290: 3283: 3279: 3272:AIM alliance 3259: 3177: 3171: 3147: 3140: 3125: 3118: 3087: 3079: 3073: 3067: 3040: 3007: 2992: 2985: 2978: 2965: 2954: 2948: 2942: 2902:Nucleus RTOS 2887: 2870: 2863: 2851: 2832: 2826: 2822: 2816: 2808: 2781: 2774: 2761: 2721: 2702: 2695: 2685: 2672: 2656: 2645: 2637: 2629: 2614: 2595: 2573: 2567: 2547: 2540: 2508: 2502: 2473:Microkernels 2472: 2383:20 September 2381:. Retrieved 2377:the original 2372: 2350:cite journal 2341: 2337: 2321:cite journal 2309:. Retrieved 2305:the original 2287:(5): 44–51. 2284: 2280: 2246: 2214:. Retrieved 2201: 2176: 2172: 2166: 2142: 2135: 2118: 2112: 2100:. Retrieved 2096:the original 2091: 2067:. Retrieved 2063:the original 2049: 2042: 2029: 2006:. Retrieved 2002:the original 1996: 1989: 1981:the original 1975: 1968: 1951: 1941: 1932: 1915: 1890: 1886: 1876: 1857: 1847: 1812: 1798: 1786:. Retrieved 1782:the original 1776: 1765: 1755: 1744: 1727: 1714: 1694: 1687: 1660: 1654: 1642:. Retrieved 1636: 1626: 1615:the original 1602: 1590:. Retrieved 1581: 1562: 1556: 1537: 1506: 1471: 1462: 1450:. Retrieved 1446:the original 1425: 1421: 1408: 1384:(9): 70–77. 1381: 1377: 1350:. Retrieved 1340: 1326: 1319: 1307:. Retrieved 1302: 1293: 1270: 1264: 1247: 1241: 1214: 1210: 1199: 1164: 1160: 1147: 1137:13 September 1135:. Retrieved 1126: 1119: 1109:13 September 1107:. Retrieved 1102: 1095: 1085:13 September 1083:. Retrieved 1073: 1061:. Retrieved 1052: 1040:. Retrieved 1036: 1023: 947: 919: 915: 906: 901: 897: 889: 885: 883: 801: 792: 768:capabilities 763: 761: 753: 737: 727: 707: 696: 687: 673: 669: 645: 627: 624: 611: 583: 580: 573: 570: 566: 560: 546: 518: 506: 498: 488: 471: 456: 448: 431: 423: 419:cache-misses 393: 380: 367: 353: 346: 327: 307: 288: 272: 269:Introduction 248: 240: 172: 161: 149: 145:mono-kernels 141: 121: 112:MINIX 3 105: 97:file systems 74: 64:management, 49: 45: 39: 29: 18:Microkernels 4014:Device file 4004:Boot loader 3918:Round-robin 3843:Cooperative 3779:Rump kernel 3769:Multikernel 3759:Microkernel 3656:Usage share 3462:Gordon Bell 3352:OpenComRTOS 3249:Singularity 3075:Chorus/Jazz 2998:OpenHarmony 2477:nanokernels 2150:, Germany. 1592:3 September 1324:Jim Magee. 1063:20 December 1058:"read-more" 811:BlackBerry 621:Performance 606:file system 314:kernel mode 303:source code 284:file system 255:hypervisors 196:Mach kernel 166:created by 46:microkernel 3944:protection 3900:algorithms 3898:Scheduling 3847:Preemptive 3793:Components 3764:Monolithic 3631:Comparison 3454:Developers 3421:Frameworks 3358:Phantom OS 3322:ChibiOS/RT 2680:µ-velOSity 2674:MicroEmpix 2102:5 November 2008:10 October 1452:13 January 1037:minix3.org 1015:References 950:nanosecond 927:hypervisor 920:picokernel 916:nanokernel 902:nanokernel 898:picokernel 890:picokernel 886:nanokernel 880:Nanokernel 874:Phantom OS 584:Start up ( 415:user space 310:user space 251:exokernels 232:Arch Linux 224:Windows 11 216:Windows NT 101:user space 4034:Partition 3951:Bus error 3878:Real-time 3858:Interrupt 3784:Unikernel 3749:Exokernel 3545:Real-time 3502:Ike Nassi 3477:Dan Dodge 3241:Microsoft 3111:Unix-like 3101:Macintosh 3009:HarmonyOS 2896:Integrity 2795:Minix-vmd 2755:Unix-like 2734:Operating 2532:Macintosh 2395:from the 2251:CiteSeerX 2239:CiteSeerX 2216:28 August 2152:CiteSeerX 2148:Nuremberg 2069:17 August 1862:CiteSeerX 1476:CiteSeerX 1279:cite book 1169:CiteSeerX 1004:Unikernel 967:Exokernel 938:real-time 884:The term 823:HarmonyOS 807:Amoeba OS 683:Integrity 293:(BSD) of 81:CPU modes 4117:Category 4080:Live USB 3942:resource 3832:Concepts 3670:Variants 3651:Timeline 3328:FreeRTOS 3285:Taligent 3217:Broadway 3211:AspireOS 3081:ChorusOS 3002:Oniro OS 2889:ChorusOS 2769:GNU Hurd 2723:Vanguard 2665:GNU Mach 2549:NuKernel 2281:Computer 1679:14614148 1352:26 April 1332:Archived 1309:8 August 956:See also 798:Examples 786:, Nova, 742:for the 731:—  693:Security 652:ChorusOS 636:CPU mode 438:timeouts 333:messages 228:GNU Hurd 54:software 50:μ-kernel 4075:Live CD 4029:Journal 3993:access, 3991:Storage 3868:Process 3774:vkernel 3641:History 3624:General 3535:Italics 3444:TI-RTOS 3392:Harmony 3371:SharpOS 3365:RC 4000 3334:HelenOS 3254:ThreadX 3231:MorphOS 3200:AmigaOS 3179:Symbian 3156:kernel) 3154:PowerPC 3142:Copland 3127:MacMach 3120:MachTen 2881:Partial 2827:Unix-RT 2810:MkLinux 2801:Minix 3 2747:support 2736:systems 2710:RTLinux 2704:PowerUP 2687:nucleus 2485:Kernels 2311:3 April 2193:4474342 1907:1121537 1839:1706253 1788:1 April 1442:7414062 1400:2867357 1348:. Apple 1273:. Exec. 1233:8011765 1191:9414037 1042:22 June 838:Horizon 833:HelenOS 780:Coyotos 586:booting 553:Nucleus 532:threads 445:Servers 389:MINIX 3 212:watchOS 186:called 118:History 72:(IPC). 3883:Thread 3754:Hybrid 3732:Kernel 3438:Genode 3432:Cosmos 3410:Zephyr 3315:BeRTOS 3307:Amoeba 3103:hosted 3069:JavaOS 3049:Wombat 3042:REX OS 3035:PikeOS 3029:LLinux 3022:kernel 2980:Midori 2961:CapROS 2950:KeyKOS 2944:GNOSIS 2865:UNICOS 2853:Spring 2834:OS2000 2783:MeikOS 2616:WarpOS 2603:ExecSG 2534:hosted 2496:family 2299:  2263:  2253:  2191:  2154:  1905:  1864:  1837:  1827:  1702:  1677:  1644:8 June 1478:  1440:  1398:  1231:  1189:  1171:  869:Zircon 859:Midori 818:Genode 710:KeyKOS 598:LynxOS 502:IOMMUs 478:TCP/IP 451:daemon 427:signal 408:4.3BSD 400:Ultrix 261:; the 236:Debian 220:NT 3.1 210:, and 110:. The 66:thread 4085:Shell 4024:Inode 3386:Thoth 3340:µC/OS 3261:Verve 3193:-type 3191:Amiga 3165:Psion 2987:NLTSS 2967:Hydra 2908:NuttX 2859:Tinix 2846:Redox 2789:Minix 2776:Lites 2745:POSIX 2631:ADEOS 2610:Quark 2589:-type 2587:Amiga 2560:Psion 2504:Eumel 2301:99779 2297:S2CID 2211:(PDF) 2189:S2CID 2034:(PDF) 1903:S2CID 1835:S2CID 1675:S2CID 1618:(PDF) 1611:(PDF) 1503:(PDF) 1438:S2CID 1396:S2CID 1229:S2CID 1187:S2CID 1157:(PDF) 1131:(PDF) 1033:(PDF) 942:Adeos 864:Redox 854:Minix 788:Redox 744:Linux 660:cache 602:Minix 349:polls 200:OSFMK 192:OSF/1 180:macOS 77:rings 3646:List 3551:° = 3543:^ = 3425:kits 3404:VRTX 3395:^ → 3389:^ → 3378:SPIN 3280:Pink 3205:AROS 3173:EPOC 2973:seL4 2956:EROS 2920:RIOT 2872:VSTa 2823:MERT 2697:Opus 2658:Mach 2639:EROS 2597:Exec 2575:EKA2 2569:EKA1 2521:OKL4 2401:The 2385:2017 2373:Byte 2356:link 2344:(4). 2327:link 2313:2020 2261:ISBN 2237:(on 2218:2017 2104:2011 2071:2009 2010:2007 1825:ISBN 1790:2007 1700:ISBN 1646:2009 1594:2024 1454:2014 1354:2011 1311:2024 1285:link 1139:2016 1111:2016 1087:2016 1065:2016 1044:2015 918:and 912:Mach 849:Mach 842:The 784:seL4 757:seL4 740:CVEs 714:EROS 681:and 650:and 648:Mach 632:ring 411:Unix 404:Mach 387:and 295:Unix 289:The 282:and 276:Unix 234:and 208:tvOS 176:Mach 164:Mach 156:Exec 95:and 44:, a 4102:PXE 4090:CLI 4070:HAL 4060:API 3863:IPC 3346:MQX 2914:OSE 2840:QNX 2821:^ ( 2763:ARX 2647:K42 2289:doi 2181:doi 2123:doi 2055:doi 1956:doi 1895:doi 1817:doi 1732:doi 1665:doi 1567:doi 1542:doi 1511:doi 1430:doi 1386:doi 1252:doi 1219:doi 1179:doi 888:or 813:QNX 679:QNX 634:or 614:IPC 551:'s 534:or 463:QNX 385:QNX 204:iOS 194:'s 188:XNU 79:or 40:In 4119:: 3845:, 3446:^° 3423:, 3412:^° 3360:^° 3342:^° 3330:^° 3324:^° 3318:^° 3289:→ 3287:OS 3282:→ 3207:° 3183:^° 3181:OS 3176:→ 3089:JX 3084:^) 3051:^° 3031:^° 3020:L4 3006:→ 3000:, 2975:^° 2959:→ 2953:→ 2947:→ 2922:^° 2910:^° 2825:– 2791:° 2718:^° 2661:° 2642:^° 2578:^° 2572:→ 2515:L4 2513:→ 2510:L3 2507:→ 2494:L4 2436:". 2429:". 2416:". 2371:. 2352:}} 2348:{{ 2342:14 2340:. 2323:}} 2319:{{ 2295:. 2285:39 2283:. 2279:. 2259:. 2187:. 2177:32 2175:. 2090:. 2079:^ 2018:^ 1950:. 1901:. 1891:20 1889:. 1833:. 1823:. 1811:. 1673:. 1635:. 1523:^ 1505:. 1490:^ 1436:. 1426:40 1424:. 1420:. 1394:. 1382:39 1380:. 1376:. 1362:^ 1301:. 1281:}} 1277:{{ 1227:. 1215:17 1213:. 1209:. 1185:. 1177:. 1165:13 1163:. 1159:. 1035:. 932:A 782:, 770:, 712:, 563:: 557:VM 391:. 335:. 238:. 214:. 206:, 103:. 91:, 3939:, 3849:) 3841:( 3609:e 3602:t 3595:v 3440:° 3434:° 3406:^ 3398:V 3381:° 3373:° 3354:^ 3348:^ 3336:° 3310:° 3256:^ 3225:° 3219:° 3213:° 3152:( 3092:° 3072:( 3045:^ 3037:^ 3004:) 2996:( 2916:^ 2904:^ 2898:^ 2891:^ 2848:° 2842:^ 2829:) 2813:° 2803:° 2797:° 2771:° 2712:° 2682:^ 2667:° 2650:° 2634:° 2523:° 2517:° 2475:- 2465:e 2458:t 2451:v 2387:. 2365:* 2358:) 2329:) 2315:. 2291:: 2269:. 2220:. 2195:. 2183:: 2160:. 2129:. 2125:: 2106:. 2073:. 2057:: 2012:. 1962:. 1958:: 1926:. 1909:. 1897:: 1870:. 1841:. 1819:: 1792:. 1738:. 1734:: 1708:. 1681:. 1667:: 1648:. 1596:. 1575:. 1569:: 1550:. 1544:: 1517:. 1513:: 1484:. 1456:. 1432:: 1402:. 1388:: 1356:. 1313:. 1287:) 1258:. 1254:: 1235:. 1221:: 1203:. 1193:. 1181:: 1141:. 1113:. 1089:. 1067:. 1046:. 944:. 929:. 829:) 825:( 198:( 143:" 20:)

Index

Microkernels

computer science
software
operating system
address space
thread
inter-process communication
rings
CPU modes
supervisor or kernel mode
device drivers
protocol stacks
file systems
user space
monolithic kernels
MINIX 3
Per Brinch Hansen
Regnecentralen
Zakłady Azotowe Puławy
RC 4000 Multiprogramming System
mono-kernels
local area networks
Exec
Mach
Richard Rashid
Mach
macOS
hybrid kernel
XNU

Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.