Revision 5043888 of "MMU" on glwiki

{{autotrad}}
[[File:MC68451 p1160081.jpg|thumb|MMU 68451 - Poderia ser utilizada no Motorola 68010]]
'''Unidade de Xestión de Memoria''' ou '''MMU''' (do [[lingua inglesa|inglés]] ''Memory Management Unit'') é un dispositivo [[hardware]] que traduce enderezos virtuais en enderezos físicos, é xeralmente implementada como parte da '''[[Unidade central de procesamento]]''' ou '''CPU''' (Central Processing Unit), mais pode tamén atoparse na forma dun circuíto integrado separado. Unha '''MMU''' é efectiva na administración da [[memoria virtual]], manipulación e protección de memoria, control de [[caché]] e, en arquiteturas máis simples de computadora, como en sistemas de 8 bits, bank switching.

En deseños anteriores de [[Microprocesador|microprocesadores]], a xestión de memoria era feita por un [[circuíto integrado]] separado como o do [[VLSI Technology|VLSI]] VI475 (1986), o [[Motorola 68851]](1984) usado coa CPU do [[Motorola 68020]] no Macintosh II, ou o Z8015 (1985)<ref>http://www.ic-on-line.cn/download.php?id=1636768&pdfid=8CDCD77507C0152F6FE7146D00161DE3&file=0319\z8015-cs_1637095.pdf, Abril 1985</ref> usado coa familia de procesadores Zilog Z8000. Mais tarde microprocesadores como o do Motorola 68030 ou Zilog Z280 colocaron a '''MMU''' xunto coa '''CPU''' nun mesmo circuíto integrado da mesma forma como o fixo a Intel 80286 e máis tarde os '''procesadores x86'''.
[[File:VLSI VI475 HMMU chip from an Apple Macintosh II - front.jpg|left|thumb|VLSI VI475 MMU "Apple HMMU" do Macintosh II utilizado no Motorola 68020]]
Na MMU, o valor no rexistro de re-localización é engadido a todo o enderezo lóxico xerado por un proceso do manexador na altura de ser enviado para a [[Memoria principal|memoria]].

O programa do manexador manipula enderezos lóxicos; él nunca ve enderezos físicos reais.

