This article is rated C-class on Wikipedia's content assessment scale. It is of interest to the following WikiProjects: | |||||||||||
|
Text and/or other creative content from this version of Kernel (operating system) was copied or moved into Hybrid kernel. The former page's history now serves to provide attribution for that content in the latter page, and it must not be deleted as long as the latter page exists. |
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)
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.
<snip> - 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
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)
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)
More details on other kernels needed to broaden perspective.Widefox 12:13, 12 September 2006 (UTC)
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)
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)
See comments on related diagrams at Talk:Monolithic kernel and Talk:Microkernel. -- Beland 21:35, 21 March 2007 (UTC)
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)
Since noone voiced concerns against it, I have removed the unclear and non NPOV section. Billyoneal (talk) 01:03, 2 July 2009 (UTC)
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
CiteSeerx: 10.1.1.41.9192 —Preceding unsigned comment added by Enrique.soriano (talk • contribs) 20:02, 9 February 2010 (UTC)
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
Please update the article to include the classification of Linux as a hybrid kernel.
The Linux kernel has:
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)
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:
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#Linux as 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)