Difference between gnu and darwin and mach

These terms belong to the Mac OS X architecture topic and I'm confused about the following:

mach is said to be a microkernel

Darwin and XNU are mentioned to be a kernel

So ...can you help me to understand the separation of those terms and how they collaborate to power the Mac OS X environment please?


Solution 1:

I'll start at the core, and work my way out:

  • Mach is a microkernel, intended to provide only basic interprocess communication capabilities.
  • XNU is a hybrid kernel, consisting of the Mach microkernel with components of a more traditional ("monolithic") BSD unix kernel. It also includes the capability to load kernel extensions at runtime (to add features, device drivers, etc).
  • Darwin is a Unix OS consisting of the XNU kernel along with a variety of open-source utilities, libraries, etc. Some of the utilities in Darwin come from other flavors of BSD Unix, some from the GNU project, some were developed by Apple, etc.
  • OS X is Darwin, plus a lot of proprietary components, most notably its graphical interface APIs.