Una unità di gestione della memoria di un Motorola 68451

L'unità di gestione della memoria (in acronimo MMU, dall'inglese Memory Management Unit), indica una classe di componenti hardware che gestisce le richieste di accesso alla memoria generate dalla CPU.

Storia

modifica

Nelle prime realizzazioni, la gestione della memoria era eseguita in un circuito integrato separato dalla CPU, come ad esempio l'MC 68851 usato dalla CPU Motorola 68020 nel Macintosh II, o lo Z8010[1] usato dalla famiglia di processori Z8000 della ZiLOG. CPU più moderne quali il Motorola 68030 e lo Zilog Z280 possiedono MMU integrate nello stesso chip.

La maggior parte delle MMU funzionano con sistemi di memoria paginata. Esistono tuttavia altri sistemi per organizzare la memoria, come la segmentazione e l'indirizzamento base-limite, che ne è uno sviluppo. Alcune MMU funzionano anche con questi sistemi di memoria, che benché meno frequenti sono utilizzati in alcune architetture moderne di rilevanza notevole. Per esempio, l'architettura x86 può funzionare con memoria segmentata oltre che paginata.

Descrizione e caratteristiche

modifica

Le MMU moderne generalmente suddividono lo spazio degli indirizzi virtuali (l'intervallo di indirizzi accessibili dal processore) in pagine di memoria dimensione , tipicamente pochi kilobyte. Gli bit meno significativi dell'indirizzo (l‘offset all'interno della pagina) rimangono invariati, mentre i bit restanti rappresentano il numero virtuale della pagina. La MMU contiene una tabella delle pagine indicizzata (possibilmente associativamente) dal numero della pagina. Ogni elemento di questa tabella (detto PTE o Page Table Entry) restituisce il numero fisico della pagina corrispondente a quello virtuale, che, combinato con l'offset della pagina, forma l'indirizzo fisico completo. Un PTE può includere anche informazioni su quando la pagina è stata usata per l'ultima volta (per l'algoritmo di sostituzione LRU), quale tipo di processi (utente o supervisore) può leggerla e scriverla, e se deve essere inserita nella cache.

È possibile che non esista memoria fisica (RAM) allocata a una data pagina virtuale. In questo caso, la MMU segnala una condizione di «pagina di memoria mancante» (page fault) alla CPU. Il sistema operativo interviene per gestire questa condizione, cerca di trovare una pagina libera nella RAM e di creare una nuova PTE nella quale mappare l'indirizzo virtuale richiesto nell'indirizzo fisico della pagina trovata. Quando non c'è spazio disponibile nella RAM per una nuova pagina di memoria, può essere necessario scegliere una pagina esistente utilizzando un algoritmo di sostituzione, farne una copia su disco rigido e rimpiazzarla con quella nuova. Analogamente, quando non ci sono PTE inutilizzate a disposizione, il sistema operativo deve liberarne una.

In alcuni casi un page fault può indicare un errore nel software. Uno dei benefici della MMU è la protezione della memoria: un sistema operativo può usarla per proteggere la memoria da processi erranti, impedendo a un processo di accedere a locazioni di memoria non autorizzate. Tipicamente, il sistema operativo assegna a ogni processo il suo spazio di indirizzamento virtuale.

Utilizzo

modifica

La MMU può avere vari compiti tra cui la traslazione (o traduzione) degli indirizzi logici e simbolici in indirizzi fisici (necessaria per la gestione della memoria virtuale), la protezione della memoria, il controllo della cache della CPU, l'arbitraggio del bus, e, in architetture più semplici (specialmente nei sistemi a 8 bit), la commutazione di banchi di memoria.

La MMU riduce anche il problema della frammentazione della memoria. Dopo che blocchi di memoria precedentemente allocati sono stati liberati, la memoria libera può diventare frammentata (discontinua) quindi il blocco più grande di memoria libera contigua può essere molto più piccolo del totale. Con la memoria virtuale, blocchi non contigui di memoria fisica possono essere mappati in indirizzi virtuali contigui.

Note

modifica
  1. ^ Z8010_mmu Z8010 Mmu, su UserManual.wiki. URL consultato l'11 gennaio 2021.

Bibliografia

modifica

Voci correlate

modifica

Altri progetti

modifica

Collegamenti esterni

modifica
  Portale Informatica: accedi alle voci di Wikipedia che trattano di informatica

📚 Artikel Terkait di Wikipedia

OpenVMS

attendibili secondo le linee guida sull'uso delle fonti. OpenVMS (Open Virtual Memory System o originariamente solo VMS) è un sistema operativo sviluppato

Memoria virtuale

Britannica, Inc. (EN) Opere riguardanti virtual memory, su Open Library, Internet Archive. (EN) Denis Howe, virtual memory, in Free On-line Dictionary of Computing

Vmm

giusta. Vedi anche le voci che iniziano con o contengono il titolo. Virtual memory manager vmm – codice ISO 639-3 della lingua mitlatogo mixtec Valerio

Memoria cache

Virtual memory (Memoria virtuale), (vedi anche sotto Indirizzamento Virtuale), permette la memorizzazione di una pagina completa di memoria (Memory page)

Architettura Windows NT

significativi problemi di sicurezza con la seconda. Virtual Memory Manager: gestisce la memoria virtuale, permettendo a Windows 2000 di usare l'hard disk

Sticky bit

sistemi hardware con il supporto per l'accesso diretto alla memoria (Direct Memory Access) da parte dei dispositivi di memoria di massa, ed anche su quelli

Unità di gestione della memoria di input-output

informazioni su Sun IOMMU sono state pubblicate nella sezione Device Virtual Memory Access (DVMA) di Solaris Developer Connection. L'IBM Translation Control

Memory leak

In informatica, un memory leak ("perdita o fuoriuscita di memoria") è un particolare tipo di consumo non voluto di memoria dovuto alla mancata deallocazione