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