Memoria Virtual

9,939 views
9,674 views

Published on

Published in: Technology, Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
9,939
On SlideShare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
315
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Memoria Virtual

  1. 1. Memoria Virtual<br />Trabajo Elaborado por:<br />Josué Daniel Aldana Kuant.<br />María Isabel Parajon.<br />Evelyn Castellón.<br />Lunes 31 de agosto del 2009<br />
  2. 2.  La memoria es uno de los principales recursos de la computadora, la cual debe de administrarse con mucho cuidado.  <br />Aunque actualmente la mayoría de los sistemas de cómputo cuentan con una alta capacidad de memoria, de igual manera lasaplicaciones actuales tienen también altos requerimientos de memoria, lo que sigue generando escasez de memoria en los sistemasmultitarea y/o multiusuario.<br />      La parte del sistema operativo que administra la memoria se llama administrador de memoria y su labor consiste en llevar un registro de las partes de memoria que se estén utilizando y aquellas que no, con el fin de asignar espacio en memoria a los procesos cuando éstos la necesiten y liberándola cuando terminen, así como administrar el intercambio entre la memoria principal y el disco en los casos en los que la memoria principal no le pueda dar capacidad a todos los procesos que tienen necesidad de ella.<br />Introducción<br />
  3. 3. La memoria virtual es una técnica que permite ejecutar procesos que no caben totalmente en memoria RAM (memoria física). Esto propicia la creación de programas que sean más grandes que la memoria física. Además, la memoria virtual ayuda a crear un esquema de abstracción de la memoria que la separa de la zona lógica que el usuario ve, esto facilita enormemente la tarea a los programadores puesto que no se han de preocupar por limitaciones de memoria. Los procedimientos de implementación de la memoria virtual se basan en que cuando se ejecuta un programa, éste está parcialmente en memoria, es decir, sólo hay cargada aquella zona de código y datos que se necesitan en ese instante de tiempo, y no el programa completo. La memoria virtual es la separación entre la memoria lógica disponible para el usuario y la memoria RAM, se implementa generalmente con el método de paginación por demanda aunque también se puede implementar en un sistema con segmentación.<br />¿Qué es la memoria virtual?<br />
  4. 4. En el momento en que en el sistema empieza a escasear la memoria, se crea un fichero SWAP (intercambio) en el disco que sirve como ampliación auxiliar de memoria. En el caso de Windows, cuando tenemos muchas aplicaciones en funcionamiento y la memoria RAM se agota, el sistema se apoya en el fichero SWAP para realizar movimientos desde el disco duro a la RAM y viceversa. De ese modo crean espacios en memoria física para ir ejecutando las órdenes. Esto, evidentemente, hace que el sistema vaya más lento. Todo ello permite simular la existencia de 4GB de RAM en el equipo, a pesar de que nadie dispone de 4GB en su ordenador (a excepción de algunos sistemas en empresas y universidades), y dar capacidad de ejecución a múltiples aplicaciones por grandes que sean.<br />
  5. 5. En Windows, se puede configurar en panel de control&gt;sistema&gt;opciones avanzadas&gt;rendimiento&gt;opciones avanzada vemos en la ultima parte donde dice: Memoria Virtual y le damos al botón cambiar, seleccionamos &quot;Tamaño Personalizado&quot; y en Tamaño Inicial colococamos por ejemplo si tuviéramos 128mb colocamos eso y en Tamaño Máximo debemos multiplicar por 3 la cantidad de memoria que tengamos como explique en el ejemplo, 128mb x 3 = 384, colocamos eso, para finalizar le damos a establecer y nos pedirá que reiniciemos. Como muchos de nosotros somos curiosos nos dará ganas de probar diferentes opciones, pero nunca coloquen la opción sin archivo de paginación, al menos de que tengas mas de 1GB de memoria. <br />Configuración de la Memoria Virtual en Windows.<br />
  6. 6. El mecanismo básico de lectura de una palabra de la memoria supone la traducción por medio de la tabla de páginas de una dirección virtual o lógica, formada por un número de página y un desplazamiento, a una dirección física que está formada por un número de marco y un desplazamiento.<br />Con la memoria virtual, la CPU produce direcciones virtuales que son traducidas por una combinación de hardware y software a direcciones físicas, pues pueden ser utilizadas para acceder a memoria principal. Este proceso se denomina correspondencia de memoria o traducción de direcciones. Actualmente los dos niveles de la jerarquía de memoria controlados por la memoria virtual son las DRAM y los Discos magnéticos.<br />Puesto que la tabla de páginas es de longitud variable, en función del tamaño del proceso, no es posible suponer que quepa en los registros.<br />Estructura de la tabla de paginas.<br />
  7. 7. Traducción de direcciones en un sistema de paginación<br />
  8. 8. Cada referencia a la memoria virtual puede generar dos accesos a la memoria: uno para obtener la entrada  de la tabla de páginas correspondientes y otro para obtener el dato deseado.<br />Un esquema sencillo de memoria virtual podría tener el efecto de doblar el tiempo de acceso a la memoria. Para solucionar este problema, la mayoría de los esquemas de memoria virtual hacen uso de una cache especial para las entradas de la tabla de páginas, llamada generalmente buffer de traducción adelantada (TLB,Translation Lookaside Buffer) que contiene aquellas entradas de la tabla de páginas usadas hace menos tiempo. <br />La organización de hardware de paginación resultante se muestra en la figura siguiente.<br />Buffer de traducción adelantada<br />
  9. 9.
  10. 10.  Dada una dirección virtual, el procesador examinará primero la TLB. Si  la entrada de la tabla de páginas buscada está presente se obtiene el número de marco y se forma la dirección real. Si no se encuentra, el procesador emplea el número de página como índice para buscar en la tabla de páginas del proceso y examinar la entrada correspondiente de la tabla de páginas. Si no se encuentra activo el bit de presencia, es que la página está en la memoria principal y el procesador puede obtener el número de marco de la entrada de la tabla de páginas para formar la dirección real. El procesador, además, actualiza la TLB para incluir esta nueva entrada de la tabla de páginas. Si el bit de presencia no está activo, es que la página buscada no está en la memoria principal y se produce un fallo en el acceso a la memoria, llamado fallo de página.<br />
  11. 11. La segmentación permite al programador contemplar  la memoria como si constara de varios espacios de direcciones o segmentos. Los segmentos pueden ser de distintos tamaños, incluso de forma dinámica. Las referencias a la memoria constan de una dirección de la forma (número de segmento, desplazamiento).<br />Esta organización ofrece al programador varias ventajas sobre un espacio de direcciones no segmentado:<br />1.          Simplifica la gestión de estructuras de datos crecientes. Si el programador no conoce a priori cuán larga puede llegar a ser una estructura de datos determinada, es necesario suponerlo a menos que se permitan  tamaños de segmentos dinámicos. Con memoria virtual segmentada, a la estructura de datos se le puede asignar a su propio segmento y el S.O expandirá o reducirá el segmento cuando se necesite.<br />2.          Permite modificar y recopilar los programas independientemente, sin que sea necesario recopilar o volver  a montar el conjunto de programas por completo.<br />3.          Se presta a la compartición entre procesos. Un programador puede situar un programa de utilidades o una tabla de datos en un segmento que puede ser referenciado por otros procesos.<br />4.          Se presta a la protección. Puesto que un segmento puede ser construido para albergar un conjunto de procedimientos y datos bien definido, el programador o el administrador del sistema podrá asignar los permisos de acceso de la forma adecuada.<br />Segmentación<br />
  12. 12. Tanto la paginación como la segmentación tienen sus ventajas. La paginación elimina la fragmentación externa y de este modo, aprovecha la memoria principal de forma eficiente. Además, puesto que los fragmentos que se cargan y descargan de la memoria principal son de tamaño fijo e iguales, es posible construir algoritmos se gestión de memoria sofisticados que aprovechen mejor el comportamiento de los programas. La segmentación tiene las ventajas antes citadas, incluida la capacitación de gestionar estructuras de datos que puedan crecer, la modularidad y el soporte de la compartición y la protección. Para combinar las ventajas de ambas, algunos sistemas están equipados con hardware del procesador y software del S.O. <br />Paginación y Segmentación Combinada<br />
  13. 13. En un sistema con paginación y segmentación combinadas, el espacio de direcciones de un usuario se divide en varios segmentos según el criterio del programador. Cada segmento se vuelve a dividir en varias páginas de tamaño fijo, que tienen la misma longitud que un marco de memoria principal. Si el segmento tiene menor longitud que la página, el segmento ocupará sólo una página. Desde el punto de vista del programador, una dirección lógica todavía está formada por un número de segmento y un desplazamiento en el segmento. Desde el punto de vista de sistema, el desplazamiento del segmento se ve como un número de página dentro del segmento y un desplazamiento dentro de la página.<br />
  14. 14.  Un proceso de usuario sólo puede acceder memoria localizada en su espacio de direccionamiento virtual y un espacio de memoria compartido para sus procesos-hijo.<br />    Habilidad de separar completamente las tareas, al poder dar a cada tarea un espacio de direcciones virtuales diferentes. Esto se hace dando un mapa de traducción de direcciones virtuales diferente a cada tarea.    Los otros mecanismos funcionan dentro de una tarea: para proteger al propio sistema operativo de la intrusión por parte de esa tarea, y al uso de registros especiales del procesador e instrucciones reservadas únicamente al sistema operativo.    Sólo un proceso kernel puede controlar y acceder cualquier espacio de direccionamiento.<br />Protección y Compartimiento<br />
  15. 15. Además la segmentación se presta a la implementación de políticas de protección, puesto que cada entrada de la tabla de segmentos incluye la longitud, además de la dirección base, un programa no podrá acceder por descuido a una posición de la memoria principal más allá de los límites de un segmento.<br />Para conseguir la compartición, es posible que un segmento se referencia desde las tablas de segmentos de más de un proceso. Este mismo mecanismo es válido en un sistema de paginación.<br />     Se pueden ofrecer también mecanismos más sofisticados. Un esquema habitual consiste en usar una estructura de anillo de protección donde los anillos interiores gozan de mayores privilegios que los anillos externos. Normalmente, el anillo 0 está reservado para las funciones del núcleo del S.O y las aplicaciones están situadas a un nivel más alto. Algunos servicios del S.O pueden ocupar un anillo intermedio. Los principios básicos del sistema de anillos son los siguientes:<br />1.          Un programa puede acceder sólo a datos que estén en el mismo anillo o en un anillo de menor privilegio.<br />2.          Un programa puede hacer llamadas a servicios que residan en el mismo anillo o en anillos más privilegiados.<br />
  16. 16. El diseño del gestor de memoria en un sistema operativo depende de tres áreas fundamentales de decisión:<br />v      Si se emplean o no técnicas de memoria virtual.<br />v      El uso de paginación, segmentación o ambas.<br />v      Los algoritmos empleados para los problemas de la gestión de memoria.<br />Las decisiones tomadas en las dos primeras áreas dependen de la plataforma de hardware disponible. Las decisiones del tercer punto (los algoritmos) son del dominio del software del S.O.. En las políticas, elementos claves de diseño, que luego se desarrollarán, el punto clave es el rendimiento: se busca minimizar el porcentaje de fallos de página. Los fallos de página originan una considerable sobrecarga en el software. Como mínimo, la sobrecarga incluye la decisión que el S.O. debe tomar sobre las páginas residentes o páginas que se deben reemplazar y la E/S de intercambiar páginas. Además, el S.O. debe planificar la ejecución de otro proceso durante el intercambio de página, dando lugar a un cambio de proceso.<br />Software del Sistema Operativo<br />
  17. 17. Es la que está relacionada con la decisión de cuándo se debe cargar una página en la memoria principal. Las dos alternativas más comunes son:<br />      Paginación por demanda: Se trae una página a la memoria principal sólo cuando se hace referencia a una posición en dicha página.<br />     Paginación previa: Se cargan otras páginas distintas a las demandadas debido a un fallo de página.<br />Esta política no es efectiva si la mayoría de las páginas extra que se traen no se referencian.<br />La utilidad no ha sido demostrada.<br />Políticas de Lecturas FETCH<br />
  18. 18. Tiene que ver con determinar dónde va ha residir una parte de un proceso en la memoria principal. Es un aspecto importante del diseño en un sistema puro de segmentación.<br />Como posibles alternativas se tiene:<br />   Políticas del mejor ajuste.<br />   Políticas del primer ajuste<br />   Y otras.<br />Sin embargo, para un sistema que usa tanto paginación pura como paginación combinada con segmentación, la ubicación carece de importancia puesto que el hardware de traducción de direcciones y el hardware de acceso a la memoria principal pueden desarrollar sus funciones en cualquier combinación de marco de página con idéntica eficiencia.<br />Políticas de Ubicación<br />
  19. 19.  Trata de la selección de la página a reemplazar en la memoria principal cuando se debe cargar una nueva página. Esto resulta difícil de explicar por lo que se debe tener en cuenta algunos conceptos interrelacionados como ser:<br />     El numero de marcos de página a asignar a cada proceso activo.<br />     Si el conjunto de páginas a considerar para el reemplazo debe limitarse a las del proceso que provocó el fallo de página o abarcar todos los marcos de página situados en la memoria principal.<br />     De entre el conjunto de páginas consideradas, cuál es la página específica que debe elegirse para el reemplazo.<br />Políticas de Reemplazo<br />
  20. 20. Memoria Principal<br />Memoria Secundaria<br />
  21. 21. Direccionamiento de memoria virtual:<br />Linux hace uso de una estructura de tabla de páginas con tres niveles:<br />v      Directorio de páginas: un proceso activo tiene sólo un directorio de páginas, donde cada entrada en el mismo, señala a una página del directorio intermedio de páginas. Para un proceso activo, el directorio debe estar en la memoria principal.<br />v      Directorio intermedio de páginas: es el que puede ocupar varias páginas y donde cada entrada al directorio señala a una página de la tabla de páginas.<br />v      Tabla de páginas: ésta también puede ocupar varias páginas y en cada entrada se hace referencia a una página virtual del proceso.<br />Para utilizar esta estructura de la tabla de páginas a tres niveles, una dirección virtual en Linux se ve como un conjunto de cuatro campos. El campo más a la izquierda (el más significativo) se utiliza como índice en el directorio de páginas; el siguiente se utiliza como índice en el directorio intermedio de páginas; el tercero como índice en la tabla de páginas y el cuarto campo indica el desplazamiento dentro de la página seleccionada de la memoria.<br />Gestión de Memoria en Linux<br />
  22. 22. Desde la memoria principal, Linux define un mecanismo para tratar bloques de páginas contiguos correspondientes a bloques de marcos de páginas contiguos, para ello, se utiliza el sistema de colegas donde el núcleo mantiene una lista de grupos de marcos de página contiguos de tamaño fijo.<br />Asignación de Paginas<br />
  23. 23. El algoritmo de reemplazo de páginas de Linux se basa en el algoritmo del reloj, que, en caso de ser el sencillo, se asocia un bit de uso y un bit de modificación a cada página de la memoria principal. En Linux utiliza una variable edad que, cada vez que se accede a la página, se incrementa la variable y recorre periódicamente la reserva de paginas globales y disminuye la variable de edad de cada página cuando rota por todas las páginas de la memoria principal. Una página con un envejecimiento 0 es una página “vieja” que no se ha referenciado en bastante tiempo y es la mejor candidata para el reemplazo, y cuanto mayor valor de edad, más frecuentemente se ha usado la página recientemente y menos elegible es para el reemplazo.<br />Algoritmo de reemplazo de páginas<br />
  24. 24. El gestor de memoria virtual de Windows 2000 (W2K) controla como se asigna la memoria y como se realiza la paginación.<br />Mapa de Direcciones Virtuales de W2K<br />Cada proceso de usuario de W2K dispone de un espacio de direcciones separado de 32 bits, lo que permite 4 Gbytes de memoria por proceso. Por lo que, una parte de esta memoria esta reservada para el sistema operativo y cada usuario tiene 2 Gbytes de espacio de direcciones virtual disponible.<br />Gestión de Memoria en Windows 2000<br />
  25. 25. Cuando se crea un proceso en principio puede hacer uso de todo el espacio de usuario de 2 Gbytes. Este espacio se divide en paginas de tamaño fijo, y cualquiera puede cargarse en la memoria principal. En la práctica una página puede estar en uno de estos tres estados:<br />v      Disponible: las páginas no usadas actualmente por este proceso.<br />v      Reservada: un conjunto de paginas contiguas que el gestor de la memoria virtual separa para un proceso pero no cuentan para la cuota de memoria del proceso hasta que se usan.<br />v      Confirmada: paginas para las cuales el gestor de memoria virtual mantiene un conjunto de espacio separado en su archivo de paginación.<br />La distinción entre memoria confirmada y  reservada es que la primera permite a procesos o hilos declarar una cantidad de memoria que puede asignarse rápidamente cuando sea necesaria; y la otra, minimiza la cantidad de espacio en el disco separada para un proceso particular dejando ese espacio en disco para otros procesos.<br />Paginación en W2K<br />
  26. 26.  La memoria virtual ha llegado a ser un componente esencial de los S.O, convirtiéndose en una herramienta útil de  gestión de memoria.<br />     Desde su aparición se ha comprobado que se agilizó la labor del programador, ya que  desarrollando un programa no debe  restringir su tamaño,  no teniendo  necesidad de conocer la capacidad de memoria principal disponible.<br />      Oculta también la complejidad de los algoritmos utilizados para el intercambio de los “trozos” de los procesos.<br />      Por dichas razones, se busca implementarla en la mayoría de los S.O. actuales, dejado como optativa, la no utilización de la misma.<br />Conclusión<br />

×