Domanda Risolto Altro Differenza tra eccezione, interrupt e system call

giovy2707

Utente Electrum
27 Giugno 2019
96
38
62
103
Ultima modifica:
Avrei voluto pubblicarlo nella sezione "Sistemi operativi" direttamente il sito permette di pubblicare solo discussioni all'interno delle specifiche categorie di OS, quindi ho deciso di pubblicare la domanda nella sezione dei SO Linux.

Nel mio libro di "sistemi operativi" dell'università c'è questa frase:

1668515984712.png

Da come lo spiega mi sembra di capire che per lui, eccezione, interrupt e system call siano cose diverse, ma se cerco la definizione di eccezione su Wikipedia c'è questo:

1668516210953.png


Da qui possiamo quindi capire che per wikipedia, gli interrupt e le system call sono categorie di eccezioni... Devo dedurre che il libro usi il termine eccezione solo per riferirsi alle "trap"? Oppure c'è un errore da parte del libro o di wikipedia? Su altri siti ho notato che dicono che interrupt e trap sono categorie di eccezioni, ma non dicono nulla sulle system call....
Messaggio unito automaticamente:

Ok penso di aver risolto il problema, infatti poco dopo il libro dice ciò:

Una chiamata di sistema è solitamente realizzata come un’eccezione che rimanda a un indirizzo specifico nel vettore delle interruzioni. A tale eccezione si può dare esecuzione con un’istruzione "trap" generica, sebbene alcuni sistemi (come quelli appartenenti alla famiglia MIPS) abbiano un’istruzione syscall dedicata.
Quindi si, le system call sono eccezioni che quando vengono eseguite (tramite un istruzione "trap") riconducono a un particolare indirizzo all'interno del vettore dell interruzioni che conterrà la procedura da eseguire. Il libro a scopo informativo informa poi che in alcuni processori come quelli della famiglia MIPS abbiamo una istruzione (Assembly suppongo) apposita per le system call che è "syscall"
 
Non sorprenderti se le definizioni che leggi online non coincidono perfettamente con quelle del tuo libro. Non sono termini super-tecnici, quindi ogni autore usa un significato leggermente diverso per queste cose e anche online si trovano definizioni un po' contrastanti. Dal mio punto di vista:
  • interrupt: sono delle richieste di attenzione asincrone (ie., non dipendono da cosa sta facendo la cpu in questo momento) e sono principalmente causate da eventi hardware come ad esempio l'inserimento di una nuova nuova periferica;
  • trap: sono quelle che fanno passare un programma da user-mode a kernel-mode, l'esempio classico sono le syscall (software, chiamate dal programmatore) e i page fault (hardware, chiamate dalla MMU);
  • eccezioni: è la cpu che si è trovata a fare qualcosa di strano (divisione per zero, op code invalido, istruzione privilegiata in user-mode, etc.) e sta chiedendo al sistema operativo cosa deve fare.
Al di la della terminologia, la cosa importante è ricordarsi che le richieste d'attenzione possono essere sincrone e asincrone. La priorità varia, gli interrupt causati dalle periferiche I/O tipicamente hanno bassa priorità.

Avrei voluto pubblicarlo nella sezione "Sistemi operativi" direttamente il sito permette di pubblicare solo discussioni all'interno delle specifiche categorie di OS, quindi ho deciso di pubblicare la domanda nella sezione dei SO Linux.
Secondo me queste domande puramente teoriche sono più da sezione informatica. Per esempio, se vuoi sapere come funziona una cpu e apri la tua domanda nella sezione hardware -> processori e dissipatori va a finire che non ricevi risposte perché la maggior parte della gente che bazzica quella sezione è li per consigli sugli acquisti e manutenzione.
 
  • Grazie
Reazioni: giovy2707
Secondo me queste domande puramente teoriche sono più da sezione informatica. Per esempio, se vuoi sapere come funziona una cpu e apri la tua domanda nella sezione hardware -> processori e dissipatori va a finire che non ricevi risposte perché la maggior parte della gente che bazzica quella sezione è li per consigli sugli acquisti e manutenzione.
Hai ragione! Non ci avevo pensato, partivo dal fatto che stessi studiando sistemi operativi e quindi sono andato direttamente in questa sezione del forum, non avevo pensato che la sezione Informatica sarebbe stata più adatta 😅