
Most of you will know that the underlying core set of components of Mac OS X and the iPhone operating system are released under the Apple Public Source License, an FSF-approved open source license. Few of you, however, will have actually used Darwin in any other form than Mac OS X or the iPhone OS. Despite numerous projects attempting so, Darwin has never gained any significant traction apart from Apple's own interest. The PureDarwin project tries to rise from the
ashes of the OpenDarwin project, and has just
released a Christmas developer preview.
Member since:
2006-03-01
1) Darwin is NOT NT, and its architecture is now totally different;
2) NT too was based on a pure microkernel (actually a Mach derivative) for some time, in the early days
3) NT being hybrid doesn't have to do with filesystem and networking stacks being merged into the kernel, but with the latter being a layered (and "ringed") structure made of elements interfaced by versioned APIs and accessed with LPC
4) NT4+ applications could be written, link, and work the same way (and with the same runtime libraries) as application for previous (3.x) versions of NT, and these could continue to run on the newer (integrated hybrid) kernel - this was because (thanks to architectural provisioning for messaging, transactions and local RPC, and the use of a dispatch system) they were independent from whether function providers were in- kernel or external;
5) "inner core" facilities (those that would be placed in a microkernel too) like VM, scheduling, messaging, are logically separated from less vital ones (whose memory may also be *paged out* to disk, btw - few other monolit... ehm, macrokernels can swap out parts of their address space, afaik...);
then, NT can be said to have a *microkernel centered*, structured, hybrid kernel
at least less of a failure than some other OS's one at leveraging the monolithic kernel design...
if the monolithic approach is chosen to reduce context switch overhead;
but, if user space daemons have to be present anyway to supply functionality required for the base platform to *work* at all (functionality such as event notifications or messaged ipc, that even other *microkernels* have implemented internally for ages);
and moreover, if they have to communicate in the most inefficient way possible (plain marshaling over sockets, even for local interaction - when things like protected procedure calls and Lightweight RPC, have existed for decades on other systems);
then i'm inclined to believe that in that case, there's something wrong in the way the monolithic kernel has been designed and deployed ...
after all, everything boils down to NIH syndrome, doesnt it?
Edited 2008-12-31 20:23 UTC