# <a name="Table_of_Contents"> Table of Contents </a> %TOC% # <a name="Introduction_to_GNU_Mach"> </a> Introduction to GNU Mach GNU Mach is the microkernel of the GNU system. A microkernel provides only a limited functionality, just enough abstraction on top of the hardware to run the rest of the operating system in user space. The GNU Hurd servers and the GNU C library implement the POSIX compatible base of the GNU system on top of the microkernel architecture provided by Mach. Currently, GNU Mach runs on IA32 machines. GNU Mach should, and probably will, be ported to other hardware architectures in the future. Mach was ported to many operating systems in the past. GNU Mach is maintained by the Hurd developers for the GNU project. If you need help with GNU Mach or want to contribute to the development of the microkernel, you should [contact the Hurd people](http://www.gnu.org/software/hurd/help.html). For another view, please see the [Wikipedia Mach kernel entry](http://www.wikipedia.com/wiki/Mach+kernel) -- [[Main/GrantBow]] - 02 Jun 2002 # <a name="Advantages_of_GNU_Mach"> </a> Advantages of GNU Mach GNU Mach is not the most advanced microkernel known to the planet, nor is it the fastest or smallest, but it has a rich set of interfaces and some features which make it useful as the base of the Hurd system. <dl> <dt><b>it's free software</b></dt> <dd> Anybody can use, modify, and redistribute it under the terms of the <a href="http://www.gnu.org/copyleft/gpl.html" target="_top">GNU General Public License (GPL)</a>.it's built to survive As a microkernel, GNU Mach doesn't implement a lot of the features commonly found in an operating system, but only the bare minimum that is required to implement a full operating system on top of it. This means that a lot of the operating system code is maintained outside of GNU Mach, and while this code may go through a complete redesign, the code of the microkernel can remain comparatively stable. </dd> <dt><b>it's scalable</b></dt> <dd> Mach is particularly well suited for SMP and network cluster techniques. Thread support is provided at the kernel level, and the kernel itself takes advantage of that. Network transparency at the IPC level makes resources of the system available across machine boundaries (with NORMA IPC, currently not available in GNU Mach). </dd> <dt><b>it exists</b></dt> <dd> The Mach microkernel is real software that works Right Now. It is not a research or a proposal. You don't have to wait at all before you can start using and developing it. Mach has been used in many operating systems in the past, usually as the base for a single UNIX server. In the GNU system, Mach is the base of a functional multi-server operating system, the Hurd. </dd> </dl> # <a name="Status_of_the_project"> Status of the project </a> GNU Mach is used as the default microkernel in the GNU/Hurd system. It is compatible with other popular Mach distributions. The device drivers for block devices and network cards are taken from Linux 2.0.x kernel versions, and so a broad range of common hardware is supported. However, the Linux device drivers have been improved greatly since the 2.0.x version, and a new version of Mach based on the OSKit library is being worked on, which uses newer drivers and in general has cleaner machine specific support code. ---- Copyright (C) 2001, 2002 Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. -- [[Main/JoachimNilsson]] - 13 May 2002 A unique advantage is being able to run a [Neighbor Hurd](http://www.gnu.org/software/hurd/howto/subhurd.html). -- [[Main/GrantBow]] - 28 Sep 2002 I don't want to refactor this content as it's a Verbatim copy. However I want to add that [[Mach/GnuMach]] 1.3 uses Linux drivers as of the Linux kernel version 2.0.36. -- [[Main/GrantBow]] - 09 Oct 2002