Chiamata di sistema
Una chiamata di sistema è una richiesta effettuata da un programma al sistema operativo. Consente a un'applicazione di accedere alle funzioni e ai comandi dell'API del sistema operativo.
Le chiamate di sistema eseguono operazioni a livello di sistema, come comunicare con i dispositivi hardware e leggere e scrivere file. Effettuando chiamate di sistema, gli sviluppatori possono usare funzioni già scritte e supportate dal sistema operativo (OS) invece di scriverle da zero. Questo semplifica lo sviluppo, migliora la stabilità delle app e rende le app più "portabili" tra diverse versioni di un OS.
Come funzionano le chiamate di sistema
Le applicazioni vengono eseguite all'interno di un'area della memoria chiamata spazio utente. Una chiamata di sistema accede al kernel del sistema operativo, che viene eseguito nello spazio del kernel. Quando un'applicazione effettua una chiamata di sistema, deve prima richiedere l'autorizzazione al kernel. Questa operazione può essere eseguita con una richiesta di interruzione, che sospende il processo corrente e trasferisce il controllo al kernel.
Se la richiesta è autorizzata, il kernel la elabora, ad esempio creando o eliminando un file. Quando l'operazione è completata, il kernel restituisce l'output all'applicazione, che trasferisce i dati dallo spazio del kernel allo spazio utente nella memoria. L'applicazione riceve l'output dal kernel come input. Nel codice sorgente di un programma, questo può essere il valore di un parametro o un valore restituito all'interno di una funzione. Una volta ricevuto l'input, l'applicazione riprende il processo.
Una chiamata di sistema di base, come ottenere la data e l'ora del sistema, può richiedere pochi nanosecondi. Una chiamata di sistema più avanzata, come stabilire la comunicazione con un dispositivo di rete, può richiedere alcuni secondi. Per evitare colli di bottiglia, la maggior parte dei sistemi operativi avvia un thread del kernel separato per ogni chiamata di sistema. I sistemi operativi moderni sono multithread, cioè possono elaborare più chiamate di sistema contemporaneamente.
Metti alla prova le tue conoscenze