Está en la página 1de 10

SISTEMAS OPERATIVOS - LUNES_PRESENCIAL_12780

Osnaider Pacheco Escobar

Facultad de Ingenieria

Universidad de la Costa

2021
Memoria virtual
• El sistema de memoria virtual de los actuales computadores surgió para liberar al
programador de una serie de tareas relacionadas con la gestión que los programas
deben 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 secundaria (disco).
• Las principales funciones que automatiza el sistema de memoria virtual son las
siguientes:
1. Aumento del espacio de direcciones físicas
• Permite que se ejecuten programas de tamaño superior a la
memoria principal
2. Reubicación de programas en memoria
• Permite que un programa se ejecute en cualquier ubicación de la
memoria
3. Protección de memoria
• Impide que un programa acceda a la zona de memoria de otro
programa
4. Compartición de memoria
• Permite que varios programas accedan a otros programas o datos
comunes

• Principio de funcionamiento de la memoria virtual


• En un computador con memoria virtual (Mv) 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 (Mp).
• Los programas operan virtualmente con un tamaño físico de memoria principal
mucho mayor
que el realmente disponible.
• Hay que diferenciar entre el espacio de direcciones virtuales generado por la CPU
y el espacio
de direcciones físicas o reales determinado por el tamaño de la memoria física.
• 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.
• Si la palabra referenciada no está en Mp habrá que trasladar un bloque de Mv
(disco) a Mp.

• Memoria virtual paginada.

• Tanto la memoria principal como la memoria del disco se dividen en páginas de


igual tamaño (Página en Mv y marco de página en Mp).
• El número de páginas de la memoria virtual es mayor que el número de marcos
de página de la memoria física.
• En cada momento sólo las copias de un conjunto de páginas virtuales del programa
residen en la memoria física: conjunto de trabajo o conjunto activo
• El conjunto activo resulta relativamente estable a lo largo del tiempo, debido a la
localidad referencial que manifiestan los programas.
Direcciones virtuales y físicas
• Los bits de una DV se consideran divididos en dos campos, el número de página
virtual (NPV) los más significativos, y el desplazamiento dentro de la página (DP),
los menos significativos.
• El número de bits nd del campo DP lo determina el tamaño de página (nd = log2
tamaño de página).
• El número de bits nv del campo NPV lo determina el número de páginas virtuales
(nv = log2 nº de páginas virtuales).
• Los bits nf de una DF se consideran divididos también en dos campos, el número
de página física (NPF) los
más significativos, y el desplazamiento dentro de la página (DP), los menos
significativos.
• El número de bits del campo DP de una DF es el mismo que el de una DV puesto
que las páginas tienen
igual tamaño que los marcos de página.
• El número de bits del campo NPF lo determina el número de páginas físicas de
Mp (nº de bits de NPF = log2
nº de páginas físicas).
Tabla de páginas
• Las DVs generadas por la CPU se traducen a DFs con la ayuda de una Tabla de
Páginas (TP).
• Esta tabla contiene en principio tantas entradas como páginas existen en la Mv, y
la posición en la tabla de
una entrada correspondiente a una página virtual concreta coincide con su NPV.
• Cada entrada contiene los siguientes campos:
H : bit de acierto (Hit)
H = 1 > Acierto de página
H = 0 > Fallo de página
C: Bit de limpieza de página (Clear)
C = 1 > Marco no modificado > no necesita actualizarse la página en el disco
C = 0 > Marco modificado > necesita actualizarse
RWX: Tipo de acceso permitido a la página: Lectura, escritura, ejecución
Tabla de páginas
• Las DVs generadas por la CPU se traducen a DFs con la ayuda de una Tabla de
Páginas (TP).
• Esta tabla contiene en principio tantas entradas como páginas existen en la Mv, y
la posición en la tabla de
una entrada correspondiente a una página virtual concreta coincide con su NPV.
• Cada entrada contiene los siguientes campos:
H : bit de acierto (Hit)
H = 1 > Acierto de página
H = 0 > Fallo de página
C: Bit de limpieza de página (Clear)
C = 1 > Marco no modificado > no necesita actualizarse la página en el disco
C = 0 > Marco modificado > necesita actualizarse
RWX: Tipo de acceso permitido a la página: Lectura, escritura, ejecución
• Memoria virtual segmentada.
Concepto de memoria virtual segmentada
• Proporciona una forma lógica de organizar los programas y datos.
• Permite gestionar la memoria como múltiples espacios de direcciones o
segmentos.
• Los segmentos tienen un tamaño variable, dinámico.
• Se puede asignar a cada segmento derechos de acceso y uso (privilegios
y protección).
• Las DVs se componen de Número de Segmento (NS) y Desplazamiento en
el Segmento (DS).
• La traducción de DV a DF se realiza con la ayuda de la Tabla de Segmentos
(TS) que contiene una entrada por segmento.
Tabla de segmentos (TS)
H C R W X LS DIS
H C R W X LS DIS
H C R W X LS DIS

