Talk:Hybrid kernel

Proponents vs Oponents
I do not understand the structure of this section. While the Oponents-part lists two notable examples (Linus and Sonny) the Proponents section lists Microsoft - only to continue that Microsoft calls them "microkernel" etc. So how does this make Microsoft a "proponent" in the controversy stated in the intro paragraph under the Controversy-header?!

"That leads to the controversy - does having a microkernel-like structure in a monolithic kernel make such a distinct difference that another category of kernels is needed?"

To me it looks like Microsoft is not a proponent of the "hybrid kernel"-category. They should be removed from the Proponent section.

Cyberroach —Preceding comment was added at 05:55, 2 April 2008 (UTC)

I second that. It makes no sense!--Earrnz (talk) 05:19, 2 May 2009 (UTC)

I think the entire section should be removed. Not only is it difficult to understand, it's not NPOV. OS wars do not belong in Wikipedia. Billyoneal (talk) 04:29, 29 June 2009 (UTC)

What Was Wrong
I don't want to edit the page yet, but I have some strong disagreement with what is says. There is nothing "microkernelish" in NT's kernel design. Please, people, do not confuse loadable drivers and standard ABI with a microkernel. This is absurd, not to mention clearly wrong and misleading. All NT subsystems are implemented in kernel space (filesystems, networking, even GDI), they most definitely do not communicate using LPC. The paragraph about "not confusing a "Hybrid kernel" with monolithic kernels that can load modules" doesn't make any sense at all. Message passing is a feature of a "microkernel" only if it facilitates separation of address space and protection, which is NOT the case with NT kernel IRPs and has nothing to do with user level LPCs, which are simply an ordinary method of user-level interprocess communication.

- already in article.

