Memory Management Thread


Per ogni T-process, viene creato un Memory Menagement Thread, che si occupa di intercettare le trap causate dagli accessi in memoria non validi.

Una volta ricevuto il controllo dalla SSI (tramite la funzione passup) il MMT guarda il tipo di trap ricevuta e, se possibile, cerca di recuperarla.

  • Le trap di tipo "Segment Missing" e "Invalid Page Number", non si verificano mai per come sono state inizializzate le tabelle di pagina.

  • Il tipo "Access Protection Violation", che si verifica quando un thread in user mode cerca di accedere ai segmenti 0 e 1, determina la terminazione del T-Process (dopo avere stampato un messaggio di errore sul terminale).

  • In caso di "Page Missing" il gestore ricava il SEGNO e il PAGENO dal registro PS2; se SEGNO e' 0 o 1 si tratta, anche in questo caso, di un tentativo di accesso ai dati del nucleo, pertanto viene terminato il T-Process che ha causato la passup; altrimenti richiede al servente delle pagine (page_process) di fornire la pagina mancante, attende la risposta e risveglia il thread che ha causato la trap.



  • [LancOS Home] [AMPEOS Index] [Indice codice] [Fasi 1 & 2] [Fase 3]