1 / 9

MEMORIA VIRTUAL

MEMORIA VIRTUAL. Las personas se enfrentaron por primera vez con programas que eran demasiados grandes para caber en la memoria disponible. La solucion fue dividir el programa en fragmentos llamados superposiciones . Los fragmentos del programa eran hechos por el programador.

Télécharger la présentation

MEMORIA VIRTUAL

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. MEMORIA VIRTUAL Las personas se enfrentaron por primera vez con programas que eran demasiados grandes para caber en la memoria disponible. La solucion fue dividir el programa en fragmentos llamados superposiciones. Los fragmentos del programa eran hechos por el programador. Esta solucion era tediosa y consumia demasiado tiempo. Entonces llegaron al metodo ahora conocido como Memoria Virtual. La idea es que el programa con todas sus componentes podian exceder la cantidad de memoria fisica disponible. Se usa comunmente una tecnica llamada paginacion. Cuando ejecutas el comando MOV REG,1000 esta copiando el conrenido de la direccion de a 1000 a REG. Las direcciones generadas por programas se llaman direcciones virtuales y constituyen el espacio de direcciones virtuales. Si no hay memoria virtual en la computadora, la dirrecion se pone en el bus y se trata de leer la direccion de memoria. Si tiene memoria virtual, se envia a una unidad de administracion de memoria (MMU), y transforma la direccion virtual en fisica.

  2. El espacio de direccion virtual se divide en unidades llamadas paginas. Las unidades correspondientes en memoria fisica se llaman marco de pagina. Las paginas y marcos de paginas siempre tienen el mismo tamano. Usualmente se se asigna tamano de pagina desde 512 bytes hasta 64K. Ejemplo: Un programa ejecuta el comendo MOV REG,0, la direccion 0 se envia a la MMU, esta checa que queda en la pagina 0(0 a 4095) que, segun su transformacion es el marco de pagina 2(8192,12287). La direccion virtual 20500 se encuentra a 20 bytes despues del inicio de la pagina virtual 5(20480,24575) y se transforma en la direccion fisica 12288 + 20 = 12308. Dado que tenemos solo ocho marcos fisicos, solo 8 de las paginas virtuales tandran correspondecia con la memoria fisica, las otras no se transformaran. En el hardware real, un un bit de presente/ausente indica si la pagina tiene correspondencia o no.

  3. Si un programa usa, por ejemplo, la instruccion MOV REG,32780 que es el byte doce de la pagina ocho (32768), la MMU se da cuenta de que no tiene correspondencia dicha pagina, hace que el CPU entrampe al sistema operatico, Esta trampa se llama fallo de pagina. El sistema operativo escoge un marco poco utilizado, copia su contenido al disco duro, luego trea la pagina a la que se hizo referencia y lo coloca en el marco recien liberado, modifica el mapa y reinicia la instruccion atrapada. El numero de pagina se utiliza como indice en la tabla de paginas. Si el bit presente/ausente es 0, se genera una trampa al sistema operativo; de lo contrario se copian los tres bits de orden alto del regristro de salida, junto con la distancia de 12 bits. El proposito de las tablas de paginas es transformar paginas virtuales en marcos de referencia. En terminos matematicos, la tabla es una funcion, con el numero virtual como argumento y el numero de marco fisico como resultado. Hay dos problemas importantes que se deben resolver: 1.- La tabla de paginas puede ser extremadamente grande. 2.- La transformacion debe ser rapida. El primer punto se debe del hecho de que las computadoras modernas utilizan direccion virtuales de por lo menos 32 bits. Con un tamano de pagina de, digamos 4K, un espacio de direcciones de 32 bits tendria 1 millon de paginas.

  4. El segundo punto se debe al hecho de que la transformacion de virtual a fisica se debe efectuar en cada referencia a la memoria. Con el objeto de superar el problema de tener tablas de paginas enormes en la memoria todo el tiempo, muchas computadoras usan una tabla de pagina multinivel. El secreto de este metodo es evitar mantener todas las tablas en la memoria todo el tiempo, en particular, las tablas que no se necesiten, no deben estar ahi. La entrada que se ubica indizando en la tabla de paginas de nivel superior, contiene la direccion de o el numero de marco de pagina de una tabla de paginas de segundo nivel.

  5. La entrada de 0 de la table de paginas de nivel superior apunta a la tabla de paginas para el texto del programa. La entrada 1 apunta a la entrada de paginas de datos, y la entrada 1023 apunta a la tabla de paginas para la pila. Apesar de que el espacio de direcciones contiene mas de un millon de paginas, solo se necesitan cuatro tablas y las tablas de segundo nivel correspondientes a 0 a 4M, 4M a 8M y los 4M superiores. El sistema de paginas se puede ampliar a mas de dos niveles. Una mayor cantidad confiere una mayor flexibilidad, pero es dudoso que la complejidad adicional se justifique mas hay de los tres niveles. El tamano de entrada de tabla, depende de la maquina, pero en general es de 32 bits. El campo mas importante es el numero de marco de pagina, el objetivo de la transformacion de paginas es localizar ese valor. Depues esta el bit presente/ausente. Los bits de proteccion indican que clase de acceso esta permitida (lectura o escritura).

  6. El bit Modificada indica si ha sido modificada dicha entrada. Cuando se escribe el hardeware lo enciende. Este bit tambien se conoce como bit sucio ya que refleja el estado del pagina, sea para lectura o escritura. El bit Referida se enciende que se hace referencia a una pagina. El ultimo bit puede inabilitar la colocacion en cache de la pagina. Es importante en el caso de paginas que correspondan a registros de dispositivos en lugar de memoria. Si hay paginacion en el momento de ejecucion de un programa, se requieren referencias adicionales a la memoria para acceder a la tabla de paginas. Tener que referirse dos veces a la tabla de paginas por cada referencia a la memoria, reduce el rendimiento a una tercera parte. La solucion encontrada es equipar el hardware con un pequeno dispoditivo, llamado TLB(buffer de consulta para traduccion, en ingles, Translation Lookaside Buffer)o tambien llamada memoria asociativa. Cuando llega una direccion para ser traducida, lo que hace el hardware, es checar si su numero de pagina virtual esta presente en el TLB, comparando todas las entradas simultaneamenta (en paralelo). Si esta y no viola los bits de proteccion, el marco de pagina se toma directamente del TLB.

  7. En algunas computadoras (HP PA, Alpha, MIPS) la administracion del TLB se hace mediante software. Esto deja mas espacion en CPU para poner otras cosas.

  8. Las tablas de paginas vistas hasta ahorita, necesitan una entrada por cada pagina virtual. En una computadora de 32 bits se necesitarian 4 megabytes minimo para el almacenamiento de la tabla. En una de 64 bits se requeririan 10^15 bytes (1 tb!) para la tabla de paginas. Se requiere una solucion distinta para este tipo de computadoras. Una solucion es tabla de paginas invertidas. En este diseno, hay una entrada por marco de pagina de la memoria real, no por cada pagina del espacio de direcciones virtual. Con esto se ahorra espacio en RAM. Pero tiene un problema: la traduccion de virtual a fisica se vuelve mucho mas dificil. Cuando el proceso n hace referencia a la pagina virtual p, el hardware debe buscar en toda la de paginas invertida una entrada (n,p). La solucion es usar el TLB. Puede contener todas las paginas de uso pesado. Sin embargo, si ocurre una falla de TLB, habra que buscar en la tabla de paginas invertidas. Si se usa una tabla de dispersion como indice de la tabla de paginas invertida, la busqueda se optimiza.

More Related