Este documento describe varios esquemas y estrategias de administración de memoria utilizados por los sistemas operativos. Explica conceptos como organización de la memoria, jerarquía de memoria, particionamiento estático y dinámico, fragmentación interna y externa, estrategias de colocación como primer ajuste y mejor ajuste, e intercambio de procesos entre memoria principal y secundaria. El objetivo final es administrar de forma eficiente el uso de la memoria como recurso limitado en una computadora.
2. 2
SistemasOperativosGestióndeMemoria
Contenidos
Organización de la Memoria :
Organización del almacenamiento,
Administración, Jerarquía, Particiones,
Fragmentación, Condensación,
Compactación,
Estrategias de colocación
Administración de Memoria Virtual
Espacio de direcciones lógicas vs. físicas,.
Paginación, Segmentación,
Paginación por Demanda.
Fallo de Página,
Segmentación Paginada y Paginación Segmentada
Propósito del capítulo
El propósito de esta capitulo es conocer la manera en que los sistemas operativos
administran la memoria. Estudiaremos varios esquemas de administración de
memoria, que van desde los sencillos hasta los más avanzados.
La memoria es un recurso importante que debe administrarse con cuidado. El
sistema de memoria virtual de los actuales computadores surgió para liberar al
programador de una serie de tareas relacionadas con el uso que los programas
debían realizar con la memoria. La memoria virtual automatiza la gestión entre los
dos niveles principales de la jerarquía de memoria: memoria principal y disco. Antes
de entrar en los mecanismos específicos de la memoria virtual revisaremos una serie
de funciones que deben incorporarse en la gestión de memoria.
3. 3
SistemasOperativosGestióndeMemoria
Objetivos
Al finalizar el estudio de este tema, el estudiante deberá estar en capacidad de:
• Explicar el concepto de administración de memoria básica.
• Explicar los procesos de intercambio.
• Explicar el concepto de memoria virtual.
• Comprender los algoritmos de reemplazo de páginas.
• Comprender el modelado de algoritmos de reemplazo de páginas.
• Comprender aspectos de diseño de los sistemas con paginación.
• Comprender aspectos de implementación.
• Explicar el concepto de segmentación
Introducción
La memoria se puede definir como los circuitos que permiten almacenar y
recuperar la información. La unidad de almacenamiento es el bit (binary element)
aunque normalmente la consideramos estructurada en bytes (8 bits) Aunque el byte
es la unidad de direccionamiento, solemos hablar de palabras. Palabra se refiere a
la longitud de los registros del microprocesador. Así hablamos de microprocesadores
de 16 bits, de 32 bits. Por razones históricas a veces se denomina palabra a 16 bits
(2 bytes) y doble palabra a 32 bits. La memoria principal puede ser considerada
como un arreglo lineal de localidades de almacenamiento de un byte de tamaño.
Cada localidad de almacenamiento tiene asignada una dirección que la identifica.
Una de las funciones básicas que debe implementar un SO es la Administración
de la Memoria para tener un control sobre los lugares donde están almacenados los
procesos y datos que actualmente se están utilizando. La administración de memoria
se refiere a los distintos métodos y operaciones que se encargan de obtener la
máxima utilidad de la memoria, organizando los procesos y programas que se
ejecutan de manera tal que se aproveche de la mejor manera posible el espacio
disponible.
4. 4
SistemasOperativosGestióndeMemoria
Organización de la Memoria: La memoria real o principal es en donde son
ejecutados los programas y procesos de una computadora y es el espacio real que
existe en memoria para que se ejecuten los procesos.
Por lo general esta memoria es de mayor costo que la memoria secundaria, pero el
acceso a la información contenida en ella es de más rápido acceso.
Solo la memoria cache es más rápida que la principal, pero su costo es a su vez
mayor.
Cuando no existe memoria virtual no hay diferenciación entre el espacio de
direcciones y la memoria real; el espacio de direcciones que puede ser usado en los
programas tiene idéntico tamaño al espacio de memoria real posible.
Si se utiliza memoria virtual, el espacio de direcciones disponibles para los
programas es aquel determinado por el tamaño de la memoria virtual implementada
y no el espacio de direcciones provisto por la memoria real disponible (el espacio de
la memoria virtual será mayor que el de la memoria real).
Los términos “memoria” y “almacenamiento” se consideran equivalentes.
Los programas y datos deben estar en el almacenamiento principal para:
Poderlos ejecutar.
Referenciarlos directamente.
Evolución de las organizaciones de memoria
1
5. 5
SistemasOperativosGestióndeMemoria
Sistema Multiprogramación de Memoria Real
Multiprogramación de Partición Fija.
Los sistemas de un solo usuario desperdician gran cantidad de recursos
computacionales debido a que: Cuando ocurre una petición de e/s la CPU
normalmente no puede continuar el proceso hasta que concluya la operación de
entrada/salida requerida.
Los periféricos de e/s frenan la ejecución de los procesos ya que comparativamente
la CPU es varios órdenes de magnitud más rápida que los dispositivos de E/S.
Multiprogramación de Partición Variable
Los procesos ocupan tanto espacio como necesitan, pero obviamente no deben
superar el espacio disponible de memoria. Mediante un algoritmo de administración
de memoria las particiones variables varia de forma dinámica durante el uso de la
máquina, Evitando desperdicio de memoria. No hay límites fijos de memoria, es decir
que la partición de un trabajo es su propio tamaño.
Administración de Almacenamiento
El sistema operativo proporciona una lista lógica y uniforme del sistema de
almacenamiento de la información. El sistema operativo abstrae las propiedades
físicas de los dispositivos de almacenamiento y define una unidad de
almacenamiento lógico, el archivo.
Jerarquía de la Memoria
El tiempo de acceso es el tiempo necesario para realizar una operación de
lectura/escritura, es decir, el tiempo que transcurre desde el instante en que se pone
la dirección en el bus de direcciones hasta que el dato ha sido almacenado en
memoria o puesto a disposición de la CPU.
6. 6
SistemasOperativosGestióndeMemoria
Interesa que el acceso sea lo más rápido posible, pero además interesa tener la
mayor capacidad sin incurrir en un costo excesivo. Por tanto se usan las memorias
más rápidas y caras para donde los accesos son más frecuentes, Surge así lo que
se llama jerarquía de la memoria y que se establece en base a los tiempo de acceso
y capacidad disponible.
.
1. Registros del microprocesador
2. Memoria cache
3. Memoria principal
4. Unidades de disco
5. Unidades de cinta u ópticas
Los programas y datos tienen que estar en la memoria principal para poder
ejecutarse o ser referenciados.
Los programas y datos que no son necesarios de inmediato pueden mantenerse en
el almacenamiento secundario. Un nivel adicional es el “cache” o memoria
Los sistemas con varios niveles de almacenamiento requieren destinar recursos
para administrar el movimiento de programas y datos entre niveles De alta
velocidad, que posee las siguientes características:
Es más rápida y costosa que la memoria principal.
Impone al sistema un nivel más de traspaso:
Los programas son traspasados de la memoria principal al cache antes de su
ejecución.
Los programas en la memoria cache ejecutan mucho más rápido que en la
memoria principal.
Estrategias de Administración de Memoria
7. 7
SistemasOperativosGestióndeMemoria
Están dirigidas a la obtención del mejor uso posible del recurso del almacenamiento
principal.
Se dividen en las siguientes categorías:
Estrategias de búsqueda:
Estrategias de búsqueda por demanda.
Estrategias de búsqueda anticipada.
Estrategias de colocación.
Estrategias de reposición.
Partición de la Memoria
Desde la perspectiva del sistema operativo, cada uno de los espacios asignados a
un proceso es una partición. Cuando el sistema operativo inicia, toda la memoria
disponible es vista como un sólo bloque, y conforme se van ejecutando procesos,
este bloque va siendo subdividido para satisfacer sus requisitos.
Al cargar un programa el sistema operativo calcula cuánta memoria va a requerir a lo
largo de su vida prevista. Esto incluye el espacio requerido para la asignación
dinámica de memoria con la familia de funciones malloc y free.
Partición Estática: en la mayoría de los esquemas de gestión de memoria, el
sistema operativo ocupa una parte fija de la memoria principal y que el resto
de la memoria está disponible para ser usado por varios procesos. El
esquema más sencillo de gestión de la memoria disponible es dividir en
regiones con límites fijos-
El particionamiento fijo consiste en la asignación estática de la memoria
particionada, que es una forma de hacer posible la multiprogramación,
dividiendo la memoria física disponible en varias particiones, cada una de las
cuales puede ser asignada a diferentes procesos.
8. 8
SistemasOperativosGestióndeMemoria
Partición Dinámica: aquí las particiones son variables en número y longitud.
Cuando se carga un proceso en la memoria principal, se le asigna
exactamente tanta memoria como necesita y no más.
Este método comienza bien, pero desembarca en una situación en la que hay un
gran número de huecos pequeños en la memoria. La memoria comienza a estar
más fragmentada y su rendimiento decae. Este fenómeno se denomina
fragmentación externa y se refiere al hecho que la memoria externa a todas las
particiones se fragmenta cada vez más.
Ejemplo
Supongamos que tenemos una partición estática de una memoria de 4Mb y un SO
de 512k, particionado en los siguientes tamaños: 128,256, 512K, 720k, 1Mb, 1.5Mb.
Por medio de un diagrama, indique como se representarían estas particiones en
memoria.
Particiones del Particiones de
mismo tamaño distinto tamaño
Fragmentación
Es un fenómeno que se manifiesta a medida que los procesos terminan su
ejecución, y el sistema operativo libera la memoria asignada a cada uno de ellos. Si
los procesos se encontraban en regiones de memoria, apartadas entre sí,
comienzan a aparecer regiones de memoria disponible, interrumpidas por regiones
de memoria usada por los procesos que aún se encuentran activos.
S.O
512 K
512 K
512 K
512 K
512 K
512 K
S.O
128 K
256 K
512 K
720 K
1 Mb
1.5 Mb
9. 9
SistemasOperativosGestióndeMemoria
Si la computadora no tiene hardware específico que permita que los procesos
resuelvan sus direcciones en tiempo de ejecución, el sistema operativo no puede
reasignar los bloques existentes, y aunque pudiera hacerlo, mover un proceso
entero en memoria puede resultar una operación costosa en tiempo de
procesamiento.
Estrategias de Colocación
Al crear un nuevo proceso, el sistema operativo tiene tres estrategias según las
cuales podría asignarle uno de los bloques disponibles:
Primer ajuste El sistema toma el primer bloque con el tamaño suficiente para
alojar el nuevo proceso. Este es el mecanismo más simple de implementar y el de
más rápida ejecución. No obstante, esta estrategia puede causar el desperdicio de
memoria, si el bloque no es exactamente del tamaño requerido.
Mejor ajuste El sistema busca entre todos los bloques disponibles cuál es el que
mejor se ajusta al tamaño requerido por el nuevo proceso.
.
El Primer ajuste y el Mejor ajuste
10. 10
SistemasOperativosGestióndeMemoria
Peor ajuste El sistema busca cuál es el bloque más grande disponible, y se lo
asigna al nuevo proceso. Empleando una estructura de datos como un montículo,
esta operación puede ser incluso más rápida que la de primer ajuste. Con este
mecanismo se busca que los bloques que queden después de otorgarlos a un
proceso sean tan grandes como sea posible, de cierto modo balanceando su
tamaño.
Intercambio (swapping)
.Que ocurre si la memoria está ocupada
totalmente?
Intercambiar procesos entre memoria
principal y secundaria (un
disco rápido que alberga las imágenes de
memoria de los procesos de usuario, y
suministra acceso directo a esas
imágenes).
. Aconsejable en sistemas. de tiempo compartido. Usuarios conectados al sistema
alternan periodos de trabajo e inactividad. Un proceso se sacara de memoria:
Si va a estar cierto tiempo bloqueado Necesitamos compartir CPU y memoria
El factor principal en el tiempo de intercambio es el tiempo de transferencia, que es
Proporcional a la memoria intercambiada. Se usa en UNIX, Windows, etc
11. 11
SistemasOperativosGestióndeMemoria
Ejemplo
Considere un sistema de intercambio en el que la memoria contiene los siguientes
huecos en orden según su posición en la memoria: 10 KB, 4 KB, 20 KB, 18 KB, 7
KB, 9 KB, 12 KB y 15 KB. Determine cuál hueco se usará si se reciben solicitudes
sucesivas pidiendo:
12 KB , 10 KB, 9 KB
¿Si se usa primer ajuste? Repita el problema usando mejor ajuste, peor ajuste y
siguiente ajuste.
Primer ajuste: El hueco de 20 KB, el hueco de 18 KB y el hueco de 12 KB.
Mejor ajuste: El hueco de 20 KB, el hueco de 10 KB y el hueco de 9 KB.
Peor ajuste: El hueco de 20 KB, el hueco de 18 KB y el hueco de 15 KB.
Siguiente ajuste: El hueco de 20 KB, el hueco de 18 KB y el hueco de 12 KB.
La fragmentación externa se produce cuando hay muchos bloques libres entre
bloques asignados a procesos.
La fragmentación interna: la memoria asignada es mayor que la usada; la
diferencia entre ambas es memoria interna a una partición que no se usa. Se
produce cuando se asigna memoria en particiones fijas.
Por ejemplo, si el sistema operativo maneja bloques de 512 bytes y un proceso
requiere sólo 768 bytes para su ejecución, el sistema le entregará dos bloques (1
024 bytes), con lo cual desperdicia 256 bytes. En el peor de los casos, con un
bloque de n bytes, un proceso podría solicitar kn + 1 bytes de memoria,
desperdiciando por fragmentación interna n � 1 bytes.
12. 12
SistemasOperativosGestióndeMemoria
Compresión o Compactación de Almacenamiento
Una técnica empleada cuando la memoria está dividida en particiones de tamaño
variable. De cuando en cuando, el sistema operativo desplaza las particiones para
que queden contiguas y así toda la memoria libre este reunida en un solo bloque.
Puede ocurrir que los agujeros (áreas libres) separados distribuidos por todo el
almacenamiento principal constituyan una cantidad importante de memoria:
Podría ser suficiente (el total global disponible) para alojar a procesos
encolados en espera de memoria.
Podría no ser suficiente ningún área libre individual.
La técnica de compresión de memoria implica pasar todas las áreas ocupadas del
almacenamiento a uno de los extremos de la memoria principal:
Deja un solo agujero grande de memoria libre contigua.
Esta técnica se denomina “recogida de residuos”
Principales desventajas de la compresión
Consume recursos del sistema
El sistema debe detener todo mientras efectúa la compresión, lo que puede
afectar los tiempos de respuesta.
Implica la relocalización (reubicación) de los procesos que se encuentran en la
memoria:
La información de relocalización debe ser de accesibilidad inmediata.
Una alta carga de trabajo significa mayor frecuencia de compresión que
incrementa el uso de recursos.
13. 13
SistemasOperativosGestióndeMemoria
Administración de Memoria Virtual
Gestión de memoria
El sistema de memoria virtual de los actuales computadores surgió para liberar al
programador de una serie de tareas relacionadas con el uso que los programas
debían realizar con la memoria. La memoria virtual automatiza la gestión entre los
dos niveles principales de la jerarquía de memoria: memoria principal y disco. Antes
de entrar en los mecanismos específicos de la memoria virtual revisaremos una serie
de funciones que deben incorporarse en la gestión de memoria..
Solapamiento (overlay)
El tamaño de la memoria principal disponible en los computadores ha aumentado de
forma sostenida desde sus orígenes. Sin embargo, el tamaño de los programas ha
crecido más rápidamente, por lo que la necesidad de ejecutar programas que no
cabían en la memoria principal ha sido una constante en la historia de los
computadores. Una forma de superar esta limitación es el uso de la técnica de
solapamiento (overlay).
Esta técnica divide en módulos el programa cuyo tamaño sobrepasa la capacidad de
la memoria principal, y que reside por tanto en memoria secundaria (disco). Después
se introducen en los lugares adecuados de cada módulo, y al margen de la lógica
propia del programa, las instrucciones de E/S necesarias para cargar en memoria
principal aquellos módulos cuyas instrucciones deban ejecutarse o cuyos datos
vayan a ser referenciados en el inmediato futuro. Es decir, el propio programa se
ocupa de cargar por anticipado los módulos que van a ser referenciados.
Protección y Reubicación
Un papel importante de la gestión de memoria es la protección. Si varios programas
comparten la memoria principal debe asegurarse que ninguno de ellos pueda
modificar el espacio de memoria de los demás. Como casi todos los lenguajes
14. 14
SistemasOperativosGestióndeMemoria
permiten el uso de punteros dinámicos, los test en tiempo de compilación no son
suficientes para garantizar la protección. Esta debe mantenerla en tiempo de
ejecución el sistema de gestión de memoria (MMU).
En sistemas con multiprogramación se necesita que varios programas residan
Simultáneamente en memoria. El tiempo de CPU se va distribuyendo entre ellos de
acuerdo a una política de prioridades determinada. La ubicación en memoria de los
programas no se conoce en tiempo de compilación, por lo que no se pueden generar
direcciones absolutas. Para conseguir una asignación dinámica de memoria en
tiempo de ejecución se utilizan registros de reubicación. La dirección efectiva se
obtiene sumando a la dirección generada por el compilador el contenido del registro
de reubicación asignado al programa.
.Como aseguramos la protección? Y .Como reubicamos los procesos?
Necesitamos dos registros: el registro base y limite. En cada load y store:
Reubicación:
Direc. Fisica = Direc. Virtual + Reg. Base
Protección – comprobar que la dirección cae en el rango [base,limite).
15. 15
SistemasOperativosGestióndeMemoria
Registros base y límite
Paginación:
La paginación tsurgió de la necesidad de mantener más de un programa residente
en memoria cuando la capacidad de ésta es inferior a la suma de los tamaños de los
programas. Se trata de un mecanismo automático de solapamiento múltiple que
practica el Sistema Operativo para hacer posible la multiprogramación. El espacio de
memoria principal se divide en bloques de tamaño fijo denominados páginas. Los
programas se dividen también en páginas y residen en el disco. El Sistema
Operativo se encarga de asignar páginas físicas a los programas en ejecución
(multiprogramación). De esta forma el tiempo de CPU puede distribuirse entre los
programas residentes.
Características
Es una manera de relocalización dinámica
El espacio de direcciones físicas está dividido en zonas de tamaño fìjo
llamadas marcos de página
El espacio de direcciones lógico o virtual está formado por zonas de tamaño
fijo denominadas páginas
16. 16
SistemasOperativosGestióndeMemoria
La dirección lógica se compone de número de página y desplazamiento
dentro de la página
Con el número de página se obtiene una entrada en una tabla de páginas, en
donde hay una dirección base de marco de página
La dirección de memoria fisica a la que se accede se obtiene sumando el
desplazamiento a la dirección base del marco de página
Compartición
Esta función parece estar en contradicción con la anterior. Sin embargo, con
frecuencia los programas de un sistema multiprogramado deben poder compartir y
actualizar información, por ejemplo, un sistema de bases de datos. Además, no es
necesario tener varias copias de una rutina si se permite que todos los programas
accedan a una misma copia.
Memoria virtual
El sistema de memoria virtual implementa todas las funciones anteriores de forma
integrada. En un computador con memoria virtual las direcciones de los programas
(generadas por la CPU) hacen referencia a un espacio mayor que el espacio físico
realmente disponible en la memoria principal o memoria física.
Los programas operan virtualmente con un tamaño físico de memoria principal
mucho mayor que el realmente disponible. En estas máquinas hay que diferenciar,
pues, entre el espacio de direcciones virtuales generado por la CPU y el espacio de
direcciones físicas o reales existentes en memoria principal y determinado por el
número de líneas del bus de direcciones. El espacio virtual se soporta sobre un
disco con la ayuda de un mecanismo de traducción que genera la dirección física de
memoria principal a partir de la virtual.
. Los bits de una Dirección Virtual se consideran divididos en dos campos, el
número de página virtual los más significativos, y el desplazamiento dentro de la
página, los menos significativos. El número de bits del campo Desplazamiento de
Página lo determina el tamaño de página (nº de bits de Desplazamiento Página =
log2 tamaño de página). El número de bits del campo número de página virtual lo
determina el número de páginas virtuales (nº de bits de Número de página virtual =
17. 17
SistemasOperativosGestióndeMemoria
log2 nº de páginas virtuales). Los bits de una Dirección Física se consideran
divididos también en dos campos, el número de página física los más significativos,
y el desplazamiento dentro de la página los menos significativos. El número de bits
del campo Desplazamiento de Página de unas direcciones físicas es el mismo que el
de una Dirección Virtual, puesto que las páginas tienen igual tamaño en memoria
virtual y Memoria Física. El número de bits del campo número de página física lo
determina el número de páginas físicas de Memoria Física (nº de bits de número de
páginas físicas = log2 nº de páginas físicas).
Para traducir una Dirección Virtual en Dirección Física se busca en la
correspondiente entrada de la Tabla de Páginas. Si el bit P de esta entrada vale 1,
se dice que ha ocurrido un acierto de página, y se lee el contenido del segundo
campo que en los aciertos constituye el Número de Página Física en la memoria
principal. La Dirección Física completa se obtiene concatenando los bits de Número
de Página Física con los de Desplazamiento dentro de la Página de la Dirección
Virtual. Si el bit P de la entrada de la Tabla de Página vale 0, se dice que ha
ocurrido un fallo de página, lo que significa que la página virtual donde se ubica la
Dirección Virtual que se está traduciendo, no se encuentra en Memoria Física. En
este caso el fallo de página se sirve buscado la página en el disco, ubicándola en
Memoria Física y actualizando la correspondiente entrada de la Tabla de página.
aquí
Dirección lógica
La MMU descompone las direcciones lógicas que le pasa la CPU en dos campos:
Numero de página (p) -se usa como índice para acceder a la p-esima TPE, que nos
dará la dirección de la base del marco donde se encuentra la página en memoria.
Desplazamiento de página (d) –sumado con la base de página define la dirección
física que debe utilizar la MMU para acceder a la instrucción o datos.
19. 19
SistemasOperativosGestióndeMemoria
Ejemplo
Supongamos un sistema con direcciones de 16 bits donde 7 bits corresponden al
número de página y 9 al desplazamiento dentro de la página
• Tamaño de página será de 512 bytes
• Un proceso referencia la dirección 0x095f (0000 1001 0101 1111)
• Esta referencia es a la página 4 desplazamiento 0x15f
()
• En la entrada correspondiente a la página 4 de la tabla de páginas del
proceso nos dirá la dirección de memoria física donde está dicha página
• Supongamos que en dicha entrada nos indica que la dirección del marco de
memoria física es 0xAE00 (1010 1110 0000 0000)
• Entonces la dirección de memoria física a donde realmente se accede es
0xAF5F (1010 11111 0101 1111)
Segmentación
La segmentación permite que el programador vea la memoria constituida por
múltiples espacios de direcciones o segmentos. Los segmentos tienen un tamaño
variable, dinámico.
Las direcciones virtuales estarán constituidas en este caso por un número de
segmento (NS) y un desplazamiento dentro del segmento (DP). El proceso de
traducción de dirección virtual a física es análogo al de la memoria virtual paginada,
con la diferencia que ahora tenemos una tabla de segmentos (TS) cuyas entradas
(denominadas también descriptores de segmento) contienen, además de los bits de
control y la dirección real del segmento, la longitud L del mismo, ya que los
segmentos tienen longitud variable..
Un segmento es un espacio lineal de direcciones que puede ser paginado
20. 20
SistemasOperativosGestióndeMemoria
Ventajas de la Segmentación
Simplifica la gestión de estructuras variables de datos. Si el programador no
conoce a priori el tamaño que puede llegar a tener una estructura de datos
particular, no es necesario que lo presuponga. A la estructura de datos se le
asigna su propio segmento, y el sistema operativo lo expandirá o lo reducirá
según sea necesario.
Permite modificar los programas y recompilarlos independientemente, sin que
sea necesario volver a enlazar y cargar el conjunto entero de programas. De
nuevo, esto se consigue utilizando varios segmentos.
Permite que varios procesos compartan segmentos. Un programador puede
situar un programa correspondiente a una utilidad o una tabla de datos de
interés en un segmento, que puede ser direccionado por otros procesos.
Se facilita la protección. Puesto que un segmento se construye para contener
un conjunto de programas o datos bien definido, el programador o el
administrador del sistema puede asignar privilegios de acceso de forma
adecuada.
Trata de resolver los problemas de fragmentación externa e interna, y los
elevados tiempos de búsqueda mediante la paginación de los segmentos.
Paginación por Demanda.
La paginación sobre demanda significa que, para comenzar a ejecutar un
proceso, el sistema operativo carga solamente la porción necesaria para
comenzar la ejecución (posiblemente una página o ninguna), y que a lo largo de
la ejecución, el paginador es flojo: sólo carga a memoria las páginas cuando van
a ser utilizadas. Al emplear un paginador flojo, las páginas que no sean
requeridas nunca serán siquiera cargadas a memoria.
.Las ventajas son: menos E/S. menos memoria, respuesta más rápida, más
usuarios.
La estructura empleada por la MMU para implementar un paginador flojo es el
siguiente: la tabla de páginas incluirá un bit de validez, indicando para cada
página del proceso si está presente o no en memoria. Si el proceso intenta
emplear una página que esté marcada como no válida, esto causa un fallo de
21. 21
SistemasOperativosGestióndeMemoria
página, que lleva a que el sistema operativo lo suspenda y traiga a memoria la
página solicitada para luego continuar con su ejecución: Verifica en el PCB si
esta solicitud corresponde a una página que ya ha sido asignada a este proceso.
En caso de que la referencia sea inválida, se termina el proceso.
Fallo de Página
En una falta de página, el SO mira en la tabla que mantiene el espacio de
direcciones completo del proceso para decidir si:
o La referencia es invalida → aborta proceso
La página no está en memoria, entonces:
Obtiene un marco vacío.
Carga la página dentro del marco.
Pone el bit de validez a 1.
Rearranca la instrucción.
Si la página está en memoria pero la traducción no es válida Þ reasigna la
página.
Algoritmos de Remplazo de Páginas
Cuando se presenta un fallo de página, el sistema operativo tiene que escoger la
página que desalojará de la memoria para hacer espacio para colocar la página que
traerá del disco. Si la página a desalojar fue modificada mientras estaba en
memoria, deberá rescribirse en el disco para actualizar la copia. En cambio, si la
página no se ha modificado, no será necesario rescribirla
FIFO (First In First Out)
Se sustituye la página que lleva más tiempo residente en memoria. Utiliza una cola
FIFO y hace un uso pobre de la localidad temporal.
Veamos el comportamiento en el siguiente perfil de referencias a páginas:
2, 3, 2, 1, 5, 2, 4, 5, 3, 2, 5, 2:
FIFO: 9 fallos de página
2 3 2 1 5 2 4 5 3 2 5 2
2 2 2 2 5 5 5 5 3 3 3 3
22. 22
SistemasOperativosGestióndeMemoria
3 3 3 3 2 2 2 2 2 5 5
1 1 1 4 4 4 4 4 2
F F - F F F F - F - F F
Reloj
Es una mejora de la FIFO en la que también se chequea si una página ha sido
referenciada, haciendo mejor uso de la localidad temporal. Para implementar esta
política se mantiene una cola como en la FIFO, pero circular, con un puntero a la
página candidata a ser sustituida, y un flag de uso asociado a cada página. El flag
de uso se pone a 1 cuando la página es referenciada con posterioridad a su carga
inicial en la memoria física. Al producirse un fallo de página se examina el flag de
uso de la página señalada por el puntero de la FIFO. Si está a 0 la correspondiente
página es sustituida, pero si vale 1 se borra el flag de uso (se pone a 0) y se avanza
el puntero una posición, continuando este procedimiento hasta encontrar una página
con el flag de uso a 0.
Referencias a páginas:
2, 3, 2, 1, 5, 2, 4, 5, 3, 2, 5, 2:
RELOJ: 6 fallos de página
2 3 2 1 5 2 4 5 3 2 5 2
2 2 2 2 2 2 2 2 2 2 2 3
3 3 3 5 5 5 5 5 5 5 5
1 1 1 4 4 3 3 3 3
F F - F F - F - F - - -
LRU (Least Recently Used)
Reemplaza la página de memoria que no ha sido referenciada desde hace mucho
tiempo
7 fallos de página
23. 23
SistemasOperativosGestióndeMemoria
2 3 2 1 5 2 4 5 3 2 5 2
2 2 2 2 2 2 2 2 3 3 3 3
3 3 3 5 5 5 5 5 5 5 5
1 1 1 4 4 4 2 2 2
F F - F F - F - F F - -
Optima
Se trata de la mejor política posible: sustituir la página que vaya a tardar más tiempo
en ser referenciada en el futuro (Belady). Aunque esta política tiene el mínimo
número posible de fallos de página (de aquí el nombre de política MIN), no se puede
llevar a la práctica en tiempo real, y se utiliza como una referencia teórica para medir
la eficiencia de otras políticas en entornos experimentales.
6 fallos de página
2 3 2 1 5 2 4 5 3 2 5 2
2 2 2 2 2 2 4 4 4 2 2 2
3 3 3 3 3 3 3 3 3 3 3
1 5 5 5 5 5 5 5 5
F F - F F - F - F - -
Ejercicios
Considera un sistema de paginación bajo demanda en el que un proceso que tiene
asignados 3 marcos de página genera la siguiente secuencia de referencias a
páginas: 2,3,1,2,4,5,2,3,1,5,6,1
24. 24
SistemasOperativosGestióndeMemoria
Indica que accesos producirían un fallo de página cuando se utilizan las políticas de
reemplazo local FIFO y LRU. Sabemos que este proceso se va a ejecutar muy a
menudo en el sistema y nos interesa tener el mejor sistema de paginación para èl.
¿Valdría la pena aumentar el número de marcos de página asignados al proceso
hasta 4 para alguna de estas dos políticas? Indica el número de fallos de página
que se producirían en esta nueva situación para cada algoritmo.
Solución
FIFO: 10 fallos de página
2 3 1 2 4 5 2 3 1 5 6 1
2 2 2 2 4 4 4 3 3 3 6 6
3 3 3 3 5 5 5 1 1 1 1
1 1 1 1 2 2 2 5 5 5
F F F - F F F F F F F -
•
LRU: 9 fallos de página
2 3 1 2 4 5 2 3 1 5 6 1
2 2 2 2 2 2 2 2 2 5 5 5
3 3 3 4 4 4 3 3 3 6 6
1 1 1 5 5 5 1 1 1 1
F F F - F F - F F F F -
Con 4 marcos:
FIFO: 9 fallos de página
25. 25
SistemasOperativosGestióndeMemoria
2 3 1 2 4 5 2 3 1 5 6 1
2 2 2 2 2 5 5 5 5 5 6 6
3 3 3 3 3 2 2 2 2 2 2
1 1 1 1 1 3 3 3 3 3
4 4 4 4 1 1 1 1
F F F - F F F F F - F -
•
LRU: 8 fallos de página
2 3 1 2 4 5 2 3 1 5 6 1
2 2 2 2 2 2 2 2 2 2 6 6
3 3 3 3 5 5 5 5 5 5 5
1 1 1 1 1 3 3 3 3 3
4 4 4 4 1 1 1 1
F F F - F F F F - F -
Para ambas políticas se reduce el número de fallos de página al aumentar el
número de marcos a 4.
2. Considera un sistema de paginación bajo demanda en el que un proceso que
tiene asignados 4 marcos de página genera la siguiente secuencia de referencias
a pàginas:4,2,4,1,6,3,2,5,6,4,1,3,5,3
Indica que accesos producirían un fallo de página cuando se utiliza cada una de las
políticas de reemplazo local FIFO, LRU y óptima. Número de marcos a 4.
Solución
FIFO: 8 fallos de página
4 2 4 1 6 3 2 5 6 4 1 3 5 3
26. 26
SistemasOperativosGestióndeMemoria
4 4 4 4 4 3 3 3 3 3 3 3 3 3
2 2 2 2 2 2 5 5 5 5 5 5 5
1 1 1 1 1 1 4 4 4 4 4
6 6 6 6 6 6 1 1 1 1
F F - F F F - F - F F - - -
LRU: 11 fallos de página
4 2 4 1 6 3 2 5 6 4 1 3 5 3
4 4 4 4 4 4 2 2 2 2 1 1 1 1
2 2 2 2 3 3 3 3 4 4 4 4 4
1 1 1 1 5 5 5 5 3 3 3
6 6 6 6 6 6 6 6 5 5
F F - F F F F F - F F F F -
•
Óptimo: 7 fallos de pagina
4 2 4 1 6 3 2 5 6 4 1 3 5 3
4 4 4 4 4 4 4 4 4 4 1 1 1 1
2 2 2 2 2 2 5 5 5 5 5 5 5
1 1 1 1 1 1 1 1 3 3 3
6 6 6 6 6 6 6 6 6 6
F F - F F F F F - F F F F -
Segmentación Paginada y Paginación Segmentada
27. 27
SistemasOperativosGestióndeMemoria
La segmentación presenta una serie de propiedades ventajosas para el
programador, sin embargo, la paginación proporciona una forma más eficiente de
gestionar el espacio de memoria. Para combinar las ventajas de ambas, algunos
sistemas permiten una combinación de ambas, es decir, un sistema virtual con
segmentos paginados. El mecanismo de traducción de Direcciones virtuales a
Direcciones Físicas, no es más que la composición del mecanismo de la
memoria segmentada y el de la paginada.
BIBLIOGRAFÍA
Carretero Pérez, Jesús y otros. Sistemas operativos: una visión aplicada. Primera Edición,
Editorial McGraw Hill, España, 2001.