Jump to content

Talk:Nanokernel

Page contents not supported in other languages.
From Wikipedia, the free encyclopedia

I think this page creates more confusion than good, and should be completely rewritten (best by 1-2 short paragraphs that mainly serve to disambiguate). The standard definition of "kernel code" is "what executes in privileged mode". As such, there is no smaller kernel than a microkernel as defined by Liedtke. What people generally refer to as a "nanokernel" falls in one of two categories:

  • really a microkernel, "nanokernel" used to differentiate from bloated systems like Mach, which aren't microkernels at all according to Liedtke. This use may have had some historic justification, but nowadays it's simply PR, and "picokernel" is a more extreme form of PR. An example of such a "nanokernel" is EROS, and the attentive reader will notice that Jonathan Shapiro, its creator, no longer uses the term "nanokernel"
  • just a small ("core") part of the kernel, essentially an internal hardware-abstraction layer. The "nanokernel" of Symbian OS is an example of this, or the Apple example given in the article.

To make things workse, the article goes on to add virtualisation to the mix, essentially lumping hypervisors under nanokernels as well.

By not clearly separating those incompatible meanings, the article adds to confusion, which is the antithesis of an encyclopedia. Heiser 19:39, 5 August 2007 (UTC)[reply]

This is roughly how I would write it:

The term nanokernel (and picokernel) has historically been used in a few different meanings:

  • as a very small operating-system kernel, implying an OS design where the amount of code executing in a privileged processor mode is small. This meaning of nanokernel has been obsoleted by the modern use of the term microkernel;
  • as a "core" subset of a kernel, typically introduced to enhance portability and configurability. This is more accurately described as a hardware-abstraction layer;
  • as a virtualization layer, the correct term for this is hypervisor.

As such, the term nanokernel should be considered historical and should otherwise be shunned to avoid confusion.

Heiser 20:21, 5 August 2007 (UTC)[reply]

