Sistema di chiamata vs interrupt
Un tipico processore esegue le istruzioni una alla volta. Ma ci possono essere occasioni in cui il processore deve fermarsi temporaneamente e mantenere l'istruzione corrente ed eseguire qualche altro programma o segmento di codice (che risiede in qualche altro posto). Dopo aver fatto ciò, il processore torna alla normale esecuzione e continua da dove era stato interrotto. Una chiamata di sistema e un'interruzione sono tali occasioni. Una chiamata di sistema è una chiamata a una subroutine integrata nel sistema. Un interrupt è un'interruzione del controllo del programma causata da eventi hardware esterni.
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 dispone dell'autorizzazione stessa) 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 deve utilizzare le chiamate di sistema.
Cos'è un interrupt?
Durante la normale esecuzione di un programma per computer, potrebbero verificarsi eventi che possono causare l'arresto temporaneo della CPU. Eventi come questo sono chiamati interrupt. Gli interrupt possono essere causati da errori hardware o software. Gli interrupt hardware vengono chiamati (semplicemente) Interrupt, mentre gli interrupt software sono chiamati Exceptions o Trap. Una volta generato un interrupt (software o hardware), il controllo viene trasferito a una subroutine speciale chiamata ISR (Interrupt Service Routine) in grado di gestire le condizioni generate dall'interrupt.
Come accennato in precedenza, il termine Interruzione è solitamente riservato agli interrupt hardware. Sono interruzioni di controllo del programma causate da eventi hardware esterni. Qui, esterno significa esterno alla CPU. Gli interrupt di solito provengono da molte fonti diverse come il timer chip, periferiche (tastiere, mouse, ecc.), Porte I / O (seriali, parallele, ecc.), Unità disco, orologio CMOS, schede di espansione (scheda audio, video carta, ecc.). Ciò significa che le interruzioni hardware non si verificano quasi mai a causa di alcuni eventi correlati al programma in esecuzione. Ad esempio, un evento come una pressione di un tasto sulla tastiera da parte dell'utente o un timeout del temporizzatore hardware interno può sollevare questo tipo di interruzione e informare la CPU che un determinato dispositivo richiede una certa attenzione. In una situazione del genere, la CPU interromperà qualsiasi cosa stia facendo (cioè mette in pausa il programma corrente), fornisce il servizio richiesto dal dispositivo e tornerà al normale programma.
Qual è la differenza tra System Call e Interrupt?
La chiamata di sistema è una chiamata a una subroutine integrata nel sistema, mentre Interrupt è un evento che fa sì che il processore mantenga temporaneamente l'esecuzione corrente. Tuttavia una delle principali differenze è che le chiamate di sistema sono sincrone, mentre gli interrupt no. Ciò significa che le chiamate di sistema avvengono a un orario prestabilito (in genere determinato dal programmatore), ma gli interrupt possono verificarsi in qualsiasi momento a causa di un evento imprevisto, ad esempio una pressione di un tasto sulla tastiera da parte dell'utente. Pertanto, ogni volta che si verifica una chiamata di sistema, il processore deve solo ricordare dove tornare, ma nel caso di un'interruzione, il processore deve ricordare sia il luogo in cui tornare e lo stato del sistema. A differenza di una chiamata di sistema, un interrupt di solito non ha nulla a che fare con il programma corrente.