Come fa un sistema operativo (preferibilmente Linux) a sapere che hai avuto accesso a una posizione di memoria che non ti è consentito?
Questa domanda è stata ispirata da quei maledetti puntatori! Per come la vedo io: tutto nei computer riguarda un compromesso tra velocità, sicurezza, integrità e cose del genere.
Sono ben consapevole delle mappe di memoria in Linux, ma mi sembra un po 'ridicolo che il kernel controlli se la posizione a cui stai tentando di accedere risiede in un intervallo valido OGNI VOLTA che fai un accesso. Sembra che perderebbe così tanto tempo, che potrebbe essere speso facendo qualcosa di più produttivo (ma forse meno sicuro senza alcun controllo!). O forse ricorda tutti gli accessi recenti e li controlla su ogni tick del timer hardware? (Ma sembra pericoloso e, ancora una volta, lento.)
Sono rimasto sorpreso dal fatto che questa domanda sembra essere senza risposta ovunque. È qualcosa che mi sono sempre chiesto. Mi fa pensare che ci sia una sezione dell'hardware che lo farà per conto del sistema operativo, in un livello di astrazione piacevole e conveniente. Tuttavia, sarebbe probabilmente necessario caricare le mappe di memoria dei processi successivi su ogni interruttore di contesto, che suona ancora lentamente.
Quindi sì, comunque, vado un po 'avanti: come fa un sistema operativo a rilevare una violazione della memoria?
Grazie