Elements of the Unix Process and I/O Model
1. rich model for IPC and I/O: “everything is a file”
file descriptors: most/all interactions with the outside world are through system calls to read/write from file descriptors, with a unified set of syscalls for operating on open descriptors of different types.
2. simple and powerful primitives for creating and initializing child processes
fork: easy to use, expensive to implement
3. general support for combining small simple programs to perform complex tasks
standard I/O and pipelines: good programs don’t know/care where their input comes from or where their output goes