Perché syscall deve passare alla modalità kernel?
-
03-07-2019 - |
Domanda
Sto studiando per il mio sistema operativo finale e mi chiedevo se qualcuno potesse dirmi perché il sistema operativo deve passare alla modalità kernel per syscalls?
Soluzione
Una syscall viene utilizzata specificamente per eseguire un'operazione nella modalità kernel poiché il normale codice utente non è autorizzato a farlo per motivi di sicurezza.
Ad esempio, se si desidera allocare memoria, il sistema operativo ha il privilegio di farlo (poiché conosce le tabelle delle pagine ed è autorizzato ad accedere alla memoria di altri processi), ma come programma utente non dovrebbe essere consentito sbirciare o rovinare la memoria di altri processi. È un modo per inscatolarti. Quindi invii una syscall che richiede al sistema operativo di allocare memoria, e ciò accade a livello di kernel.
Modifica: vedo ora che l'articolo di Wikipedia è sorprendentemente utile su questo
Altri suggerimenti
Dato che questo è etichettato " compiti a casa " ;, non darò solo la risposta ma fornirò un suggerimento:
Il kernel è responsabile dell'accesso all'hardware del computer e della garanzia che le applicazioni non si incrocino l'una sull'altra. Cosa accadrebbe se qualsiasi applicazione potesse accedere a un dispositivo hardware (ad esempio il disco rigido) senza la collaborazione del kernel?