Page 3 of 3
Posted: Mon Oct 01, 2007 10:06 pm
by Colonel Kernel
Schol-R-LEA wrote:Still, they are described as such not only in the corporate press puffery, but in a number of textbooks and published papers as well... obviously, someone other than their respective marketing depts. feels that they fit the description.
Really? Do you know who exactly, so I can flame
them?
I suppose that the view in some places is that a system which offloads anything into user space is a micro, without regard to whether it is a general abstraction of the system
Yes, which is why IMO so many people get confused about what a microkernel is. Consider single-address space systems like Singularity... it is clearly a microkernel. It has OS services in separate processes, but there is no concept of "user mode" because it uses software isolation instead of hardware isolation. "User mode" is an implementation detail.
Part of the matter is the question of, what constitutes a critical kernel service, and what can be safely and efficiently abstracted out to user space?
IMO this question is orthogonal to the question of whether or not something is a microkernel.
Perhaps what is needed is a layering or spaces - that there be a kernel space, a user space, and a 'service space' which isn't part of the kernel but does have additional protections beyond those of user processes - but that probably complicates issues unnecessarily
Yep. Ever looked at the layering in Minix? It is most definitely unnecessarily complex...
Posted: Mon Oct 01, 2007 10:12 pm
by Colonel Kernel
MessiahAndrw wrote:What is the threshold before a kernel is considered a microkernel? Placing severs and drivers into their own threads? Placing servers and drivers into their own memory? Running servers and drivers in user mode?
I sort of hinted at an answer in my last post, but to make it more clear: IMO a system is a microkernel if it has all drivers and servers in separate "processes" communicating via IPC. How you implement "processes" is up to you. It could mean separate address spaces using paging, it could mean separate "small spaces" using segmentation, it could mean just a unit of parallelism with no protection whatsoever (like a thread, but with resource ownership and identity), it could mean a software-isolated process that only runs verified type-safe code... It could even be a combination of the above in a single system.
For example, the Process Manager in QNX runs as a separate process. It communicates with other processes via IPC and with the kernel via system calls. However, it also has access to the kernel's address space so it can manipulate the page tables, since it is the memory manager for the entire system. However, despite this sharing of address space QNX is still a microkernel.
I don't know a lot about Amiga OS, but I've heard that it was basically a microkernel with no memory protection. It used message passing and separated all parts of the system into "processes", but all in the same address space.
This debate is like whack-a-mole on this site... it never goes away...
Posted: Tue Oct 02, 2007 6:34 pm
by Schol-R-LEA
Colonel Kernel wrote:Schol-R-LEA wrote:Still, they are described as such not only in the corporate press puffery, but in a number of textbooks and published papers as well... obviously, someone other than their respective marketing depts. feels that they fit the description.
Really? Do you know who exactly, so I can flame
them?
William Stallings for one, at least in the fourth edition of his book. I'd just been re-reading the section of his book on process/thread management and he stated repeatedly, in no uncertain terms, the Windows 2K (and presumably XP and Vista, which are primarily derived from it) is a microkernel system.
Posted: Sun Oct 07, 2007 4:39 pm
by Crazed123
Who actually uses that book?
Posted: Mon Oct 08, 2007 4:42 am
by AndrewAPrice
Apparently he does.