• Cada entrada de la TS contiene:


 Los mismos bits de control y protección que la Tabla de Páginas.
 La Longitud del Segmento (LS)
 La Dirección Inicial del Segmento (DIS)

Estructura funcional de la memoria virtual segmentada


• Mecanismo de traducción de Dirección virtual a Dirección física
Políticas de ubicación (placement) para memorias segmentadas (1)
• Cuando se produce un fallo de segmento hay que buscar en Mp una
ubicación adecuada. • El problema no es trivial porque tanto los segmentos
como los huecos en Mp son de tamaño variable.
• Para gestionar las zonas libres de Mp:
1. Se crea una lista enlazada con identificación del tamaño de cada hueco.
2. Se aplica la política de ubicación sobre la lista.
3. Determinado el hueco donde ubicar el segmento, se actualiza la lista.
4. Si no se encuentra un hueco apropiado interviene la política de sustitución.

Políticas de ubicación (placement) para memorias segmentadas (2)

• Las tres políticas de ubicación de segmentos más utilizadas son las


siguientes:
 Mejor ajuste (best fit) o La lista de huecos se mantiene ordenada en orden
creciente de tamaño o Se ubica el segmento en el primer hueco con
capacidad suficiente para albergarlo.
 Peor ajuste (worst fit) o La lista de huecos se mantiene ordenada en orden
decreciente de tamaño o Se ubica el segmento en el primer hueco con
capacidad suficiente para albergarlo.
 Primer ajuste (first fit) o La lista de huecos se ordena según las direcciones
iniciales de los huecos o Se ubica el segmento en el primer hueco con
capacidad suficiente para albergarlo. o Cuando transcurre un cierto tiempo,
se acumulan un número elevado de huecos pequeños próximos a la cabeza
de la lista, penalizando las búsquedas. o Se evita adelantando cíclicamente,
después de cada búsqueda, la posición inicial de la lista

• Memoria virtual combinada.

• Al ser los segmentos unidades lógicas completas de programa o datos, la


memoria virtual segmentada presenta ventajas para el programador, pero
una mala gestión de Mp. • La paginación por el contrario proporciona una
forma más eficiente de gestionar la Mp, pero resulta más alejada de los
intereses del programador.
• La memoria virtual con segmentos paginados (segmentada paginada)
combina las ventajas de ambas: unidades lógicas para el programador y
eficiencia en la gestión de Mp.
Espacio virtual de direcciones
• Se divide en segmentos de tamaño variable.
• Cada segmento está compuesto por un número variable de páginas de igual
tamaño.
• Dirección virtual:

Espacio físico de direcciones


• Se divide en marcos de página (páginas físicas) del mismo tamaño que la
página.
• Dirección física:

• Reemplazo de Páginas.

Los Algoritmos de reemplazo de página son aquellos algoritmos de


sistemas operativos que están diseñados para solucionar el problema de
decidir qué página de las que reside en memoria bajo un frame o marco debe
salir para dejar entrar a otra que está siendo referenciada. Al ser los
reemplazos de página fundamentales para la paginación bajo demanda, es
importante que los sistemas operativos implementen los algoritmos más
efectivos. Algunos de los presentados son algoritmos creados para
concretizar la idea de reemplazo, otros son ideales pero imposibles o difíciles
de implementar y están aquellos que con ciertos costos son perfectamente
implementables, pero todo algoritmo debe apuntar a tener la menor cantidad
de fallos de página, lo que implica, por ejemplo, la reducción sustancial de
I/O a memoria secundaria.
Los algoritmos son evaluados con cadenas de referencias, que son cadenas
de números que indican las páginas que son referenciadas. La idea es
simular cómo actúan los distintos algoritmos para estas cadenas, de forma
tal de conocer su eficiencia.

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 la memoria, deberá reescribirse en el disco para
actualizar la copia. En cambio, si la página no se ha modificado(por ejemplo
si tiene texto de programa), la copia en disco ya estará actualizada y no será
necesario reescribirla. La nueva página simplemente sobreescribe lo que se
está desalojando. Aunque sería posible escoger una página al azar para
desalojarla cuando haya un fallo de página, el desempeño del sistema mejora
si se escoge una página que no se usa mucho.
Si se desaloja una página muy utilizada, lo más seguro es que pronto tenga que
volverse a traer a la memoria, con el consiguiente gasto extra.

• Asignación de Marcos.

En sistemas operativos de computadoras, los sistemas de paginación de


