MMU

Na Galipedia, a Wikipedia en galego.
Saltar ata a navegación Saltar á procura
MMU 68451 - Poderia ser utilizada no Motorola 68010

Unidade de Xestión de Memoria ou MMU (do 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 microprocesadores, a xestión de memoria era feita por un circuíto integrado separado como o do VLSI VI475 (1986), o Motorola 68851(1984) usado coa CPU do Motorola 68020 no Macintosh II, ou o Z8015 (1985)[1] 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.

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.

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

Funcionamento[editar | editar a fonte]

Esquema da Operación dunha MMU.[2]

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 poda 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).[3]

O sistema actual da MMU divide o espazo de enderezamento virtual (enderezos utilizados polo procesador) en páxinas, cuxo tamaño é de 2n, normalmente esas páxinas posúen poucos kilobytes mais poden ser moito maiores. A maioria das MMUs usan unha taboa de páxinas na memoria chamada "Page table" (Taboa de páxina), contendo unha "Page table entry" (PTE ou Entrada da táboa 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 memoria principal. A PTE (Page table entry) usa unha caché asociada chamada Translation Lookaside Buffer (TLB) que é utilizada para evitar a necesidade de acceder a memoria principal toda vez que un enderezo virtual é accedido. Outras Unidades de xestión de memoria poden ter unha matriz privada de memoria[4] ou rexistradores que manteñan un conxunto de táboas de páxinas. Cando o TLB falla unha tradución, un mecanismo máis lento envolvendo un hardware específico de datos estruturados ou un software auxiliar é usado.[5]

Normalmente o tamaño dunha páxina é de 4 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.[6]

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 escribir 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 localizada 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 baleiro na RAM e xera unha nova PTE para mapear esa páxina para o enderezo virtual requerido.[5]

Vantaxes[editar | editar a fonte]

Nalgúns casos, un erro de páxina pode indicar un “bug” no software, que pode ser previsto a través da 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.[5]

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.[5]

Desvantaxes[editar | editar a fonte]

A TLB(Translation Lookaside Buffer) ten un custo elevado debido ao custo dos rexistradores que posuen tamén un prezo elevado, o seu tamanho é limitado e cada MMU posúe apenas unha única TLB sendo esta compartida por todos os procesos.[6]

Exemplos[editar | editar a fonte]

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

Notas[editar | editar a fonte]

  1. http://www.ic-on-line.cn/download.php?id=1636768&pdfid=8CDCD77507C0152F6FE7146D00161DE3&file=0319\z8015-cs_1637095.pdf, Abril 1985
  2. Modern operating systems. 2008. ISBN 0136006639.  Parámetro descoñecido |sobrenome= ignorado (Axuda); |first1= sen |last1= in Authors list (Axuda)
  3. Contribuidores de Wikiversidade (22 xullo 2014 02h39min UTC). "Introdución aos Sistemas Operacionais/Xerencia de Memória". Consultado o 25 maio 2015 23h43min UTC.  Parámetro descoñecido |publicado= ignorado (suxírese |publicación=) (Axuda)
  4. Spectra 70 70-46 Processor Manual (PDF)RCA. Março 1968. p. 4. Recuperado Agosto 15, 2013.
  5. 5,0 5,1 5,2 5,3 Frank Uyeda (2009). "Lecture 7: Memory Management" (PDF). CSE 120: Principles of Operating Systems (en inglês). UC San Diego. Consultado o 2013-12-04. 
  6. 6,0 6,1 "Sistemas operacionais/Xestión de memória". Consultado o 24/05/2015. 

Véxase tamén[editar | editar a fonte]

Ligazóns externas[editar | editar a fonte]