The final sentence seems to violate WP:NPOV. Perhaps it could be rephrased, quoting the view of person X who recommends the avoidance of the term for those reasons? Jakew 21:43, 5 August 2007 (UTC)[reply]
Fair point, but a bit difficult to do. Who's "person X"? An expert in the field? That would be me ;-) Alternatively EROS could be used as an example (Shap used to refer to it as a "nanokernel" but these days calls it a "microkernel". 72.254.27.202 16:32, 6 August 2007 (UTC)[reply]
Well, if you've published anything in reliable sources regarding the merits (or lack thereof) of the term, then I for one would endorse citing it. Img:Smile.png But my impression - and please correct me if I'm wrong - is that nobody has discussed the subject at much length in published work. If that is indeed the case, then perhaps we shouldn't either... Jakew 22:06, 6 August 2007 (UTC)[reply]
[Sorry for not being logged in for the last comment.] Well, I've published a fair number of papers on microkernels and other OSes in peer-reviewed conferences... It's true that no-one has discussed this in published work — not too surprising. You don't publish papers on the use of the term "nanokernel" ;-) All I can say is that no-one seems to use the term in serious publications any more (at least not in the sense that I argue has been obsoleted by the modern use of "microkernel", I keep still seeing it where it refers to a HAL).
How about a somewhat less contentious formulation: "Given the ambiguous meaning of the term it seems best to avoid using it." Heiser 23:07, 6 August 2007 (UTC)[reply]
I am the author of this article. It started as a miserable and small article describing the Nanokernel used in combination with Mac OS and I extended it to cover a broad range of topics. I can't understand your criticism!
The article describes the applications and advantages/disadvantages Nanokernels. Maybe I have no references to scientific papers, but for me the content is much more important than formalisms and the distinction of some scientists.
You try to deny the existence of Nanokernels as an independent type of kernel.
Maybe some Nanokernels turn out to be a lightweight Microkernel when they are finished, but you can not generalise this.
Nanokernels where designed with an other idea in mind. And the idea matters and affects the whole operating system and its ideas. The ideas maybe intersect with others and are not entirely specific to a Nanokernel, but a Nanokernel means a way of designing the system.
You claim that a kernel is a computer programme that runs privileged mode, but the article also covers its applications on machines without a privileged mode. So you are wrong!
If you don't have a privileged mode then "kernel" becomes an ill-defined concept. Just because some people keep using it in that context doesn't prove me wrong.Heiser
But basically you got something wrong: A Microkernel is a minimal monolithic kernel that separates everything except its monolithic core components. The monolithic components (IPC, memory-, thread- and process management and elementary drivers) are fixed and cannot be changed without recompiling.
A Nanokernel does not really even have these core components (that is what the nano expresses). It just provides a hardware interface to integrate these components (and also multiple of one type) this can be done a runtime or compile time. Thus you can have multiple schedulers and memory managers (also hierarchically combined), run multiple operating system emulators or two indepedent systems (based on the modules you selected). There is an infinite number of combinations of modules, concepts and ideas you can apply to such system a runtime. And this is exactly what separates it from Microkernels and Hypervisors. It is a modular, separated, extendable form of a Microkernel, but more generic, more extendable and powerful than just a plain Hypervisor. It is a completely different idea! Microkernels and especially Hypervisors were designed with a different idea and application area in mind. I explained this in detail in the article.
It may be true that Nanokernels are now used as a Hypervisor and or a Microkernel, but just because some people got the idea wrong Nanokernels and their ideas do not stop to exist. And you have to accept this! Even if no scientific researcher has written a paper about it it is true. I also described these misunderstandings in the article to cover all related applications of the initial idea.
I collected this idea of a Nanokernel from various sources and added my own ideas. Thus I tried to describe the idea and all applications based on existing projects. Perhaps I added a few things or clarified parts of it and you will not find everything, that is mentioned in the article, in these projects. But just because it does not exist in form of a project it is not wrong.
If you feel better when you have changed the article to a minimalistic and wrong version or completely deleted it, please do so - I will not stop you from doing this.
--Hyperyl 22:04, 12 August 2007 (UTC)[reply]
Look, contrary to what you suspect, I derive no pleasure from publishing incorrect stuff, I've been in the business for too long to be careful with what I'm writing.
My objections to the article can be summarised quite simply:
  • it is not encyclopedical. It contains no clear definition of what a nanaokernel is (meaning something that could be used to clearly decide whether a particular system is a nanokernel or not), only vague descriptions
  • it is full of unsubstantiated claims (I'm amazed that there are no Fact tags all over it). A number of them are factually wrong.
  • it creates, rather than removes confusion
I have read through the article again and tried to identify which concept is described in which part. This is what I came up with:
  • the introductory paras describe simply a hardware-abstraction layer (HAL)
  • "General": unclear
  • "Virtualisation": describes a HAL (and has nothing to do with virtualisation, virtualisation is far more than a portability layer). The example of the Apple "nanokernel" is a HAL. Adeos, however, is a hypervisor. (Note that none of the Adeos work is published in peer-reviewed scholarly articles, you can't use their abuse of the scientific terminology as a proof of anything.)
  • "Nanokernel-based operating systems": first para simply describes a microkernel, as does the first half of the second para. In the second part the bit about the "significantly faster" is simply wrong, the rest confusing.
  • "Real-time systems" describes a HAL
  • "Versus monolithic kernels" describes in parts (more or less) microkernels, with some incorrect claims (PPC wasn't optimised for nanokernels at all, in fact, PPC has probably the highest context-switching costs of all RISC architectures, making it less suitable for such architectures than other RISC). The rest is mostly unsubstantiated (and vague) claims.
  • "Versus microkernels": first para describes a HAL. Second para is unsubstantiated claims. Third para is simply wrong.
  • "Nanokernel-based operating systems" (list): I'm only commenting on the systems I know:
  • Adeos is a hypervisor
  • EROS is a microkernel. Shapiro in earlier papers called it a "nanokernel" (this was when most people thought microkernel = Mach = bloated and slow) but at least since his 1999 SOSP paper, the main publication on it, has consistently referred to it as a "microkernel", nothing else
  • KeyKOS was called a nanokernel for the same reasons EROS originally was, but is a microkernel according to the terminology in the contemporary literature
  • Mac OS nanokernel is a HAL
If we ignore systems without privileged mode (where the term "kernel" is ill-defined and not useful) then the main question is whether what you call a "nanokernel" is the complete kernel (i.e. all the code that runs privileged) or only part of it. In the first case you are looking at a microkernel or hypervisor, in the other case a HAL. Note that the distinction between microkernel and hypervisor is becoming more difficult to make, with microkernels successfully used as hypervisors and hypervisors taking on most of the functionality of microkernels (although typically without trying to be minimal). This has been discussed in the scientific literature (see Hand et al, HotOS '05, Heiser et al, Operating Systems Review Jan '06).
For those reasons I stand by my proposal to replace this article by a short one listing the different historical meanings of the term and pointing to the appropriate modern terminology. Heiser 05:53, 25 August 2007 (UTC)[reply]
I agree: this article only adds to confusion and should be replaced with the history of the term nanokernel. Rrelf 21:43, 25 August 2007 (UTC)[reply]
Sorry for my delayed reply - I gave up this topic more than a month ago. Please do what you would like to do, you decided by a democratic consensus to edit and replace my article and Wikipedia seems to rely on democracy.
But remember that I extracted all performance claims (also about the PPC design you mentioned) from comparative benchmarks and books and following your argumentation style they must be facts. But they are anyhow empirical results.
I think this debate simply shows that our knowledge system and society is really corrupted and (in this case) corruptive. It is based on hierarchical structures and the dominance of the privileged. Scientists like you dominate our society and claim that they are reliable sources and deliver facts. You want Wikipedia articles to be stuffed with references to your works in order to make them "correct". I dislike this behaviour. It shows your arrogance, self-confidence and primarily your ignorance. You feel strong and impeccable if you find a consensus via peer-review, because you know that it would be hard disprove your statements since you can always come up with hardly verifiable argumentations like this one, because no real implementation of the idea exists. Thus you are victorious.
I do not like you (maybe not as person, because I do not know you personally) and this scientific society you are living and participating in. But anyway I will not stop you - feel free do to what you want. It is the "survival of the fittest", isn't it?
Maybe there will be some real-world implementation of the idea I described. I will send you a copy of the source code, so you can use it as foundation for your next articles about Nanokernels then.
This is hopefully my last Wikipedia post. Good luck with your new Nanokernel article - hopefully I will represent the reality much better by being based on "facts", not vague statements, because you would not them.
--Hyperyl 20:17, 17 September 2007 (UTC)[reply]

I've done as discussed and replaced it by a minimal page describing the historical uses of the term and referring to the relevant less ambiguous terms. Heiser 17:17, 4 October 2007 (UTC)[reply]

Recent Edits[edit]

  • I think the article has become more confusing again with the edits by User:Ruud Koot and User:Eyreland. The "definition" section only refers to the use of "nanokernel" in the sense of "microkernel". Yet the examples refer to completely different uses. The definition should make it clear that the term has been used inconsistently, rather than confusing the reader by examples which are inconsistent with the definition.
  • The reference to standards bodies is also confusing IMHO
  • What's the point of the "Classical examples" section? The list only contains systems that were never ever to my knowledge called "nanokernels". QNX is certainly a classical system, but Minix 3, being about 3 years old, is hardly, so this list is highly biased, and seems to add no value.
  • "Kernal" is incorrect spelling, kernel doesn't have an "a".
  • Time to remove the diagram-needed tag

Heiser (talk) 00:13, 12 February 2008 (UTC)[reply]