memoria dividen los programas en pequeñas partes o páginas. Del mismo
modo, la memoria es dividida en trozos del mismo tamaño que las páginas
llamados marcos de página. De esta forma, la cantidad de memoria
desperdiciada por un proceso es el final de su última página, lo que minimiza
la fragmentación interna y evita la externa.

En un momento cualquiera, la memoria se encuentra ocupada con páginas


de diferentes procesos, mientras que algunos marcos están disponibles para
su uso. El sistema operativo mantiene una lista de estos últimos marcos, y
una tabla por cada proceso, donde consta en qué marco se encuentra cada
página del proceso. De esta forma, las páginas de un proceso pueden no
estar continuamente ubicadas en memoria, y pueden intercalarse con las
páginas de otros procesos.

En la tabla de páginas de un proceso, se encuentra la ubicación del marco


que contiene a cada una de sus páginas. Las direcciones lógicas ahora se
forman como un número de página y de un desplazamiento dentro de esa
página (conocido comúnmente como offset). El número de página es usado
como un índice dentro de la tabla de páginas, y una vez obtenida la dirección
del marco de memoria, se utiliza el desplazamiento para componer la
dirección real o dirección física. Este proceso se realiza en una parte del
computador específicamente diseñada para esta tarea, es decir, es un
proceso hardware y no software.

De esta forma, cuando un proceso es cargado en memoria, se cargan todas


sus páginas en marcos libres y se completa su tabla de páginas.
• Hiperpaginación.

Si el número de marcos asignados a un proceso de baja prioridad desciende


por debajo del número mínimo requerido por la arquitectura del computador,
debemos suspender la ejecución de ese proceso. Luego debemos descargar
sus páginas restantes, liberando los marcos asignados. En general, cualquier
proceso que no cuente con marcos suficientes provocará fallos de página
muy frecuentemente. Si se reemplazan páginas que a su vez están activas,
estaremos sustituyendo una página que casi de inmediato se volverá a
necesitar. Por tanto, pronto vuelve a generarse otro fallo de página,
ocurriendo esto una y otra vez. A esta altísima actividad de paginación se le
llama hiperpaginación (thrashing). Un sistema está en hiperpaginación si
emplea más tiempo paginando que ejecutando.

La hiperpaginación ocasiona severos problemas de rendimiento. Considere


la siguiente situación, basada en el comportamiento real de los primeros
sistemas de paginación.

El sistema operativo supervisa la utilización de la CPU. Si ésta es demasiado


baja, aumentamos el nivel de multiprogramación introduciendo un nuevo
proceso en el sistema. Se emplea un algoritmo de reemplazo de páginas
global, que reemplaza páginas sin importar a qué procesos pertenezcan.
Suponga ahora que un proceso entra en una nueva fase de su ejecución y
necesita más marcos. Comienza a generar fallos de página y a tomar páginas
de otros procesos. Sin embargo, estos procesos necesitan esas páginas, por
lo que también fallan, tomando páginas de otros procesos. Todos estos
procesos generando fallos de página deben usar el dispositivo de paginación
para intercambiar las páginas. A medida que se colocan en la cola del
dispositivo de paginación, la cola procesos listos se vacía. Mientras los
procesos están bloqueados en espera del dispositivo de paginación, la
utilización de la CPU decrece.

El planificador de la CPU ve disminuir la utilización de ésta y, por tanto,


incrementa el nivel de multiprogramación. El nuevo proceso trata de
comenzar tomando páginas de los procesos en ejecución, lo que ocasiona
más fallos de página y una cola más larga para el dispositivo de paginación.
Y se vuelven a repetir los pasos descritos. Ha comenzado la hiperpaginación
y se desploma la productividad del sistema. La tasa de fallos de página
aumenta tremendamente y, como resultado, se incrementa el tiempo efectivo
de acceso a memoria. No se efectúa ningún trabajo porque el sistema
operativo está continuamente paginando.
Los efectos de la hiperpaginación se pueden limitar utilizando un algoritmo
de reemplazo local (o por prioridades). Con el reemplazo local, si un proceso
comienza a hiperpaginar, no puede robar marcos de otro proceso y provocar
que este también entre en hiperpaginación. Sin embargo, si los procesos
están en hiperpaginación, la mayor parte del tiempo pueden encontrarse en
la cola del dispositivo de paginación. El tiempo promedio de servicio de un
fallo de página aumenta y, por tanto, el tiempo efectivo de acceso aumenta
incluso para un proceso que no esté en hiperpaginación.

Para evitar la hiperpaginación debemos ofrecer a un proceso todos los


marcos que necesita; pero ¿cómo sabemos cuántos necesitan? Para saberlo
se utilizan técnicas como el modelo del conjunto de trabajo, que se basa el
concepto de localidad de la ejecución de procesos.

También podría gustarte