summaryrefslogtreecommitdiff
path: root/microkernel/mach/gnumach.mdwn
blob: 894adc762e686cd9907430995b05d24aaf561bb7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
[[!meta copyright="Copyright © 2001, 2002, 2007, 2008, 2011, 2013 Free Software
Foundation, Inc."]]

[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts.  A copy of the license
is included in the section entitled [[GNU Free Documentation
License|/fdl]]."]]"""]]

GNU Mach is the microkernel upon which a GNU Hurd system is based.  It provides
an Inter Process Communication (IPC) mechanism that the Hurd uses to define
interfaces for implementing in a distributed multi-server fashion the services
a traditional operating system kernel provides.

It is maintained by the Hurd developers for the GNU project and remains
compatible with [[Mach]] 3.0.

The majority of GNU Mach's [[device_driver]]s are from Linux 2.0.  They were
added using glue code, i.e., a Linux [[emulation]] layer in Mach.

GNU Mach runs on x86 machines.  See the
[[hardware_compatibility_list]] and information about
[[ports]] to other architectures.


# 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 [[interface]]s and some
features which make it useful as the base of the [[Hurd]] system.

  * **it's free software**
    
    Anybody can use, modify, and redistribute it under the terms of the
    [[GNU_General_Public_License_(GPL)|gpl]].

  * **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.

  * **it's scalable**
    
    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).

  * **it exists**
    
    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]].


# Booting

To actually use the kernel and boot the GNU operating system, you need a boot
loader.  Not all boot loaders are capable to boot the GNU system, you need one
that supports the multiboot standard.  The bootloader of the GNU system is
[[GNU_GRUB|grub]], which supports a broad range of operating systems including
GNU/Hurd.


# Development

  * [[Reference_Manual]]
  * [[Building]]
  * [[Debugging]]
  * [[Boot_Trace]]
  * [[Memory_Management]]
  * [[Continuation]]s
  * [[Preemption]]
  * [[Projects]]
      * [[Rules]]
      * [[Open Issues|tag/open_issue_gnumach]]