# Calcolatori elettronici/La memoria virtuale

Calcolatori elettronici
Copertina Tutti i moduli · Sviluppo
    CopertinaCalcolatori elettronici/Copertina
* L'evoluzione dei sistemi di elaborazioneCalcolatori elettronici/L'evoluzione dei sistemi di elaborazione
* Il progetto di circuiti logiciCalcolatori elettronici/Il progetto di circuiti logici
* I processoriCalcolatori elettronici/I processori
* Architettura 8086Calcolatori elettronici/Architettura 8086
* Unità di controlloCalcolatori elettronici/Unità di controllo
* Introduzione alle memorieCalcolatori elettronici/Introduzione alle memorie
* Le memorie ad accesso casualeCalcolatori elettronici/Le memorie ad accesso casuale
* Le memorie cacheCalcolatori elettronici/Le memorie cache
* Le memorie ad accesso serialeCalcolatori elettronici/Le memorie ad accesso seriale
* La memoria virtualeCalcolatori elettronici/La memoria virtuale
* La gestione dei dispositivi input/outputCalcolatori elettronici/La gestione dei dispositivi input/output
* Intel 8255Calcolatori elettronici/Intel 8255
* Intel 8259Calcolatori elettronici/Intel 8259
* I busCalcolatori elettronici/I bus
* Le architetture a pipelineCalcolatori elettronici/Le architetture a pipeline
* Assembler 8086
          IntroduzioneCalcolatori elettronici/Introduzione
   * Informazioni generaliCalcolatori elettronici/Informazioni generali
   * Istruzioni di trasferimento datiCalcolatori elettronici/Istruzioni di trasferimento dati
   * Istruzioni aritmeticheCalcolatori elettronici/Istruzioni aritmetiche
   * Istruzioni per il controllo del flussoCalcolatori elettronici/Istruzioni per il controllo del flusso
   * Istruzioni per la manipolazione dei bitCalcolatori elettronici/Istruzioni per la manipolazione dei bit
   * Le procedureCalcolatori elettronici/Le procedure
   * Istruzioni per il controllo del processoreCalcolatori elettronici/Istruzioni per il controllo del processore
   * Formato delle istruzioni macchina, tempi di esecuzioneCalcolatori elettronici/Formato delle istruzioni macchina, tempi di esecuzione
Modifica il sommario
Quando la memoria principale fisica viene riempita, è necessario estenderla a una memoria virtuale, così il processore può accedere a indirizzi di memoria che superano lo spazio di indirizzamento. Secondo il principio di località dei riferimenti, nella memoria principale fisica si trovano le informazioni più usate, e le informazioni di minor utilizzo sono archiviate temporaneamente nella memoria secondaria. La memoria virtuale è suddivisa in blocchi detti pagine, grandi da 1 KB a 64 KB. Il processore e i programmi in realtà vedono solo un'unica memoria di dimensione corrispondente alla memoria complessiva.
Uno strato hardware, detto Memory Management Unit (MMU), intercetta gli indirizzi logici provenienti dal processore e li converte attraverso la Memory Address Table (MAT) negli equivalenti indirizzi fisici. In caso di miss, ossia quando l'informazione non si trova in memoria principale, il sistema operativo, attivato dalla MMU attraverso il segnale di page fault, interrompe il programma in esecuzione e trasferisce l'informazione richiesta dalla memoria virtuale a quella fisica, quindi riprende l'esecuzione del programma. Il meccanismo è efficiente se i page fault sono in numero minimo.
La MMU è integrata nel processore. La conversione degli indirizzi logici in fisici, compiuta prima di arrivare alla cache, deve essere effettuata in tempi minimi.
La MAT è memorizzata in memoria principale → ogni accesso a un indirizzo fisico richiederebbe un ulteriore accesso in memoria. Statisticamente in un intervallo di tempo il processore accede frequentemente alla stessa pagina → il TLB è una cache posta direttamente a bordo della MMU che memorizza le ultime entry della MAT usate.
Siccome la MMU opera via software, la hit ratio è più elevata di quella delle cache che funzionano in modo hardware, perché le pagine in memoria principale sono effettivamente quelle di maggior utilizzo.