Computing History · Cluster
Unix Lineage
Design decisions that propagated.
- 01 The Three-Level Indirection Behind a Unix File Descriptor How a small integer reaches an inode through a per-process table and a shared open file description, and which operation copies which level.
- 02 Why fork and exec Are Separate Calls The two-step process creation model, what fork copies and what copy-on-write defers, and why the split survives despite its cost in a program that only wants to exec.
- 03 One Rooted Namespace: How Mounting Replaced Separate Volumes Why Unix names every file under a single root, how mount grafts a filesystem onto a directory, and what the resulting ambiguity costs in path resolution.
- 04 How argv and envp Reach a New Program Image The argument vector as a byte layout the kernel copies onto the new stack, the size limits that constrain it, and why the environment is a separate array rather than more arguments.
- 05 Signals as Deferred Interrupts and the Async-Signal-Safe Subset How a signal handler interrupts an arbitrary instruction, why most library calls are unsafe inside one, and what the small permitted subset actually guarantees.
- 06 Pipe Buffers, PIPE_BUF, and the Absence of Message Boundaries Why a pipe is an uninterpreted byte stream with a fixed kernel buffer, what the atomicity guarantee for small writes actually covers, and how writers detect the reader is gone.
- 07 Nine Permission Bits, Three Classes, and No Way to Deny How the mode word is checked at open time, why umask subtracts rather than assigns, and what setuid, setgid and the sticky bit change about the check.
- 08 The Close-on-Exec Race and Why Descriptor Inheritance Is a Hazard How exec preserves every descriptor a process holds, why setting the flag after fork is too late, and what O_CLOEXEC closes that fcntl cannot.
- 09 procfs and the Limits of Representing Kernel State as Files How a virtual filesystem synthesises readable text for process and kernel state, why the files violate ordinary file assumptions, and where the interface gives inconsistent answers.
- 10 Sessions, Process Groups, and the Controlling Terminal How the kernel groups processes for signal delivery and job control, why the controlling terminal is a session property, and what happens to a process left in the background.