Concepto de Memoria Virtual: Metodo para conseguir que la suma de los espacios de pila, datos y texto de un programa pueda ser mayor que el tamaño fısico de la memoria disponible para él. (Fotheringham, 1961)
Cada proceso se asigna un area de direcciones contiguo. El SO mantiene en memoria solamente las partes del programa que se estan utilizando y mantiene en disco (intercambiadas) el resto. Sirve para sistemas mono y multiprogramados.
Permite optimizar el uso de la memoria, al mantener en disco partes del proceso poco usadas (rutinas de atencion a errores poco frecuentes, funciones de uso esporadico, datos no usados, . . . ) La memoria virtual se implementa normalmente mediante paginacion.
PAGINACION
El término memoria virtual se asocia normalmente con sistemas que emplean paginación, aunque también se puede usar memoria virtual basada en la segmentación. El uso de la paginación en la memoria virtual fue presentado por primera vez en el computador Atlas.
Cada proceso tiene su propia tabla de páginas y cuando carga todas sus páginas en la memoria principal, se crea y carga en la memoria principal una tabla de páginas. Cada entrada de la tabla de páginas contiene el número de marco de la página correspondiente en la memoria principal. Puesto que sólo algunas de las páginas de un proceso pueden estar en la memoria principal, se necesita un bit en cada entrada de la tabla para indicar si la página correspondiente está presente (P) en la memoria principal o no. Si el bit indica que la página está en la memoria, la entrada incluye también el número de marco para esa página.
Otro bit de control necesario en la entrada de la tabla de páginas es el bit de modificación (M), para indicar si el contenido de la página correspondiente se ha alterado desde que la página se cargó en la memoria principal. Si no ha habido cambios, no es necesario escribir la página cuando sea sustituida en el marco que ocupa actualmente
Como respuesta al fallo de pagina, el SO:
1.- Selecciona una página poco usada del proceso.
2.-Intercambia la página a disco.
3.- Asigna el marco de la página liberada a la página virtual
que se intenta acceder.
Esto supone una forma de reasignacion dinamica por bloques de las direcciones de memoria del proceso
Estructura de la tabla de páginas
Tabla de paginas: Son tablas que contienen (para cada proceso) el numero de marco que corresponde a cada pagina virtual del proceso. El tamaño de pagina viene definido por el hardware y suele ser una potencia de 2 que varia entre 512 y 16M.
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.
Aspectos sobre el diseño
El tiempo de asociacion debe ser reducido. Las soluciones estan basadas completamente en hardware (utilizando registros) son las m´as rapidas, pero esto solo es valido si las tablas son pequeñas.
Cuanto menor sea el tamaño de pagina, menor sera la cantidad de fragmentacion interna. Cuanto menor sea la pagina, mayor sera el numero de paginas que se necesitan por proceso.
Un numero mayor de paginas por proceso significa que las tablas de paginas seran mayores. Esto puede significar que una gran parte de las tablas de paginas de los procesos activos deben estar en la memoria virtual.
La memoria secundaria esta diseñada para transferir eficazmente los bloques de datos de mayor tamaño, de manera que es propicia para tamaños de pagina mayores. Si el tamaño de pagina es muy pequeño, estaran disponibles en la memoria principal un gran numero de paginas para cada proceso.
Despues de un tiempo, todas las paginas de la memoria contendran parte de las referencias mas recientes del proceso. La tasa de fallos de pagina sera menor. Cuando se incrementa el tamaño de la pagina, cada pagina individual contendran posiciones cada vez mas distantes de cualquier referencia reciente. La tasa de fallos sera mayor.
SEGMENTACIÓN
Otra opción para el manejo de la memoria es usar una forma de liberar al programador de la tarea del control de las tablas en expansión y contracción, de la misma forma que la memoria virtual elimina la preocupación por organizar el programa en una serie de proyectos.
Esto se puede lograr dotando a la máquina de varios espacios independientes de direcciones llamados segmentos. Cada segmento tiene una serie lineal de direcciones, desde 0 hasta cierto máximo. La longitud de cada segmento puede variar de 0 hasta un máximo permitido. Los distintos segmentos pueden tener y de hecho tienen por lo general, longitudes distintas. Además, la longitud de un segmento puede variar durante la ejecución. La longitud de un segmento de la pila puede crecer si algo entra a la pila y decrecer si algo sale de ella.
Puesto que cada segmento constituye un espacio independiente de direcciones, los distintos segmentos pueden crecer o reducirse en forma independiente sin afectar a los demás. En la figura 13 podemos ver una lista de comparación entre la paginación y la segmentación.
SEGMENTACION Y PAGINACION
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.
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. La entrada de la tabla de segmentos contiene la longitud del segmento. Los bits de presencia y modificación no son necesarios, puesto que estos elementos se gestionan en la página. Pueden usarse otros bits de control para comparición y protección. La entrada de la tabla de páginas es, la misma que se usa en un sistema de paginación pura. Cada número de página se convierte en el número de marco correspondiente si la página está presente en la memoria. El bit de modificación indica si se necesita escribir la página en el disco cuando se asigna el marco a otra página.
0 comentarios: