Chiamata di sistema vs chiamata di funzione
Un tipico processore esegue le istruzioni una alla volta. Ma ci possono essere occasioni in cui il processore deve interrompere l'istruzione corrente ed eseguire qualche altro programma o segmento di codice (risiedendo in qualche altro posto). Dopo aver fatto ciò, il processore ritorna alla normale esecuzione e continua da dove era stato interrotto. Una chiamata di sistema e una chiamata di funzione sono tali occasioni. Una chiamata di sistema è una chiamata a una subroutine integrata nel sistema. Una chiamata di funzione è una chiamata a una subroutine all'interno del programma stesso.
Che cos'è una chiamata di sistema?
Le chiamate di sistema forniscono ai programmi in esecuzione sul computer un'interfaccia per comunicare con il sistema operativo. Quando un programma deve richiedere un servizio (per il quale non ha il permesso di farlo da solo) dal kernel del sistema operativo, utilizza una chiamata di sistema. I processi a livello di utente non hanno le stesse autorizzazioni dei processi che interagiscono direttamente con il sistema operativo. Ad esempio, per comunicare con un dispositivo I / O esterno o per interagire con altri processi, un programma utilizza le chiamate di sistema.
Cos'è una chiamata di funzione?
Una chiamata di funzione è anche chiamata una chiamata di subroutine. Una subroutine (nota anche come procedura, funzione, metodo o routine) fa parte di un programma più ampio che è responsabile dell'esecuzione di un'attività specifica. Il programma più grande può eseguire un carico di lavoro pesante e la subroutine può svolgere solo un semplice compito, che è anche indipendente dalla codifica del programma rimanente. Una funzione è codificata in modo tale che possa essere chiamata più volte e da luoghi diversi (anche all'interno di altre funzioni). Quando viene chiamata una funzione, il processore può andare dove risiede il codice per la funzione ed eseguire le istruzioni della funzione una per una. Dopo aver completato le funzioni, il processore ritorna esattamente nel punto in cui era stato interrotto e continua l'esecuzione a partire dall'istruzione successiva. Le funzioni sono un ottimo strumento per il riutilizzo del codice. Molti linguaggi di programmazione moderni supportano le funzioni. Una raccolta di funzioni è chiamata una libreria. Le librerie sono spesso utilizzate come strumenti per condividere e scambiare software. In alcuni casi, l'intero programma potrebbe essere una sequenza di subroutine (ad esempio la compilazione di codice threaded).
Qual è la differenza tra System Call e Function Call?
La chiamata di sistema è una chiamata a una subroutine integrata nel sistema, mentre una chiamata di funzione è una chiamata a una subroutine all'interno del programma. A differenza delle chiamate di funzione, le chiamate di sistema vengono utilizzate quando un programma deve eseguire alcune attività, per le quali non ha il privilegio. Le chiamate di sistema sono entry point nel kernel del sistema operativo e non sono collegate al programma (come le chiamate di funzione). A differenza delle chiamate di sistema, le chiamate di funzione sono portatili. L'overhead di tempo di una chiamata di sistema è più del sovraccarico per una chiamata di funzione perché deve avvenire una transizione tra la modalità utente e la modalità kernel. Le chiamate di sistema vengono eseguite nello spazio degli indirizzi del kernel, mentre le chiamate di funzione vengono eseguite nello spazio degli indirizzi degli utenti.