Differenza tra chiamata di sistema e interrupt

Sistema di chiamata o interrupt

Un processore tipico esegue le istruzioni uno per uno. Ma ci possono essere occasioni quando il processore deve interrompere temporaneamente e tenere l'istruzione corrente e eseguire un altro segmento di programma o di codice (che risiede in un altro luogo). Dopo averlo fatto, il processore torna all'esecuzione normale e continua da dove si è interrotta. Una chiamata di sistema e un interrupt 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 che eseguono sul computer un'interfaccia per parlare con il sistema operativo. Quando un programma deve chiedere un servizio (per il quale non dispone dell'autorizzazione stessa) 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 deve utilizzare chiamate di sistema.

Che cos'è un interrupt?

Durante la normale esecuzione di un programma di computer, potrebbero verificarsi eventi che possono causare la temporanea interruzione della CPU. Eventi come questo sono chiamati interrupt. Gli interrupt possono essere causati da errori software o hardware. Gli interrupt hardware vengono chiamati (semplicemente) Interrupt, mentre gli interrupt software vengono chiamati Eccezioni o Trappole. Una volta che un interrupt (software o hardware) viene sollevato, il controllo viene trasferito ad una speciale sottoprogramma chiamata ISR (Routing Service Service) che può gestire le condizioni che vengono sollevate dall'interruzione.

Come accennato in precedenza, il termine Interrupt è di solito riservato agli interrupt hardware . Sono interruzioni di controllo del programma causate da eventi hardware esterni. Qui, mezzi esterni esterni alla CPU . Gli interrupt hardware provengono normalmente da molte fonti diverse, quali chip timer, periferiche (tastiere, mouse ecc.), Porte I / O (seriali, parallele, ecc.), Unità disco, clock CMOS, schede di espansione scheda, scheda video, ecc.). Ciò significa che gli interrupt hardware non si verificano quasi mai a causa di qualche evento relativo al programma di esecuzione. Ad esempio, un evento come una pressione di una tastiera sulla tastiera da parte dell'utente o un timer di hardware interno può causare questo tipo di interrupt e può informare la CPU che un determinato dispositivo richiede una certa attenzione. In una situazione simile, la CPU interromperà ciò che stava facendo (ad esempio, mette in pausa il programma corrente), fornisce il servizio richiesto dal dispositivo e tornerà al normale programma.

Qual è la differenza tra chiamata di sistema e interrupt?

La chiamata di sistema è una chiamata a una subroutine integrata nel sistema, mentre l'interrupt è un evento che causa il processore a mantenere temporaneamente l'esecuzione corrente. Tuttavia, una differenza importante è che le chiamate di sistema sono sincrone, mentre gli interrupt non lo sono. Ciò significa che le chiamate di sistema si verificano in un momento fisso (generalmente determinato dal programmatore), ma gli interrupt possono verificarsi in qualsiasi momento a causa di un evento inaspettato, ad esempio una pressione di una tastiera sulla tastiera da parte dell'utente. Di conseguenza, quando si verifica una chiamata di sistema, il processore deve solo ricordare dove tornare, ma in caso di interrupt, il processore deve ricordare sia il luogo dove 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.