Results 1 to 8 of 8
Hey, Ok this is a hypothetical discussion relating to well Mono or Micro kernels. I am NOT asking for an explanation on how they work or the differences between the ...
Enjoy an ad free experience by logging in. Not a member yet? Register.
- 10-15-2012 #1
Microkernels or Monolithic Kernels?
Ok this is a hypothetical discussion relating to well Mono or Micro kernels. I am NOT asking for an explanation on how they work or the differences between the two!
What i am asking is:
1. If your were to build a distro from the ground up, would you go with a Mono, Micro or hybrid Kernel?
2. What your key reasons for choosing that kernel structure?
3. Would you build the kernel from the ground up or use an existing kernel base and what kernel base (if any) and why?
For example i would probably go with a Microkernel, because i really like the design of the kernel and while the Mach kernel wasn't what developers had hoped for performance wise, newer microkernels like L4 and Minix are pretty quick compared to there earlier counterparts and even mono's. The other main reason is most components are in userspace and not kernelspace and i believe that the small performance impact is worth the change. Not only for ease of development but also for system testing, adding new software, and having stable kernel that isn't going to crash the whole system by bringing a new or updated driver etc into the system.
I would most likely go with an existing system as wouldn't want to re-write drivers unless its really necessary. I also think it would be harder to gain a base and get established especially if your trying to compete with another pre-existing system that has flaws but still manages to hang on (goes with saying i can't remember). Which is probably why i would go with either a Minix, GNU Hurd, Plan 9, BSD or a Solaris base, they have a good enough base and driver development that being direct competition would be unnecessary as any developments would be beneficial to either party. I probably wouldn't make a hybrid design of two or more different systems like Apple's Mac OSX (Mach, FreeBSD & NEXTSTEP) unless they add some advantage over the base system and wasn't going to be overly complex to integrate.
I wouldn't go with Linux simply because it would be a nightmare to decipher the kernel enough to actually do want you want, especially when compared to Minix and some of the BSDs.
Last edited by SL6-A1000; 10-15-2012 at 06:54 AM.
- 10-15-2012 #2
- Join Date
- Aug 2006
Why do you want to start a discussion if :
-you don't want an explanation
-you already have decided that Linux is not worth having a look
What is your purpose ?
-developping your own kernel ?
-contributing to one kernel ?
-building your own distro, using whatever kernel, whatever userland softwares, whatever shell, whatever GUI ?
- 10-15-2012 #3
Well, Linus Torvald hates microkernels! Though he isn't exactly a disinterested observer. Incidently it's worth googling "Torvald and microkernel"; you'll find plenty of heated discussion on the subject.
On the other hand Rubberman, an old Forum hand, loves them so it's worth searching this forum too."I'm just a little old lady; don't try to dazzle me with jargon!"
- 10-15-2012 #4
- Join Date
- Aug 2006
Talking about ľkernels, the main problem is the communication between processes, which is a loss of time in a memory protected environment. But monolithics also have their disadvantages, though speed is not one of them. Anyway, this is not an answer for SL6-A1000...
- 10-15-2012 #5
So yes i would like to eventually contribute back to one or more kernels. I don't know about building my own distro, but definitely experimenting with Kernel designs. Which is why i created the topic.
I just wanted people to discuss about the different kernel designs, and hypothetically if they were to create what they would do and why?
Its not a dead focused topic, you can bring up whatever lol
Doesn't really surprise me Hazel. I haven't really read those debates between Linus and the Minix creator (forgot his name). But i will give them a look-see.
Although, it does in the sense that i would have thought Linus would be more open about that, considering that he would want to give whats best for Linux. So if Monolithic Kernels somehow fall to the way side he would be really to convert (at least temporarily) to the better kernel structure.
- 10-16-2012 #6
- Join Date
- Aug 2006
Hi. I see a major problem with monolithic kernels in a capitalist world : hardware drivers have to be integrated INTO the kernel source tree, and many companies don't want to share their source code. Example : nvidia who provides a closed-source driver.
-From one point of view, one could say that ľkernels are more stable because of the modular concept, the mess in one driver doesn't flow into the other ones. Then one remembers Win98, NT4 which weren't the best stable systems (and this is a understatement).
-This same viewer could continue by saying that in a monolithic kernel the same mess could spread in the whole kernel, and forget that this way of developping implies a review by kernel developpers, which prevent this mess.
After the theory, one must look at what the real world is, and face the truth : a monolithic kernel can not be stamped as less stable as a ľkernel. QNX, a ľkernel, was the fastest in task commuting ; then linux came and took the place. vxworks, a very well known RT system, is also monolithic. So you can not say that ľkernel is a better kernel structure, because facts proove this wrong. And saying this is better, or that is better, is nonsense because a kernel has many faces. For example, about speed, monolithic IS better because of inter-process exchange in a ľkernel architecture. For non-disclosure of intellectual property, ľkernel is better because one could plug a closed source driver, like in the Windows world.
The name you forgot is Andrew Tannenbaum. He's one of the names that could not be forgotten, with Dennis Ritchie, Ken Thompson, Brian Kernigan, and Richard Stallman. Other ones can be forgotten like Steve Jobs, Bill Gates, Steve throw-a-chair (oops, I forgot his name) Ballmer...
To conclude my post, I would give you an advice. If you really DO think that ľkernel is better (whatever it means for you), you should leave the Linux world (for I can't see Linus throw 21 years of developpment) and help the GNU-Hurd project, it really needs it.
- 10-16-2012 #7
There are pros and cons for each, maybe a better option would be translation between the two ... that would open up hardware supported by either approach to be available to all.
At some point you must trust code to control hardware ... while it may be possible to protect hardware from a driver meant to control other hardware - it's still a disaster if the driver is something you consider mission critical.
How about both methods and being able to switch between them at boot time, or even better switch between operating modes for a particular task/activity ...
Personally I've thought of package/system management and default software & themes as the main differences between distros rather than kernels ... but interesting to see what others think
- 10-17-2012 #8
Your right, but at the same time closed source is always going to exist and your always going to have developers that are only in it for the money like NVIDIA. Although while you are giving NVIDIA a hard time about it, they also do provide alot of their drivers for Linux, FreeBSD and Solaris. This is alot more than what AMD's ATI development team do.
I can see how it can be misinterpreted that i said Microkernels are more stable than Monolithic or have a better structure, but that is not how i meant it to be interpreted.
What i was trying to say is that Microkernels from an implementation and development perspective are a lot easier to introduce new software and improve upon once a stable kernel is established, as a bug of fault in the new driver won't crash or hinder the whole system (as you have already kind of mentioned). I also feel that its kernel structure is a lot easier to keep clean because you can separate components in compartments. This is not saying you can't keep a Monolithic Kernel structure clean, but in order to keep it clean it requires a lot more conscious effort on the developers and it becomes harder as the system gets bigger and there are more people involved. An example is Linux and the BSDs, and i know this is a current topic of Linux Developers because i have read about it. The BSDs have organised themselves in such a way that the kernel is consistent across there upstream project and the daughter projects spawned from them (i.e. All FreeBSD software is going to work on PC-BSD or any other FreeBSD derived system) unlike Linux where every major upstream distro (Red Hat, Debian, Arch, Slackware etc) are running a separate kernel that may or may not be compatible with one another, and then their derivatives may be different again i.e. Ubuntu and Debian.
I don't think your Windows example is entirely correct. Windows NT isn't a Microkernel, its a Hybrid running a combination of Micro and Mono. But when it comes to Windows or Mac OSX its not about kernel design its about market dominance. Windows driver development has occurred over years of Market Domination so third parties naturally develop drivers built for Windows. The same is now occurring for Mac OS X as it becomes the dominant proprietary OS third-party developers like NVIDIA are now providing drivers and software compatible with Mac OS X to get the biggest market share they can.
Any kernel structure can be devoid of drivers or software; monolithic, Micro, Hybrid etc take for example Minix, Minix 3.0 is a Microkernel and it has less support than Linux, BSD and probably QNX and that's due to developers and support.
Its not so one way or the other, just because i like the kernel design of Microkernels doesn't mean i don't like or can't provide useful input for Linux or vice versa.
That would be quite kool to switch between the two methods but would require a hell of a lot of extra work for two different kernels or one very advanced kernel. Although there are systems similar like L4Linux. Which is a Microkernel with Linux on top. Have no idea how you would make it so its dual and cable of switching between Mono and Micro on the fly.