Una system call è un meccanismo usato da un processo a livello utente o livello applicativo per richiedere un servizio a livello kernel dal sistema operativo, permettendo di creare programmi che interagiscono direttamente con il kernel.

La libreria standard C di linux include delle funzioni che sono dei wrapper delle loro system call corrispondenti, infatti hanno anche lo stesso nome. Ciò è utile perché permette un decoupling tra la definizione in C delle system call e la loro implementazione specifica del sistema.

Segue che la GNU C Library intera è un wrapper della system call interface del kernel linux.

Le definizioni delle system call si può trovare nella sezione 2 del man:

man 2 nome_sys_call

Differenza tra funzioni di libreria general purpose e system call

Una funzione di libreria general purpose non è un punto di accesso ai servizi del kernel, ma può invocare zero, una o più system call durante la sua esecuzione. Le loro definizioni si possono trovare nella sezione 3 del man.

In sostanza le system call offrono un’interfaccia minimale al kernel e possono essere le componenti fondamentali usate da funzioni general purpose che offrono in modo più semplice delle funzionalità più elaborate al programmatore.

Ad esempio sbrk è la sys-call che permette di allocare la memoria a livello kernel, ed è usata dalla funzione general-purpose malloc che gestisce l’area di memoria in user mode. Sarebbe impossibile implementare malloc senza usare sbrk.

N.B.: Entrambe le funzioni general purpose e le system calls possono essere invocate direttamente dai programmi.