Mach

Glossary

Terms used on this site and in Mach papers, in alphabetical order.

Backronym
A phrase invented after the fact to fit a name. "Muck", a joke expansion of Multi-User Communication Kernel, is the backronym behind the spelling "Mach". See History.
Bootstrap port
A port a task is given at start-up that leads to a server which hands out other ports by name. It is how programs find services without a global namespace. On macOS the launch daemon plays this part.
Capability
A token that grants access to something and cannot be forged. In Mach a port right works as one: what a program can do depends on the rights it holds.
Continuation
A way of blocking a thread without keeping its kernel stack. The thread resumes by calling a saved function. Mach 3.0 used it to cut per-thread space and speed up some paths (paper).
Copy-on-write
Two parties share a page until one writes to it, and the write makes a private copy first. Mach uses it for inherited memory and for large message bodies.
Dead name
What a port right becomes when its port is destroyed. The holder still has the name, but sending to it fails.
Default pager
The pager that backs ordinary anonymous memory, such as heap and stack pages that have no file behind them.
Exception port
A port that receives a message when a thread faults, so a handler outside the faulting thread can deal with it. The 1988 Mach exception handling paper is listed in the CMU publication archive.
External pager
A user-space program that supplies the pages of a memory object when the kernel needs them. See Concepts.
GNU Hurd
A set of servers that run on a Mach microkernel and together make up an operating system. Its default microkernel is GNU Mach. See Implementations.
Hybrid kernel
A kernel that keeps a microkernel core but runs a large part of the operating system inside the kernel too. Apple describes XNU this way. See Common questions.
IPC
Inter-process communication. In Mach this means sending messages to ports.
L4
A family of microkernels that started with Jochen Liedtke in 1993 and put fast IPC first. It includes seL4. See Common questions.
Memory object
The thing that backs a region of a task's address space. A pager supplies its pages.
Message
A unit of communication sent to a port. It can carry plain data, port rights and regions of memory.
Microkernel
A kernel that keeps only the essentials, usually scheduling, memory and message passing, and runs everything else as ordinary programs.
MIG
The Mach Interface Generator. It compiles an interface definition into the stubs that turn a procedure call into a message and back (paper).
Monolithic kernel
A kernel that runs the file systems, drivers and network stack inside one privileged program. Linux is an example.
OS personality
A server, with a small stub in each program, that gives programs the interface of a particular operating system. See Concepts.
Pager
See external pager.
Port
A message queue that the kernel owns and protects. Programs reach it only through port rights.
Port name
A number a task uses to refer to a port right it holds. The name means something only inside that task.
Port right
Permission to use a port. The kinds are receive, send and send-once. See Concepts.
Port set
A group of ports that a thread can wait on at once, receiving from whichever one has a message first.
Receive right
The right to take messages off a port. Only one task holds it at a time.
seL4
A microkernel in the L4 family with a formal proof of functional correctness. Mach has no such proof.
Send right
The right to send messages to a port. Any number of tasks can hold one.
Send-once right
A right that allows exactly one send. It is used for replies.
Task
A container for resources: an address space and a set of port rights. It runs nothing by itself.
Thread
The unit of execution. It runs inside a task, and a task can have many.
XNU
The kernel of Apple's macOS, iOS and other platforms. It combines a modified Mach, BSD code and the I/O Kit. The name stands for "X is Not Unix".