Kernel: Difference between revisions

Jump to navigation Jump to search
[unchecked revision][unchecked revision]
Content added Content deleted
m (Interwiki)
(Drop dubious claims about "hybrid kernels")
 
Line 24: Line 24:
===Hybrid Kernel===
===Hybrid Kernel===
{{main|Hybrid Kernel}}
{{main|Hybrid Kernel}}
The hybrid kernel, often called the macrokernel, is primarily a monolithic kernel. It differs in that the parts of it are usually segmented either in code, by a few physical modules or a mixture of both. Unlike microkernels, which use a message passing system to communicate with user space modules, hybrid kernels are usually linked together at run time and still exist as a whole in kernel space. The term is usually reserved for kernels whose core functions are modularised, not for systems who have the ability to load drivers as separate kernel modules.
This is a controversial term for a variant of monolithic kernels. The definition varies and has been applied to kernels which are layered in design, such as [[XNU]] and Windows NT, as well as to some kernels (such as DragonFly BSD) that internally use techniques such as message passing that are often associated with microkernels. Hybrid kernels are usually linked together at run time and still exist as a whole in kernel space. The term is usually reserved for kernels whose core functions are layered or where microkernel-like design patterns are employed, not for systems that have the ability to load drivers as separate kernel modules.


===Modular Kernel===
===Modular Kernel===
{{main|Modular Kernel}}
{{main|Modular Kernel}}
Also a monolithic model, the modular kernel, which is usually far more modular than the hybrid kernel, is based upon the same concept. The major difference is the usual ability for the kernel to load numerous unknown core modules, as opposed to simply loading in known kernel parts. It is also never considered modular because of the use of namespaces, or a simplified codebase.
Also a monolithic model, the major difference is the usual ability for the kernel to load numerous unknown core modules, as opposed to simply loading in known kernel parts. It is also never considered modular because of the use of namespaces, or a simplified codebase.


===Nanokernel===
===Nanokernel===