The Abstract Idea of Process A process is a virtual machine, relying on system calls It interacts trhough memory and system calls, nothing more A process is a sequence of instructions Running within a virtual memory space Communicating through file descriptors Ready to handle signals Carrying its own env, cwd, root, limits, ... A thread, in Linux, is just a process There's no technical reason to differentiate The illusion of "threads" is built towards user space (but TID exists) Sharing (or lack thereof) of state is handled by clone(2) bits Every process is executing a binary file There is no exception possible: no filesystem means no process Kernel threads are an exception Great idea, but out of scope now