Un programma è un file eseguibile residente sul disco. Può essere eseguito tramite un comando di shell oppure invocando una funzione exec(). Un processo è una istanza del progamma che sta eseguendo. Ogni processo ha un identificatore unico nel sistema, detto process ID, che è un intero non negativo.
Quindi, se lanciamo due volte lo stesso programma otteniamo 2 processi distinti, ognuno con il suo process ID. Un processo può ottenere il suo ID invocando la primitiva getpid(). Nel capitolo 4 presenteremo meglio il concetto di processo nel contesto della multi-programmazione. In questo capitolo ci concentreremo sul layout di memoria di un processo, e sulle sue interazioni con il sistema operativo.
Dato che il linguaggio più usato in assoluto nei sistemi Unix è il C, e dato che tutti i prototipi delle chiamate di sistema sono espresse in C, vale la pena fare qualche richiamo sulla struttura di un programma scritto in C.