== Funcionamento ==
[[File:MMU principle updated.png|thumb|350x350px|Esquema da Operación dunha MMU.<ref>{{cita libro|nome = Andrew Stuart|sobrenome = Tanenbaum|título = Modern operating systems|ano = 2008|isbn = 0136006639}}</ref>]]
A memoria principal está dividida en dous tipos: a memoria física e a memoria lóxica. A memoria lóxica é aquela que é visíbel para os programas. A memoria física é a que é implementada en circuítos dixitais e é nela que a memoria lóxica é fisicamente almaceada, xeralmente a memria lóxica é maior que a memoria física. Para que o programa que utiliza a memoria lóxica poida ter unha memoria física alocada para si  é necesario un proceso de tradución de enderezos lóxicos a enderezos físicos, ese proceso debe ser realizado pola unidade de xestión de memoria ('''MMU''').<ref>{{cita web|URL = http://pt.wikiversity.org/w/index.php?title=Introdu%C3%A7%C3%A3o_aos_Sistemas_Operacionais/Ger%C3%AAncia_de_Mem%C3%B3ria&oldid=71873|título = Introdución aos Sistemas Operacionais/Xerencia de Memória|data = 22 xullo 2014 02h39min UTC|acessadoem = 25 maio 2015 23h43min UTC|autor = Contribuidores de Wikiversidade|publicado = Wikiversidade}}</ref>

O sistema actual da MMU divide o [[espazo de enderezamento]] virtual (enderezos utilizados polo procesador) en [[Memória paxinada|páxinas]], cuxo tamaño é de 2<sup>n</sup>, normalmente esas páxinas posuen poucos [[kilobyte]]s mais poden ser moito maiores. A maioria das MMUs usan unha taboa de páxinas na memória chamada "Page table" ([[Taboa de páxina]]), contendo unha "Page table entry" (PTE ou Entrada da taboa de páxinas en galego) por páxina, para mapear números de páxinas virtuais a números de páxinas físicas na memória principal. A PTE (Page table entry) usa unha caché asociada chamada [[Translation Lookaside Buffer]] (TLB) que é utilizada para evitar a necesidade de acceder a memória principal toda vez que un enderezo virtual é accedido. Outras Unidades de xestión de memoria poden ter unha matriz privada de memória<ref>''[http://bitsavers.trailing-edge.com/pdf/rca/spectra70/model46/70-46-601_70-46_RefMan_Mar68.pdf Spectra 70 70-46 Processor Manual] (PDF)'' .&nbsp;[[RCA]]. Março 1968. p.&nbsp;4. Recuperado Agosto 15,&nbsp;2013.</ref> ou [[Rexistrador (informática)|rexistradores]] que manteñan un conxunto de taboas de páxinas. Cando o TLB falla unha tradución, un mecanismo mais lento envolvendo un hardware específico de datos estruturados ou un software auxiliar é usado.<ref name="ucsd-lecture">{{cita web
| url = http://cseweb.ucsd.edu/classes/su09/cse120/lectures/Lecture7.pdf
| titulo = Lecture 7: Memory Management
| obra = CSE 120: Principles of Operating Systems
| ano = 2009 | accessdate = 2013-12-04
| autor = Frank Uyeda | publisher = UC San Diego
| formato = PDF
| lingua = inglês
}}</ref>

Normalmente o tamaño dunha páxina é de 4&nbsp;[[Kibibyte|KiB]]. Sendo así, nun espazo de enderezamento de 32 bits, cada proceso ten acceso a 4 GiB de memoria virtual, o que corresponde a 1 MB de páxinas de memoria.<ref name=":0" />

A '''PTE''' tamén ten información referente á modificación/escritura da páxina ('''dirty bit'''), cando ela foi utilizada por última vez (bit de acceso para a '''LRU'''(Least recently used) algoritmo de substituición de páxina), que tipo de procesos poden ler e escriber na páxina e se ela debe ir á caché.

As veces, a '''PTE''' prohíbe o acceso a unha páxina virtual, porque esta talvez non estea alocada na memoria RAM física. Neste caso a MMU sinaliza un “fallo na páxina" para a CPU, a partir de aí o sistema operativo intenta atopar un espazo vacio na RAM e xera unha nova PTE para mapear esa páxina para o enderezo virtual requisitado.<ref name="ucsd-lecture" />

== Vantaxes ==
Nalgúns casos, un erro de páxina pode indicar un “bug” no software, que pode ser prevido através da [[proteción de memória|proteción de memoria]]: un sistema operativo pode usalo para se protexer contra programas “errantes”, non permitindo o acceso á memoria que un programa específico non debería ter acceso. Normalmente, un [[sistema operativo]] atribúe a cada programa o seu propio espazo de enderezo virtual.<ref name="ucsd-lecture" />

A MMU tamén diminuíu o problema da fragmentación da memoria. Despois de que os bloques de memoria sexan alocados e liberados, a memoria libre pode ficar fragmentada. Coa memoria virtual, unha faixa continúa de enderezos virtuais poden ser mapeadas en varios bloques non continuos de memoria física, ese mapeamento de enderezos virtuais non continuos é un dos beneficios da paxinación.<ref name="ucsd-lecture" />

== Desvantaxes ==
A TLB(Translation Lookaside Buffer) ten un custo elevado debido ao custo dos rexistradores que posuen tamén un prezo elevado, seu tamanho é limitado e cada MMU posúe apenas unha única TLB sendo esta compartida por todos os procesos.<ref name=":0">{{cita web|URL = https://pt.wikibooks.org/wiki/Sistemas_operacionais/Ger%C3%AAncia_de_mem%C3%B3ria|título = Sistemas operacionais/Xestión de memória|data = |acessadoem = 24/05/2015|autor = |publicado = }}</ref>

== Exemplos ==
Moitos sistemas modernos dividen a memoria en páxinas co tamaño de 4 a 64 KiB, normalmente coa capacidade para usar paxinas grandes de 2 MiB a 1 GiB. As traducións das páxinas son almaceadas na '''TLB'''(Translation lookaside buffer).

== Ligazóns externas ==
* [http://www.cin.ufpe.br/~can/Arquivos/apoio290420053523_373.pdf Memoria virtual]

{{Tecnoloxías de CPU}}

{{Informática en progreso}}

{{Control de autoridades}}

[[Categoría:Informática]]