Chiamata di sistema vs chiamata di funzione
Un tipico processore esegue le istruzioni una per una. Ma ci possono essere occasioni in cui il processore deve interrompere l'istruzione corrente ed eseguire qualche altro programma o segmento di codice (che risiede in qualche altro posto). Dopo aver eseguito questa operazione, il processore torna alla normale esecuzione e continua da dove si era interrotto. Una chiamata di sistema e una chiamata di funzione sono queste occasioni. Una chiamata di sistema è una chiamata a una subroutine incorporata nel sistema. Una chiamata di funzione è una chiamata a una subroutine all'interno del programma stesso.
Cos'è una chiamata di sistema?
Le chiamate di sistema forniscono ai programmi in esecuzione sul computer un'interfaccia per dialogare con il sistema operativo. Quando un programma ha bisogno di 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 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 chiamata di subroutine. Una subroutine (nota anche come procedura, funzione, metodo o routine) fa parte di un programma più ampio responsabile dell'esecuzione di un'attività specifica. Il programma più grande può eseguire un carico di lavoro pesante e la subroutine può eseguire solo un compito semplice, che è anche indipendente dalla codifica del programma rimanente. Una funzione è codificata in modo tale da poter essere chiamata più volte e da luoghi diversi (anche dall'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 tornerà esattamente dove era stato interrotto e continuerà 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 libreria. Le biblioteche sono spesso utilizzate come mezzo per condividere e scambiare software. In alcuni casi, l'intero programma potrebbe essere una sequenza di subroutine (es. Compilazione di codice in thread).
Qual è la differenza tra System Call e Function Call?
La chiamata di sistema è una chiamata a una subroutine incorporata 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 dispone dei privilegi. Le chiamate di sistema sono punti di ingresso 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ù dell'overhead di 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 dell'utente.