“This aims to be the most comprehensive kernel comparison of the latest most popular UNIX style kernel versus the latest most popular current Windows kernel. A kind of kernel comparison FAQ. In Q4 2006, this means Linux 2.6.18/2.6.19 kernel versus the Windows Server 2003 R2 kernel. In Q1 2007, this will mean Linux 2.6.20 kernel versus Windows Vista kernel.”
this comparisin’s rating of whats good/bad, is completely worhtless..
many of them are just downright wrongly rated, others are compared when its inheritly impossible to compare.
stuff are also stuffed in completely wrong categories..
this is a big pile of shit
I read this comment before reading the article and I thought “what a troll!”. But he is damn right.
The writer of the article should have put some notes by each point.
The Windows kernel isn’t a UNIX(-like) kernel, you can’t “compare” the kernels very well, if at all.
Try a direct comparison between a BSD (or Solaris, or UnixWare, etc.) and Linux and then it’ll be a far more interesting and worthwhile endeavor.
But comparing the features of Pears to Oranges is moot, they’re completely different, any analysis is going to be subjective. It will entirely depend on your use whether one will fit the job.
A comparison of Windows 2003 kernel and ReactOS kernel *might* have been more fair, but still…
Let’s see their facts, item-by-item:
I really wonder where did they take these figures (language – C proportion (#57, #58)) of the win2003 kernel.
Also, boot image is completely wrong. In Linux’s case it’s vmlinuz, in windows case it’s whole lots of files – kernel, HAL, boot-time drivers, file-system driver – at least these.
Driver speed “subjective” — how do one measure driver’s speed? Absolutely meaningless comparison.
Scheduling, load balancing – just bs.
I/O Management — instead of writing about at least kernel APIs for drivers, they are writing some figures, which aren’t worth anything.
Now the most funny parts:
Networking: protocols: “more vs. less”
Security:
“security model – Standard Unix Model”, what a surprise that Windows 2003 lacks standard unix model! And they colored that in red, assuming that unix’s model is better (which in fact is worse than what is in NT).
This is the most funny story and the most useless stuff I ever read about “Linux vs. Windows”.
Aleksey Bragin
http://www.reactos.org
Did you guys get the message? This is a Wiki. Go and help them out, and put your money where your mouth is. Edit the stuff to make it better. That’s what Wiki is about, right? Or am I wrong?
I never really got that webtwodotoh thing, you see.
The title misleaded me, I thought it’s a presentation of an already finished comparison of two kernels and not an invitation to take part in development of this comparison.
Since it’s the latter, then it does make sense.
The Windows kernel isn’t a UNIX(-like) kernel, you can’t “compare” the kernels very well, if at all
They’re both kernels. They’re both monolithic. They’ve exactly the same mission and usually they even have the same features, since people just copies good ideas from one piece of software to another.
It’s OK to compare them. And even if it wasn’t, Linux is Unix. It just implements the posix API, the internals are completely different. The same happens for Solaris, *BSDs, Irix, etc. Speaking these days about “unix-like kernels” is a really vague definition. Except the POSIX API, a couple of design concepts and some “cultural” inheritance (scripting, userspace utils like ps and cat) everything is different. I fail to see why it’s unfair to compare linux against win2k3 or solaris or any performant modern OS.
They’re both kernels. They’re both monolithic. They’ve exactly the same mission and usually they even have the same features, since people just copies good ideas from one piece of software to another.
NT is not monolithic. NT is a kernel with a microkernel structure, but most of that structure runs in kernel space (I prefer the term ‘hybrid’, but some don’t like that term). Linux is at its core a monolithic kernel, but it does have muK-like functionality (i.e. modules).
Edited 2006-11-24 21:30
Modules DO NOT make Linux more microkernel-like, at all. Microkernel refers to the structure and operation of the kernel, not the fact that you can demand load parts of the kernel that, once loaded, are indistinguishable from compiled-in parts of the kernel.
Modules DO NOT make Linux more microkernel-like, at all. Microkernel refers to the structure and operation of the kernel, not the fact that you can demand load parts of the kernel that, once loaded, are indistinguishable from compiled-in parts of the kernel.
Microkernel-like. The modules are loadable by the user, similar to what you can do in a muK.
The modules in the Linux kernel is loadable by the user as well. Is the Linux kernel also microkernel-like then?
Don’t make the mistake to think you know better than you do – it makes you look like a fool, Thom.
As we say in Denmark: “Skomager, bliv ved din læst” -> translates roughly to “shoemaker, do what you’re best at”.
Skomager, bliv ved din læst
Which translates perfectly in Dutch to “Schoenmaker, blijf bij je leest”.
But Thom already figured that one out, I guess.
I suppose since one of the side benefits of microkernels is being able to easily implement dynamically loadable and unloadable parts of the os, modules do make Linux more like some microkernels but calling it “microkernel-like” isn’t really correct. It’s monolithic to the extreme, nothing like a microkernel. Loadable and unloadable parts of the kernel have basically nothing to do with whether a kernel is a microkernel or not. That’d be like categorizing plants and calling grass “tree-like” because it’s green.
There have been great debates lately about microkernel vs monolithic and the consensus is that NT gave up the microkernel architecture for speed. The kernel was based on the source of a microkernel as a starting point, but they abandoned the microkernel architecture early on. They abandoned the fundamental feature of context switches between everything but the core message passing subsystem which defines the microkernel architecture. The Tanenbaum-Torvalds Debate is still active on the topic of the wisdom of microkernels but both sides seem to agree that NT is not a microkernel and never has been.
Edited 2006-11-25 10:02
Micro- vs monolithic kernel refers to how the kernel, drivers, modules, etc look once loaded into memory, *NOT* how you get them into memory.
A monolithic kernel has a single memory space where all parts of the kernel reside (drivers, filesystems, vm, I/O subsystems, etc). Regardless of whether a driver is compiled into the kernel directly, or loaded at runtime as module, the memory mapping appears identical — everything runs in the same memory space. A driver loaded as a module still runs in the kernel’s address space.
A microkernel has a tiny little core that runs in kernel space. All the other bits (drivers, filesystems, etc) run in their own, separate, protected memory space, completely isolated from the kernel and from userland. A driver loaded as a module runs in its own separate memory space.
Do you see the difference?
A monolithic kernel can be modular (ie you can load/unload modules at runtime) … but that in no way makes it microkernel-like.
Yes, NT is like that. In other words, NT has source level abstractions oriented to make the kernel more “modular”. Surprisingly Linux, Solaris or any modern kernel also uses abstractions to make things modular.
In other words: All modern general-purpose operative systems use source-level abstractions to make their software better. Again, I fail to see how minor differences in how those abstractions are implemented make NT, Mac OS X, Linux, Solaris, *BSDs, so different that can’t be compared. I’d love to see someone explain how the mach-inherited abstractions somehow make NT (and/or OS X) so different
Abstractions that BTW, were invented to run kernel functionality in userspace, and that hence they’ve not sense if you turn a microkernel in a monolith like NT and OS X did (which makes some people wonder why they started from a microkernel to start with), except for their source-level abstraction nature that helps to make the kernel better. But again, monolith kernel also use those abstractions…
Edited 2006-11-24 21:57
The NT-kernel is monolithic. It is also modular, but no more than the Linux kernel. At best we could call the NT-kernel for a hybrid, though that word has lost it’s meaning being abused in marketing and all.
The NT-kernel is monolithic. It is also modular, but no more than the Linux kernel.
Please come back when you know what you are talking about.
That’s funny considering I’m a developer and you are not
The NT-kernel was intended to be pretty much like a microkernel, but turned out to be rather monolithic. This happened very early in the development of the NT-kernel. That’s one of the reasons for the many reboots – especially for earlier versions of Windows.
The NT-kernel is primarily a monolithic kernel with an internal structure not unlike a microkernel. So one _could_ use the term “hybridkernel”. But that is equally true for the Linux kernel.
Thom, please come back when you know what you are talking about.
EDIT:Fixed a typo
Edited 2006-11-25 00:10
Really Thom… Ever heard the phrase “the pot calling the kettle black”? I think the kettle just keeled over and died…
From a Microsoft teaching document:
Windows is a monolithic but modular system
Windows Drivers allow for dynamic extension of kernel functionality
Windows Drivers are dynamically loadable kernel modules
Having modularity does not a µkernel makes.
The NT kernel has nothing to do with a µkernel. It even has the GDI inside the kernel, there’s even GDI Printers. Call me when X.org, printer drivers or Freetype is stuffed inside the Linux kernel.
Microsoft is shifting all they can from the UI into User Space for Windows Vista.
The canonical implementation of an Hybrid kernel is XNU, the kernel of Mac OSX. It’s neither µkernel nor purely monolithic.
An hybrid kernel is not something you want to do. You get *some* of the headache of a µkernel minus all the security and stability advantages. A driver can make the whole system unstable, unlike a true µkernel.
Microsoft Singularity is going to be the next big thing, if they use their $ wisely.
Having the graphics system in the kernel is a bad idea IMHO except for framebuffer.
Edited 2006-11-25 05:43
NT is not monolithic.
Here we go again with this bunk… NT is not a microkernel, nor is it “like” a microkernel. The fact that it uses a HAL and is fairly modular does not make it a muK, it just makes it organized. Same goes for OSX – it may have a kernel (Mach 3) that start out _trying_ to be a muK (didn’t really ever succeed, and wasn’t even close during v3), but if you compile away the IPC and plop a BSD superserver on top knitted into the kernel with direct function calls, you have something very similar to NT… A nicely organized monolithic kernel.
Its simple. If the kernel does anything, ANYTHING, other than IPC, MM and scheduling it isnt a microkernel. Its a pretty black and white thing really, you cant have something “like” an muK… Code organization or modularity have little to do with it, the defining feature is the big black line between the kernel and user space. If anything other than the 3 things mentioned earlier are on the kernels side of the line, it ain’t a muK. If anything in userspace can directly touch memory on the kernels side of the line, it ain’t a muK. NT (and for that matter OSX) aint even close…
according to wikipedia, the windows kernel type is hybrid.
According to wikipedia, the earth is flat.
*beginning of poor attempt at joking*
I knew it! Everybody can see the world is flat :p
*end of poor attempt at joking*
According to wikipedia, the NT-kernel is primarily monolithic. But it all depends on which article you read.
Whether or not a kernel has all its stuff running in kernel or userspace is not what defines it as a muK or a monolithic kernel. What defines a muK is that each and every bit of functionality (as much as possible, in any case) is implemented as a seperate module. It then can be set to run in userspace– or in kernelspace. That is irrelevant.
For instance, Tanenbaum could move all of his servers/modules/whatever-you-want-to-call-them of MINIX3 into kernelspace. Does this mean MINIX3 is then monolithic?
People seem hell-bent on the fact that if a kernel has everything running in kernelspace, regardless of the internal structure, it is monolithic. This is false. What defines a muK from a monolithic kernel is not where it runs its shit, but how its shit is structured.
Edited 2006-11-25 16:49
What defines a muK is that each and every bit of functionality (as much as possible, in any case) is implemented as a seperate module. It then can be set to run in userspace– or in kernelspace. That is irrelevant.
Its not the kernelspace vs userspace part that is relevant – but it is the seperate part and particularly the RUN part… In other words the fact that drivers and the kernel are implemented in a modular way does mean shit unless they are RUN in a manner that isolates them from each other. That is the _point_ of a muK.
For instance, Tanenbaum could move all of his servers/modules/whatever-you-want-to-call-them of MINIX3 into kernelspace. Does this mean MINIX3 is then monolithic?
The terms kernelspace and userspace and what exactly they mean is somewhat dependent on the underlying hardware. But to answer your question if by “move all of his blah blah in kernelspace” you mean “remove the barriers between them” than YES, Minix3 would then absolutely by monolithic. Hell, Tanenbaum himself would tell you that.
People seem hell-bent on the fact that if a kernel has everything running in kernelspace, regardless of the internal structure, it is monolithic. This is false. What defines a muK from a monolithic kernel is not where it runs its shit, but how its shit is structured.
You cant go around making up your own definition for shit. Find me a reputable source for your definition (and no – you don’t count). I can find about 5000 for mine…
For instance, Tanenbaum could move all of his servers/modules/whatever-you-want-to-call-them of MINIX3 into kernelspace. Does this mean MINIX3 is then monolithic?
Tanenbaum would never do that, but if he did, he’d call it a monolithic kernel.
What defines a microkernel is:
a) How it is structured,
and
b) Where it runs its “shit”.
The structure of the NT-kernel resembles only partly the structure of a microkernel and no more than the linux kernel does.
SkyOs, Haiku, ZETA, BeOS, Syllable and other such systems are what I’d call a hybrid kernel. They are structured like a true microkernel, but with an awful lot of elements running in the wrong space.
Since when has a microkernel been defined merely by the internal structure? The external structure is just as important, as Tanenbaum would tell you.
How many times are people going to tell you you’re wrong before you get it through your thick skull that loadable kernel modules does not make a kernel a microkernel?
Let’s start with the *real* definition of a microkernel. A microkernel consists of a small (thus the “micro-“) kernel which takes care of basic things like task scheduling, *basic* memory management and IPC. Everything else is done in userspace servers or libraries that communicate with each using IPC. In the most extreme microkernels, even memory management and higher level process/thread scheduling is done in userspace libraries and servers. In less extreme muks, the microkernel might take over more of that functionality, but still many traditional OS features are in userspace servers, for example, the filesystem, networking, drivers, the GUI, etc.
Now, let’s look at NT and Linux.
In NT, there is a logical microkernel component of the NT kernel, with several subsystems built on top of it, such as the object manager, I/O manager, etc. (together, called the NT Executive). But these are still just well-organized components of the kernel. They run in kernelspace and they use direct function calls for communication, not IPC. Windows does have userspace servers that take care of some OS functionality, such as CSRSS.EXE. But all OSes these days have userspace processes that take care of some of the OS functionality.
Linux does have subsystems like Windows, albeit less well-organized. But memory management, networking, filesystems and some graphical stuff is done inside the kernel. The fact that you can extract these components and put them in modules that can be loaded later, doesn’t change the underlying organization or functionality in the slightest. Notice that once loaded the material in these modules is indistinguishable from code that was compiled in. That’s a *big* difference from microkernels, where extra functioonality lives in separate processes running in userspace using IPC to communicate with clients. How you could possibly think modules and userspace servers are the same thing is beyond me.
I don’t understand how a man so ignorant can run osnews.com.
Things like the Hurd translators are only made possible because of user space implementation and the messaging system.
There’s nothing from a µkernel architecture in NT. All the “modules” communicate with the kernel just like they would if they were built inside the core of it.
It’s not even an hybrid kernel. Just because you can load a driver without a reboot means nothing. Windows 2003 can even *patch* the kernel, sometimes, without a reboot ! it’s clever but it has clearly nothing to do with a µkernel architecture.
http://www.securityfocus.com/columnists/312 (see hot patching)
The advantages of a true µkernel are evident. A faulty driver cannot bring down the entire system, like the NVidia linux driver does.
It seems to be that the Linux kernel has some features 2003’s NT kernel doesn’t and vice versa.
The list doesn’t point out anything particulary interesting.
I really like the line:
“OS APIs – Linux API (POSIX superset) (built-in)”
Linux supports the Linux APIs, but Windows doesn’t. How can we let Microsoft get away with that?
i wonder where they got all the fact from. article does looks interesting
Linux supports the Linux APIs, but Windows doesn’t. How can we let Microsoft get away with that?
And Windows doesn’t support Wine! z0MG!!1
This is just as pointless as comparing two different CPUs by their clock freq.
Edited 2006-11-24 21:10
And Windows doesn’t support Wine!
Windows doesn’t SUPPORT Wine (why should it), but Wine runs on Windows, if thats what you meant. You can download it here: http://sourceforge.net/project/showfiles.php?group_id=6241&package_…
weren’t they removed altogether?
Not AFAIK. At least not completely, though support for HPFS is gone. But since the support only was for OS/2 1.x console applications I don’t think the support ever mattered.
Windows 2003 has also support for old 16-bit windows applications and DOS (despite claims that both had been removed). Just like in NT4.
Yes, in WinNT 4+ versions, it OS/2 subsystem is not available anymore.
The Posix subsystem has been removed too in Win2k+, but for WinXP and Vista you can install SFU (which is a Citrix “light”, freeware from MS website).
The whole comparison is worth nothing as several values are outdated or simply incorrect and compare UNIX vs. Ros/Win/VMS kernel is not reasonable anyway.
On the other side: WinNT 2k has been available for all of the mentioned platforms even WinNT nowaday is available on PowerPC (e.g. XBox 360).
The Posix subsystem has been removed too in Win2k+, but for WinXP and Vista you can install SFU (which is a Citrix “light”, freeware from MS website).
SFU is part of the Windows 2003 R2 install options.
…to me it seems that two different kernels use some of the same solutions on some problems, and in other areas use other solutions on problems – and sometimes one is better than the other or vice versa. And on several occasions they are equal.
Add to that the many question marks (mostly in regard to Windows) and we have an article that screams “flame bait”.
I had hoped for something deeper than this.
Calling the tables a pile of shite IMO is going bit too far as there are certainly some valid points .
Yes – some of the comparisions are silly & of no importance .
But areas such as process – memory & IO handling should be comparable – or not ?
I actually am very glad this person has done the huge amount of work to produce this – its far from perfect – but could always be updated & maybe changed a bit on a wiki for example to have a general comparision of Linux – Windows & maybe then also add other OSes .
This kind of low-level comparision IMO has been long missing .
What I criticise is that each item is valued – with a winner .
This doesnt acknowledge that different scenarios might require different system settings – but instead making it a black n white – good OS bad OS table .
EDIT : oooh okay – so it already is a wiki
Edited 2006-11-24 21:52
average bug error rate per line (#5, #6) 0.02% (Linux) 1.2% (0.21%-2.5%) (Windows)
How did they come up with a number so huge!?
Sorry, I’m the one who proposed this article. I was totally aware that it is not perfect, you can see it just by the amount of unconfirmed statements.
But if you read the description it says “This aims to be the most comprehensive kernel comparison…” which seems to be true. I was actually happy to find a page that tries to compare the kernels of the two operating systems, on a technical level. It’s a lot more informative than ‘I switched to Ubuntu and it rocks!’-articles.
So what, it ain’t perfect. You know better? Help them out, write descriptions, provide information, provide feedback/critique.
You know, linux-kernel-0.1 didn’t kick a$$ either … but that’s what open source is all about, YOU can improve.
Something I’m rather annoyed with is the simple fact that who ever did this comparison doesn’t realize X is NOT part of the kernel. Grrr… it annoys me.
Also, just to comment on the general feelings people are having: Yes, comparing the kernels as was done is useless. However, comparing the kernels in a much more scientific Problem/Solution oriented way would be rather interesting. Actually, I’m tempted to do just this…
–Morgul
Finally, a nice article linked by Thom Holwerda.
I wish he link more such technical articles intended for very well educated readers rather than concentrating on PC/Linux/Mac Politics.
One more comment: Linux API if unified will bring an amazing ease of use for customers because it will let developers target a specific kernel rather than a mess of kernels.
But in general Linux Kernel is not the problem of linux distros these days but rather the GUI and its tools is the problem. eg, gnome 2.9, 2.12, 2.16 are still crashing with me on 5 machines under heavy usage (7 days 24/7) especially nautilus. And when using KDE (3.0, 3.3, 3.5) konqueror crashes less often than nautilus but finally crashes too. and there are a lot of tools that we need in linux distros (partitioners/networking/hardware installers/software installers); I know that some distros solved these issues but not a single distro solved all of THEM.
Could you link us to a comparision of KDE/GNOME.
Its hilarious! Why would C++ drivers be considered worse than C ones? If the C++ driver is written perfect in terms of stability and speed and size, I don’t think it should matter. A prototype C driver is going to be much worse than that.
Some well made banchmarks will be a lot more useful.
Well, I am always puzzled when people complain about such a fact-finding article. It-s an outstanding work and I congratulate the author (s) for this one.
>Well, I am always puzzled when people complain about such a fact-finding article
Because some facts on the article are quite weird such as talking about network-transparent GUI in a kernel comparison article even though X is (nearly) user-space only?
For my view, it looked like the comparison ‘facts’ where biased towards Linux, so it makes the article not very interesting..
Nowhere in the article did anyone claim that X wasn’t userspace. It was only included because Windows *does* have graphics in the kernel (well, mostly in the kernel), so they needed to say something about Linux as well.
Somewhere in this article is a conspiracy theory…
Well, I liked the info that Solaris has the Most Advanced Features of any OS.
My personal ranking of OS’s.
Solaris
HPUX/AIX
OpenBSD
Linux
Mac OS X
Windows 2003
ReactOS
So, you’ve got to ask yourself Why is Microsoft Wasting so much money being number 7 on the list? This is the D Team pretending to write OS’s. Why don’t they adopt at least Linux? into their core os?
They’d save a Huge amount of Money, be More Profitable and would produce a better product!
My personal ranking of OS’s.
Solaris
HPUX/AIX
OpenBSD
Linux
Mac OS X
Windows 2003
ReactOS
You forgot to include DOS to make your “ranking” even more ridiculous.
Says the person that has only used Windows 2003 (which is a good OS mind you)
Another interesting point is Bill Gates saying Microsoft will never become another IBM. Well, from the point of view of quaility code, they never have and they never will. This is the reason for the Brain Drain away from Windows to Linux, HPUX and Solaris. Microsoft is no where near the quality of these OS’s.
I always hear the truth about last years product only after the newest version comes out. Microsoft lovers say something like this all the time:
“Dot Net 1.1 was a real piece of Sh*T” “Dot Net 2.0 is really great”.
Then, next year we will hear:
“Dot Net 2.0 was a real pice of ….”, “Dot Net 3.0 is really great”…
How about actually making one of these releases nearly as good as what IBM ships!?!
The way Mach messaging was designed versus traditional monolithic systems were one of the distinctive characteristics in it being a microkernel.
Under Mach, the IPC system was used for this role instead. In order to call system functionality, a program would ask the kernel for access to a port, then use the IPC system to send messages to that port. Although the messages were triggered by syscalls as they would be on other kernels, under Mach that was pretty much all the kernel did — handling the actual request would be up to some other program.
Thanks for the criticism and praise. 2.6.19 features and your suggested fixes are in the new version. talkback time…
1. they can be compared…
2. originally based on TechEd 2004 – Session: Mark Russinovich ‘Linux and Windows Kernel Comparison’.
3. corrections – errm it’s a wiki (!) but if you don’t tell me what’s wrong, it won’t get fixed!
4. yes, I’ve removed some colouring, and added notes!
5. Aleksey – it appears you’ve misread the article – more constructive comments welcome (see 2.)
6. Morgul – don’t worry, I know X is not a largely not a kernel issue, but it’s needed for the comparison with kernel mode GDI/GDI+
Widefox
http://widefox.pbwiki.com/Kernel%20Comparison%20Linux%2…