(A Slashdot article from the 10.05.06 led me to this quote, unfortunately the source site is down at the moment, there is lot's of interesting info there concerning this.)

http://www.realworldtech.com/forums/index.cfm?action=detail&id=66630&threadid=66595&roomid=11

The article is fundamentally wrong. See the detailed discussion on RWT for more. I have attempted to fix some of the more egregious errors. easilyforgotten


 * Windows NT use the microkernel. At least Microsoft shows Windows NT5 in such manner and has shown on earlier NT versions. That is just pure fact that NT is microkernel structured operating system and marketed as hybrid kernel because of it's small binary level changes. Unless you can call Microsoft does not know their own operating system..? —Preceding unsigned comment added by 80.248.105.14 (talk) 08:39, 27 April 2009 (UTC)

Corrected
The reasoning behind my changes to the definition of hybrid kernel comes from two distinct sources:

1. "monolithic-microkernel hybrid" where a hybrid between monolithic and microkernel, i.e. an architecture lying somewhere in the spectrum between 100% kernel space (monolithic), to least possible kernel space (microkernel). The motivation for such a kernel would no doubt be to attain some of the speed of monolithic kernels together with some of the desirable attributes of microkernels.

2. "NT kernel marketing term" hybrid "microkernel"/"macrokernel"/"modified microkernel" are used to describe the NT kernel (see ref 1 in article), where, in fact the NT kernel is 100% kernel space with user space OS APIs, so is predominantly monolithic. This can therefore be seen as a marketing term in order for the NT kernel to be perceived as having some benefits of the microkernel architecture over a monolithic kernel. In fact, NT 4.0 and on even has the GDI (GDI+) in kernel space for performance reasons, so is even more monolithic than kernels normally described as monolithic.

I agree with the Catstail comments above. I have rewritten the article today, correcting the definition, and putting both for and against arguments.

The image is also misleading, depending on whether the white boxes indicate user space, as how I interpret it.

I would say that the article needs more input in terms examples of non-NT kernels, in order to find a common or better definition of the term, with examples. Also, I think it is important to include the evolution and motivation behind these hybrid kernels which is probably central to their existence.

--Widefox 18:04, 23 July 2006 (UTC)

corrected Microsoft wording, and put tentative conclusion on controversy. --Widefox 15:25, 26 July 2006 (UTC)

Neutrality
The conclusion section needs to be removed or re-written. How can an article that is written from a neutral POV draw a conclusion as to which name is correct? This an encyclopedia, not an essay on the pros and cons whether MS use a hybrid kernel or not. 82.10.97.111 23:46, 20 August 2006 (UTC)


 * Totally agree. Removed conclusion. That is only relevant for the NT kernel example, so moved there and rewritten. hybrid kernel is a controversial classification. This is not clear-cut topic, especially as modern general use kernels (NT, Linux, Solaris, BSD) are converging somewhat. More input on this discussion welcome. Widefox 15:00, 21 August 2006 (UTC)


 * Probably a section on why the other OSes have been classified as hybrids will help. Otherwise, I totally agree that this is just another Microsoft-sucks-but-Linux-rocks article. RasterBlaster 05:10, 10 September 2006 (UTC)


 * New section on the Plan 9 kernel added. This is a technical article about computer internals, kindly keep talk of OS wars out of here. Also, lack of non-mainstream kernel examples isn't a POV issue, but more an article broadening one...Widefox 12:13, 12 September 2006 (UTC)

Broadening article
More details on other kernels needed to broaden perspective.Widefox 12:13, 12 September 2006 (UTC)

Erroneous (and unsourced) claim
The following unsourced claim is incorrect:

"It is also worth noting that the OS/2 and POSIX APIs are built upon the Win32 API, and not the Native API[citation needed]."

Two examples point to this claim being incorrect. Firstly, the Unix subsystem on Windows is case-sensitive for file operations, whereas the Windows subsystem is case-insensitive (but does preserve case), and it's impossible to build a case-sensitive API on top of a case-insensitive one. Secondly, the Unix subsystem supports forking of processes, whereas the Windows subsystem does not, and cannot (efficiently) do so, since it provides no interface to the relevant kernel features (ie the Unix subsystem has interfaces to the memory-manager features used to implement forking, whereas the Windows subsystem does not).

The above examples are just off the top of my head, but I found a slideshow created by Windows kernel architect Dave Probert, which contains the following quotes:

"NT is not a microkernel, but does support user-mode OS personalities (i.e. for posix, OS/2, Win32)"

"Win32 and other subsystems built on native NT APIs"

URL: http://research.microsoft.com/ur/asia/curriculum/download/BeijingPresentation.ppt

If there are no objections, I'll correct the article at some point (unless someone else wishes to first). Shalineth 13:26, 23 February 2007 (UTC)

I've corrected the above error, and added greater detail to the explanation of why NT is a hybrid kernel. The article is still extremely poor by any academic standard, with dubious citations from non-scientific sources and irrelevant rants, and thus still needs a lot of work. I may work on it further when I have time. Shalineth 00:04, 2 March 2007 (UTC)

Various quotes are out of place in an encyclopaedia article
The quotes (or, less generously, rants) in the "Opponents" section are, in my view, out of place in an encylopaedia article. Moreover, the quote from Tzvetan Mikov isn't even accurate (and the notion that a forum post by a random individual should be considered authoritative strikes me as rather bizarre). Windows does support user-mode drivers in some cases, eg for USB devices, via the User-Mode Driver Framework: http://www.microsoft.com/whdc/driver/wdf/UMDF_FAQ.mspx

Linus Torvalds' quote strikes me as rather ill-informed as well. If you look at the actual design principles of Mach (eg http://www.wiley.com/college/silberschatz6e/0471417432/pdf/mach.pdf), the archetypal microkernel system, many of them were clearly adopted by the designers of the NT system (see "Inside Windows NT", by Helen Custer (1992), for a discussion of the design goals of NT).

The official position of Microsoft, at least in the days of NT 4.0, is explained here: http://www.microsoft.com/technet/archive/ntwrkstn/evaluate/featfunc/kernelwp.mspx?mfr=true

Obviously the use of user-mode servers is much more limited in Windows than in Mach, which is why Windows isn't a microkernel system. Nevertheless, the defining characteristic of a hybrid kernel is the separation of the kernel from the operating system servers (user-mode subsystems in Windows terminology) which provide system services to applications. To claim this is just "marketing" shows a gross level of ignorance regarding the design of such systems (see the link in the previous paragraph, and Custer (1992) for further details). That isn't to say hybrid kernels are better or worse, or make any sort of value judgement on the design, but there is clearly a technical difference from traditional kernels, and one that was quite obviously inspired by Mach.

I haven't time to correct this article at the moment, but in my view, wasting space with dubious rants about the validity of the term "hybrid kernel", rather than actually discussing the technical characteristics of such kernels, reflects poorly on Wikipedia. The microkernel design of Mach had a very clear influence on subsequent designs like NT, and whether they're called "hybrid", "macrokernels" or what have you is fairly immaterial. The reality is they are different from pre-microkernel designs, and many of the differences found in their designs are a direct result of the microkernel research carried out at CMU. Shalineth 13:25, 23 February 2007 (UTC)


 * The Microsoft page doesn't work any more, but it's archived at https://web.archive.org/web/20041216195239/http://www.microsoft.com/technet/archive/ntwrkstn/evaluate/featfunc/kernelwp.mspx. It claims that "Microkernel operating systems are based on two fundamental principles.", and says "the most basic principle is one of modularity, encapsulation, and data hiding."  Note that a "traditional" kernel with drivers, file systems, initial executable image activation, networking up to the transport layer, etc. can be based on that principle.
 * The other principle, "is that large portions of the operating system which traditionally run entirely in the kernel or privileged mode of the microprocessor can now be executed in user or application mode, with only the microkernel itself, along with a relatively small amount of hardware device-specific code, executing in kernel mode.", is the one NT doesn't follow. That's the one that, as far as I know, is generally used as the defining principle of a microkernel.
 * I guess Microsoft's notion of a "microkernel" means that there's code that could be called the "kernel", atop which other OS services are implemented, regardless of whether those other OS services are implemented in user mode or kernel mode, so that one component of the NT executive is called the "kernel", with the rest of it not being considered part of the "kernel".
 * I'm unconvinced that this is the way "microkernel" is commonly used. Guy Harris (talk) 23:18, 8 March 2021 (UTC)

Diagram improvement
See comments on related diagrams at Talk:Monolithic kernel and Talk:Microkernel. -- Beland 21:35, 21 March 2007 (UTC)

Definitely not NPOV
This article needs some serious work. I'm tagging it as non-NPOV. It needs to be rewritten. Also, I think there is a lot of misinformation on both sides of this "hybrid kernel" thing. Since I'm somewhat biased on these topics, I'll avoid editing it directly.

Also, the POSIX layer isn't new (NOT from 2007). It has actually been around since NT 4.0 (personal experience), and probably even since NT 3.1 or NT 3.5. NT had a POSIX system from the start, if I recall correctly; if I'm not mistaken, it was to satisfy a government contract.

Retagged .... somewhere along the line it got removed. The main article itself is fine, but the Proponents versus Opponents section was not NPOV at all. I tried to clean it up a bit but IMHO the section should be removed entirely. Billyoneal (talk) 04:28, 29 June 2009 (UTC)

Proponents versus Opponents section removed
Since noone voiced concerns against it, I have removed the unclear and non NPOV section. Billyoneal (talk) 01:03, 2 July 2009 (UTC)

Plan 9 kernel is not hybrid
I do not want to edit the main page without any consensus, but the Plan 9 kernel is not hybrid. It is 100% monolithic. Plan 9 file servers are based on a network protocol, 9P. 9P is a network file protocol based on a set of RPCs that map file manipulation system calls (such as open, read, write, close, and so on). Any 9P-based external server can be accessed from the kernel using the mount driver (#M). Therefore, any external device can be accessed by the the kernel, including user-level processes talking 9P and remote servers. Most user level services are designed as synthetic file systems. Nevertheless, common OS services are within the kernel. The only exception is the (disk) file system, which is outside by global design: Plan 9 terminals are supposed to be diskless and data files are served by file-servers. IMHO, this fact does not make Plan 9 a (hybrid) microkernel.

Plan 9 authors: Microkernel is the way to go: False unless your only goal is to get papers published. Plan 9's kernel is a fraction of the size of any microkernel we know and offers more functionality and comparable or often better performance From Andy Tanenbaum hasn't learned anything

See Plan 9: A Distributed System by Dave Presotto, Rob Pike, Ken Thompson and Howard Trickey —Preceding unsigned comment added by Enrique.soriano (talk • contribs) 20:02, 9 February 2010 (UTC)


 * 9P isn't a network protocol so much as it's a protocol that just *happens* to be able to go over the wire. But that chances are equally good -- better, in fact -- that the underlying transport is a plain pipe. 9P2000.s is the only variant I've seen that has anything IP-specific in it. — Preceding unsigned comment added by 82.0.106.250 (talk) 18:06, 10 January 2014 (UTC)

Definition of terms.
The phrase 'operating system personality'/'OS personality' is used several times in the description section without any references to what it means. I have been unable to find any reference to its meaning. Can someone/anyone provide a link or explanation?

210.84.10.97 (talk) 04:22, 9 April 2010 (UTC)Dominic


 * This is still an issue 14 years later. What's worse is that googling "operating system personalities" takes you to this page. I will try to research the term and make edits, but I hope someone with more expertise comes along to clarify this point. Jtbwikiman (talk) 17:56, 19 July 2024 (UTC)

Linux as hybrid kernel
Please update the article to include the classification of Linux as a hybrid kernel.

The Linux kernel has:


 * modular design with most of the kernel divided into distinct modules
 * threads and the same IPC mechanisms as other OS kernels
 * user space USB drivers - libusb
 * user space scanner drivers - sane
 * user space printer drivers - cups
 * user space 3D GPU drivers - mesa
 * user space device management - udev, systemd
 * user space file systems - fuse
 * user space networking - LibOS

The fact that drivers for 3D graphics, printers, scanners, device enumeration, USB, and other essential system services etc. run in user space means that, under the definition of a hybrid kernel used in this article, Linux is a hybrid kernel. 77.97.242.143 (talk) 16:52, 25 March 2015 (UTC)


 * If by this you mean "Just about everything could be classified as a hybrid kernel these days, so the term is bogus?", you are 100% correct. Guy Harris (talk) 05:41, 3 August 2015 (UTC)

Diagram of monolithic kernel, microkernel, and hybrid kernel reflects neither NT nor Darwin
An image was recently added with examples of the structuring of systems with monolithic kernels, microkernels, and hybrid kernels.

However, the image puts a "file server" and a "UNIX server" in user mode.

If the "file server" represents the file system, then that does not reflect the main two "hybrid kernels" discussed here:


 * both NT and Darwin-based OSes have the main file systems running in kernel mode;
 * none of the Darwin-based OSes have a "UNIX server" - the UNIX system call interface consists of traps to kernel-mode code;
 * for NT, some Windows APIs that one might think of as "system calls" are implemented by sending messages to various user-mode subsystem server processes (for example, CreateFile and CreateProcess), but others (for example, ReadFile and WriteFile) are library routines that are wrappers around NT trap-to-kernel-mode system calls (for example, NtReadFile and NtWriteFile.

About all you can say about "hybrid kernels" is "more stuff is done in user-mode servers than with a traditional monolithic kernel". However, as per Talk:Hybrid kernel, there are ways in which that applies to Linux, and the same could be said about NetBSD and its rump kernel. Guy Harris (talk) 22:45, 8 March 2021 (UTC)