Differenza tra chiamata di sistema e chiamata di funzione
Chiamata di sistema e chiamata di funzione
Un tipico processore esegue le istruzioni uno per uno. Ma ci possono essere occasioni in cui il processore deve interrompere l'istruzione corrente e eseguire un altro programma o segmento di codice (che risiede in un altro luogo). Dopo aver fatto questo, il processore torna all'esecuzione normale e continua da dove è 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 che eseguono sul computer un'interfaccia per parlare con il sistema operativo. Quando un programma deve chiedere un servizio (per il quale non ha l'autorizzazione a farlo da solo) dal kernel del sistema operativo, utilizza una chiamata di sistema. I processi a livello utente non dispongono delle 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 qualsiasi altro processo, un programma utilizza chiamate di sistema.
Che cos'è una chiamata di funzione?
Una chiamata di funzione viene chiamata anche chiamata di subroutine. Una subroutine (nota anche come procedura, funzione, metodo o routine) fa parte di un programma più grande che è responsabile dell'esecuzione di un compito specifico. Il programma più grande può eseguire un carico di lavoro pesante e la subroutine può eseguire semplicemente un'operazione semplice, indipendente anche dalla restante codifica del programma. Una funzione viene codificata in modo tale che può essere chiamata più volte e da luoghi diversi (anche da altre funzioni). Quando viene chiamata una funzione, il processore può andare fino a dove risiede il codice della funzione e ad eseguire le istruzioni della funzione una a una. Dopo aver completato le funzioni, il processore tornerà esattamente dove è stato interrotto e proseguirà l'esecuzione a partire dall'istruzione successiva. Le funzioni sono un ottimo strumento per il riutilizzo del codice. Molti linguaggi di programmazione moderni supportano funzioni. Una collezione di funzioni è chiamata libreria. Le biblioteche sono spesso utilizzate come strumenti di condivisione e trading di software. In alcuni casi, l'intero programma potrebbe essere una sequenza di subroutine (ad esempio la compilazione di codici thread).
Qual è la differenza tra chiamata di sistema e funzione chiamata?
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 un'attività che non dispone di privilegio. Le chiamate di sistema sono punti di ingresso nel kernel del sistema operativo e non sono collegati al programma (come le chiamate di funzione).A differenza di chiamate di sistema, le chiamate di funzione sono portatili. L'overhead di una chiamata di sistema è più che l'overhead di una chiamata di funzione perché occorre verificare una transizione tra la modalità utente e la modalità del kernel. Le chiamate di sistema vengono eseguite nello spazio di indirizzi del kernel, mentre le chiamate di funzione vengono eseguite nello spazio degli indirizzi utente.