Per comprendere come il C effettui le chiamate di sistema è necessario pensare a una struttura dati nota come stack.
Possiamo immaginare uno stack come una pila di piatti,infatti lo stack funziona proprio come una pila di piatti nel senso quando un piatto viene sistemato nella pila esso normalmente viene posizionato sopra(operazione d’inserimento detta push).Similmente quando viene rimosso dalla pila,la rimozione avviene sempre dalla cima(operazione detta pop).
Gli stack sono conosciuti anche come strutture dati LIFO ovvero l’ultimo elemento inserito è il primo a essere rimosso.
Quando un programma richiama una funzione,la funzione chiamata deve sapere come restituire il controllo chiamante;quindi l’indirizzo di ritorno della funzione chiamante viene inserito nello stack di esecuzione del programma.
Lo stack di esecuzione del programma. contiene anche la memoria per le variabili locali utilizzate a ogni invocazione della funzione