Log to the real page.
http://en.wikipedia.org/wiki/Kernel_(operating_system)
Scroll to the end, there is a list of ref. and articles that would provide much more details.
![]()
??? Windows is currently running on a hybrid kernel, by definition.Also, understand before going in that a "hybrid" kernel doesn't really exist.
Kernel-mode drivers = kernel address space = monolithic. Linux even has loadable userspace drivers, these, these days, too. Basically any OS that still exists, and isn't strictly for embedded use, has become a, "hybrid," kernel, by counting userspace modules as "not monolthic." But just as they have done that for practical reasons, they have also been keeping things in kernel-space for practical reasons.??? Windows is currently running on a hybrid kernel, by definition.
The Windows Hybrid kernel consists of:
HAL (Hardware Abstraction Layer), microkernel & kernel mode drivers.
monolithic kernel + microkernel = hybridKernel-mode drivers = kernel address space = monolithic. Linux even has loadable userspace drivers, these, these days, too. Basically any OS that still exists, and isn't strictly for embedded use, has become a, "hybrid," kernel, by counting userspace modules as "not monolthic." But just as they have done that for practical reasons, they have also been keeping things in kernel-space for practical reasons.
So why isn't, say, Linux, considered one? User space file and device drivers have existed and been in use for years, now. The bolded defines it as monolithic. Resembling this and having this or that philosophy matter not. For practical reasons, neither a pure monolithic, nor a pure microkernel, are going to be ideal. Some code's gonna crash, and some code needs to stay away from the kernel address space for security reasons. Hybrid was just MS' name for, "we need to get work done," an opposite objective of HurdNT-based Windows is classified as a hybrid kernel (or a macrokernelhttp://en.wikipedia.org/wiki/Hybrid_kernel#cite_note-Microsoft_2007-2) rather than a monolithic kernel because the emulation subsystems run in user-mode server processes, rather than in kernel mode as on a monolithic kernel, and further because of the large number of design goals which resemble design goals of Mach (in particular the separation of OS personalities from a general kernel design). Conversely, the reason NT is not a microkernel system is because most of the system components run in the same address space as the kernel, as would be the case with a monolithic design (in a traditional monolithic design, there would not be a microkernel per se, but the kernel would implement broadly similar functionality to NT's microkernel and kernel-mode subsystems).
Linux is a monolithic kernel. Device drivers and kernel extensions run in kernel space (ring 0 in many CPU architectures), with full access to the hardware, although some exceptions run in user space, for example filesystems based on FUSE. The graphics system most people use with Linux does not run within the kernel, in contrast to that found in Microsoft Windows. Unlike standard monolithic kernels, device drivers are easily configured as modules, and loaded or unloaded while running the system. Also unlike standard monolithic kernels, device drivers can be pre-empted under certain conditions. This latter feature was added to handle hardware interrupts correctly, and to improve support for symmetric multiprocessing.[citation needed] By choice, the Linux kernel has no Binary Kernel Interface.[45]So why isn't, say, Linux, considered one? User space file and device drivers have existed and been in use for years, now. The bolded defines it as monolithic. Resembling this and having this or that philosophy matter not. For practical reasons, neither a pure monolithic, nor a pure microkernel, are going to be ideal. Some code's gonna crash, and some code needs to stay away from the kernel address space for security reasons. Hybrid was just MS' name for, "we need to get work done," an opposite objective of Hurd.
But the exception listed states 'for example filesystems based on FUSE'. Normally Linux runs on the ext filesystem.Exactly: Linux has exceptions, but doesn't take on a different name. Just as the Microsoft guys couldn't practically do it as a pure microkernel, neither could Linux do it as a pure monlithic. The difference is that one is exclusive (micro), and the other inclusive (monolithic). Adding user-space functionality does not remove its monolithic nature; only removing the kernel-space functionality would.