Está en la página 1de 108

Gestión de Memoria

Gestión de Memoria

 Introducción
 Asignación de espacio contiguo
 Asignación estática de memoria particionada
 Asignación dinámica de memoria particionada
 Protección y uso compartido
 Asignación de espacio no contiguo
 Segmentación
 Paginación
 Segmentación con paginación
 Gestión de memoria virtual
 Introducción
 Paginación por demanda
 Algoritmos de reemplazo de páginas
 Algoritmos de asignación de marcos de página
Introducción
Antecedentes

 Un programa debe cargarse en memoria desde disco y colocarse


dentro de un proceso para que se ejecute
 La memoria principal y los registros son los únicos dispositivos de
almacenamiento a los que puede acceder la CPU directamente
 El acceso a registro es muy rápido; supone un ciclo de CPU (o
menos)
 El acceso a memoria principal puede durar varios ciclos
 Las memorias caché se colocan entre la memoria principal y la
CPU para acelerar el acceso a la información
Procesamiento de un Programa de Usuario
Vinculación de Direcciones

 La vinculación de instrucciones y datos a direcciones de


memoria puede realizarse en tres etapas diferentes
 Compilación: Si se conoce a priori la posición que va a
ocupar un proceso en la memoria se puede generar código
absoluto con referencias absolutas a memoria; si cambia la
posición del proceso hay que recompilar el código
 Carga: Si no se conoce la posición del proceso en memoria
en tiempo de compilación se debe generar código
reubicable
 Ejecución: Si el proceso puede cambiar de posición
durante su ejecución la vinculación se retrasa hasta el
momento de ejecución. Necesita soporte hardware para el
mapeo de direcciones (ej., registros base y límite)
Espacio de Direcciones Físicas y Lógicas

 El concepto de espacio de direcciones lógicas vinculado a un


espacio de direcciones físicas separado es crucial para una
buena gestión de memoria
 Dirección lógica – es la dirección que genera el proceso;
también se conoce como dirección virtual
 Dirección física – dirección que percibe la unidad de
memoria
 Las direcciones lógicas y físicas son iguales en los esquemas
de vinculación en tiempo de compilación y de carga; pero
difieren en el esquema de vinculación en tiempo de ejecución
Registros Base y Límite

 Un par de registros base y límite definen el espacio de direcciones


lógicas
Unidad de Gestión de Memoria (MMU)

 La MMU (Memory-Management Unit) es un dispositivo hardware


que transforma las direcciones virtuales en físicas

 Con la MMU el valor del registro de reubicación (registro base) es


añadido a cada dirección generada por un proceso de usuario en
el momento en que es enviada a la memoria

 El programa de usuario trabaja con direcciones lógicas; nunca ve


las direcciones físicas reales
Reubicación Dinámica Mediante Registro
Intercambio

 Un proceso puede ser retirado temporalmente de la memoria a algún


almacenado auxiliar; más tarde será incorporado de nuevo a la memoria
para que continúe su ejecución
 Almacenamiento auxiliar – disco rápido con capacidad suficiente para
albergar copias de imágenes de memoria para todos los usuarios; debe
proporcionar acceso directo a estas imágenes de la memoria
 Roll out, roll in – variante del intercambio usada para algoritmos de
planificación basados en prioridad; un proceso de baja prioridad es retirado
de memoria para que otro con mayor prioridad pueda ser cargado y
ejecutado
 La mayor parte del tiempo de intercambio es tiempo de transferencia; el
tiempo de transferencia total es directamente proporcional a la cantidad de
memoria intercambiada
 En muchos sistemas (ej. UNIX, Linux, y Windows) se pueden encontrar
versiones modificadas del intercambio
 El SO mantiene una cola de listos para los procesos intercambiados que
pueden ejecutarse
Vista Esquemática del Intercambio
Asignación de Espacio Contiguo
Asignación de Espacio Contiguo

 La memoria principal se encuentra dividida en dos partes:


 SO residente (kernel), normalmente en posiciones bajas de
la memoria junto al vector de interrupciones
 Zona para los procesos de usuario, normalmente en
posiciones altas de la memoria

 La zona para procesos de usuarios se encuentra dividida a su


vez en varias particiones que se asignarán a los procesos
 Particionamiento estático: las particiones se establecen
en el momento de arranque del SO y permanecen fijas
durante todo el tiempo
 Particionamiento dinámico: las particiones cambian de
acuerdo a los requisitos de los procesos
Fundamentos de los Computadores (ITT, Sist. Electr.), 2005-2006 Tema 10: 15 Silberschatz, Galvin and Gagne ©2005
Asignación Estática de Memoria Particionada

Hay varias formas de satisfacer una solicitud de tamaño n partiendo


de una lista de huecos
 Primer ajuste (First-fit): Se asigna el primer hueco lo
suficientemente grande
 Mejor ajuste (Best-fit): Se asigna el hueco más pequeño
que es lo suficientemente grande; hay que buscar en la lista
entera de huecos (salvo si está ordenada por tamaño)
 Desperdicia el menor espacio posible
Protección con Asignación Estática

 Los registros de reubicación se usan para proteger los procesos


de usuario unos de otros y del código y datos del SO
 El registro base contiene la dirección física más baja a la
que puede acceder el proceso
 El registro límite contiene el tamaño de la zona de memoria
accesible por el proceso – las direcciones lógicas deben ser
menores que el registro límite
 La compartición de memoria entre procesos no es sencilla
 Los procesos no pueden compartir memoria directamente
debido a la protección
 Una solución consiste en implicar al SO en la compartición
de memoria
Protección de Direcciones con Registros Base y Límite
Fundamentos de los Computadores (ITT, Sist. Electr.), 2005-2006 Tema 10: 19 Silberschatz, Galvin and Gagne ©2005
Asignación Dinámica de Memoria

Hay varias formas de satisfacer una solicitud de tamaño n partiendo


de una lista de huecos
 Primer ajuste (First-fit): Se asigna el primer hueco lo
suficientemente grande
 Mejor ajuste (Best-fit): Se asigna el hueco más pequeño
que es lo suficientemente grande; hay que buscar en la lista
entera de huecos (salvo si está ordenada por tamaño)
 Da lugar al hueco más pequeño
 Peor ajuste (Worst-fit): Se asigna el hueco más grande;
hay que buscar en la lista completa de huecos (salvo si está
ordenada por tamaño)
 Da lugar al hueco más grande

Los métodos de primer y mejor ajuste son mejores que el peor


ajuste en términos de velocidad y aprovechamiento de la memoria
Fragmentación

 Fragmentación Externa – hay suficiente memoria libre para


satisfacer una petición, pero esa memoria no es contigua
 Fragmentación Interna – la memoria asignada puede ser
ligeramente mayor que la solicitada; esta diferencia de tamaño se
encuentra en la partición pero no es usada
 La fragmentación externa se puede reducir por medio de la
compactación
 Mover las particiones de memoria asignadas para colocar toda
la memoria libre en un bloque contiguo
 Es posible sólo si la vinculación es en tiempo de ejecución
(reubicación dinámica)
 Hay problemas con la E/S
 Fijar la posición en memoria de los procesos que hacen E/S
 Hacer E/S sólo en buffers del SO
Asignación de Espacio
No Contiguo
Segmentación

 Esquema de gestión de memoria que apoya la visión que el


usuario tiene de la memoria
 Un programa es una colección de segmentos. Un segmento es
una unidad lógica tal como:
programa principal,
procedimiento,
función,
método,
objeto,
variables locales, variables globales,
bloque común,
pila,
tabla de símbolos, arrays
Programa Visto por un Usuario
Fundamentos de los Computadores (ITT, Sist. Electr.), 2005-2006 Tema 10: 25 Silberschatz, Galvin and Gagne ©2005
Esquema de la Segmentación

 Una dirección lógica consiste en un par:


<número de segmento, desplazamiento>
 Tabla de segmentos – contiene información sobre la
ubicación de los segmentos en memoria; cada entrada tiene:
 base – contiene la dirección física en la que comienza el
segmento
 límite – especifica la longitud del segmento
 El Registro base de la tabla de segmentos (STBR) apunta
a la localización en memoria de la tabla de segmentos
 El Registro de longitud de la tabla de segmentos (STLR)
indica el número de segmentos usados por un programa;
el número de segmento s es legal si s < STLR
Hardware de Segmentación
Esquema de la Segmentación

 Protección
 En cada entrada de la tabla de segmentos hay:
 bit de validez = 0  segmento ilegal
 privilegios de lectura/escritura/ejecución
 Los bits de protección están asociados con los segmentos;
la compartición de código ocurre a nivel de segmento
 Ya que los segmentos varían en longitud, la asignación de
memoria es un problema de asignación dinámica
Ejemplo de Segmentación
Paginación

 El espacio de direcciones lógicas de un proceso puede ser no


contiguo en memoria; así se puede asignar memoria al
proceso siempre que haya alguna disponible
 Se divide la memoria física en bloques de tamaño fijo
llamados marcos (el tamaño es una potencia de 2 entre 512 y
8192 bytes)
 Se divide el espacio de direcciones lógicas de los procesos en
bloques llamados páginas
 Se mantiene una lista con los marcos libres
 Para ejecutar un programa de tamaño n páginas, hace falta
encontrar n marcos libres y cargar el programa
 Se usa una tabla de páginas para transformar las direcciones
lógicas en direcciones físicas
 En este esquema aparece la fragmentación interna
Fundamentos de los Computadores (ITT, Sist. Electr.), 2005-2006 Tema 10: 31 Silberschatz, Galvin and Gagne ©2005
Hardware de Paginación
Memoria Física y Lógica en la Paginación
Ejemplo de Paginación
Memoria de 32 bytes y páginas de 4 bytes
Marcos Libres

Antes de la asignación Después de la asignación


Implementación de la Tabla de Páginas

 La tabla de páginas se mantiene en memoria principal


 El registro base de la tabla de páginas (PTBR) apunta al
inicio de la tabla de páginas
 El registro longitud de la tabla de páginas (PRLR) indica
el tamaño de la tabla de páginas
 En este esquema cada acceso a dato o instrucción requiere
dos accesos a memoria. Uno para la tabla de páginas y otro
para obtener el dato o instrucción
 Se puede agilizar el proceso usando una pequeña memoria
asociativa o TLB (translation look-aside buffer)
Memoria Asociativa

 Memoria asociativa – búsqueda en paralelo


# Página # Marco

Traducción de direcciones (p, d)


 Si p está en un registro asociativo se obtiene el número de marco
 Si no, se obtiene el número de marco de la tabla de páginas que
está en memoria principal
Hardware de Paginación con TLB
Tiempo de Acceso Efectivo

 Búsqueda asociativa =  unidades de tiempo


 Acceso a memoria = m
 Tasa de acierto – probabilidad de encontrar una página en
los registros asociativos; este valor depende de las
peticiones de páginas y del número de registros asociativos
 Tasa de acierto = 
 Tiempo de acceso efectivo (Effective Access Time, EAT)
EAT = (m + )  + (2m + )(1 – )
= 2m – m + 
Protección de la Memoria

 La protección de la memoria se implementa asociando un bit


de protección con cada página

 Hay un bit de validez en cada entrada de la tabla de páginas:


 “válido” indica que la página asociada está en el espacio
de direcciones lógico del proceso, y por tanto es legal el
acceso
 “inválido” indica que la página no está en el espacio de
direcciones lógico del proceso
Bit de Validez en una Tabla de Páginas
Páginas Compartidas

 Gracias al uso de la tabla de páginas varios procesos pueden


compartir un marco de memoria; para ello ese marco debe
estar asociado a una página en la tabla de páginas de cada
proceso
 El número de página asociado al marco puede ser diferente
en cada proceso
 Código compartido
 Los procesos comparten una copia de código reentrante
de sólo lectura (ej., editores de texto, compiladores)
 Los datos son privados a cada proceso y se encuentran
en páginas no compartidas
Ejemplo de páginas compartidas
Biblioteca Compartida con Memoria Virtual
Copia en Escritura

 La copia en escritura (Copy-on-Write, COW) permite a los


procesos padre e hijo compartir inicialmente las mismas páginas
de memoria
 Si uno de ellos modifica una página compartida la página es
copiada

 COW permite crear procesos de forma más eficiente debido a que


sólo las páginas modificadas son duplicadas
El Proceso 1 Modifica la Página C (Antes)
El Proceso 1 Modifica la Página C (Después)
Tabla de Páginas Multinivel

 Divide el espacio de direcciones lógicas en múltiples tablas de


páginas
 Un ejemplo simple es una tabla de páginas de dos niveles
Fundamentos de los Computadores (ITT, Sist. Electr.), 2005-2006 Tema 10: 49 Silberschatz, Galvin and Gagne ©2005
Esquema de Traducción de Direcciones
Esquema de Paginación de Tres Niveles
Tabla de Páginas Invertida

 Una entrada por cada marco de memoria


 Las entradas contienen la dirección virtual de la página
almacenada en el marco con información sobre el proceso
que la posee
 Disminuye la memoria necesaria para almacenar cada
tabla de páginas pero aumenta el tiempo requerido para
buscar en la tabla cuando ocurre una referencia a memoria
 Solución: usar una tabla hash para limitar la búsqueda a
una entrada (o unas pocas como mucho)
Esquema de la Tabla de Páginas Invertida
Segmentación con Paginación

 La paginación y la segmentación se pueden combinar en la


segmentación con paginación
 En este esquema de gestión de memoria los segmentos se
paginan
 Se apoya la visión de la memoria que tiene el usuario
 Se resuelve el problema de la asignación dinámica
 Es necesario una tabla de segmentos y una tabla de páginas por
cada segmento
 La traducción de direcciones es más compleja y puede requerir
un mayor número de accesos a memoria en el peor caso
Ejemplo: El Intel Pentium

 Soporta segmentación y segmentación con paginación


 El proceso genera una dirección lógica
 Se le da a la unidad de segmentación
 Que produce una dirección lineal
 La dirección lineal pasa a la unidad de paginación
 Que genera la dirección física para la memoria principal
Segmentación del Intel Pentium
Esquema de Paginación del Pentium
Direcciones Lineales en Linux
Se dividen en cuatro partes (paginación de tres niveles):
Gestión de Memoria Virtual
Antecedentes

 Memoria virtual – separación de la memoria lógica de la física


 Sólo parte del programa necesita estar en memoria en un
momento dado para continuar su ejecución
 El espacio de direcciones lógicas puede ser mayor que el
espacio de direcciones físicas
 Permite compartir espacios de direcciones entre procesos
 Permite una creación de procesos más eficiente

 La memoria virtual suele implementarse usando:


 Paginación por demanda
 Segmentación por demanda
Memoria Virtual Mayor que la Memoria Física


Espacio de Direcciones Virtuales
Paginación por Demanda

 Trae una página a memoria sólo cuando hace falta


 La E/S se reduce
 Se requiere menos memoria
 La respuesta es más rápida
 Puede haber más procesos en memoria

 Se necesita una página  la página es referenciada


 referencia inválida  aborta
 no está en memoria  se trae a memoria
 “Intercambiador” perezoso – nunca trae una página a memoria
salvo si es necesario
 El intercambiador que trabaja con páginas es un paginador
Bit de Validez
 En cada entrada de la tabla de páginas hay un bit de validez
(v  en memoria, i  no en memoria o acceso ilegal)
 Al comienzo el bit de validez es inicializado a i en todas las entradas
 Ejemplo de tabla de páginas:

# Marco Bit de validez


v
v
v
v
i
….

i
i
Tabla de páginas

 Durante la traducción de direcciones, si el bit de validez de la entrada de


la tabla de páginas es i  fallo de página
Tabla de Páginas cuando hay Páginas Ausentes
Fallo de Página

 La primera referencia a una página producirá una


excepción capturada por el SO:
fallo de página
1. El SO mira en la tabla de páginas para decidir qué hacer:
 Referencia inválida  aborta
 No está en memoria  continúa
2. Obtiene un marco libre
3. Carga la página en el marco
4. Resetea las tablas
5. Establece el bit de validez a v
6. Reinicia la instrucción que causó el fallo de página
Fallo de Página
 Instrucciones problemáticas para el reinicio de instrucción
 Instrucciones de cadenas

 Auto incremento/decremento
 Soluciones
 Comprobar antes de ejecutar la instrucción que no va a
producirse un fallo de página
 Almacenar los valores antiguos en registros temporales
 Guardar el estado del microcódigo del procesador
Pasos del Manejo de un Fallo de Páginas
Rendimiento de la Paginación por Demanda

 Tasa de fallo de páginas 0  p  1


 si p = 0, no hay fallo de páginas
 si p = 1, cada referencia produce un fallo

 Tiempo de acceso efectivo (EAT)


EAT = (1 – p) x acceso a memoria
+ p (sobrecarga por fallo de página
+ escribir página
+ traer página
+ sobrecarga de reinicio
)
Ejemplo de Paginación por Demanda

 Tiempo de acceso a memoria = 200 ns

 Promedio del tiempo de servicio de un fallo de páginas = 8 ms

 EAT = (1 – p) x 200 + p x 8.000.000


= 200 + p x 7.999.800

 Si uno de cada 1.000 accesos causa un fallo de páginas


EAT = 8,2 μs
El tiempo de ejecución se reduce en un factor de 41!!
Qué Pasa Si No Hay Marco Libre?

 Reemplazo de páginas – encuentra una página en memoria


que no se esté usando y la retira
 se usa un algoritmo de reemplazo
 objetivo – minimizar el fallo de páginas
 La misma página podría ser traída a memoria varias veces
Reemplazo de Páginas

 Previene la sobreasignación de memoria modificando la rutina de


fallo de páginas para incluir el reemplazo de páginas

 Se usa el bit de modificado (suciedad) para reducir la


sobrecarga por transferencias de páginas – sólo las páginas
modificadas se escriben a disco

 El reemplazo de páginas completa la separación entre la memoria


lógica y la memoria física – se puede proporcionar una gran
cantidad de memoria virtual sobre una menor memoria física
Necesidad de Reemplazo de Páginas
Reemplazo de Páginas Básico

1. Encontrar la ubicación de la página deseada en disco

2. Encontrar un marco libre:


- Si hay un marco libre, usarlo
- Si no hay un marco libre, usar un algoritmo de
reemplazo para escoger el marco víctima

3. Traer la página deseada al (nuevo) marco libre;


actualizar las tablas de páginas y de marcos

4. Continuar con la ejecución del proceso


Reemplazo de Páginas
Algoritmos de Reemplazo de Páginas

 El objetivo es una tasa de fallos de página lo más baja posible

 Los algoritmos se evalúan ejecutándolos sobre una cadena


de referencias a memoria y calculando el número de fallos de
página producidos con esa cadena

 En todos nuestros ejemplos, la cadena de referencias será


1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5
Fallo de Páginas Frente a Número de Marcos
Algoritmo First-In-First-Out (FIFO)
 Cadena de referencias: 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5
 3 marcos (3 páginas en memoria por proceso)

1 1 4 5
2 2 1 3 9 fallos de página
3 3 2 4
 4 marcos

1 1 5 4
2 2 1 5 10 fallos de páginas
3 3 2

4 4 3
 Anomalía de Belady: más marcos  más fallos de página
Reemplazo de Páginas FIFO
Anomalía de Belady
Algoritmo Óptimo

 Reemplaza la página que será usada más tarde


 Ejemplo con 4 marcos
1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5

1 4
2 6 fallos de página
3

4 5

 En general, no conocemos los accesos futuros a memoria


 Este algoritmo se usa para estudiar el rendimiento de otros
Reemplazo de Páginas Óptimo
Algoritmo (LRU, Least Recently Used)
 Cadena de referencias: 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5

1 1 1 1 5
2 2 2 2 2
3 5 5 4 4
4 4 3 3 3

 Implementación con contador


 Cada entrada de página tiene un contador; cada vez que la
página es referenciada se copia la hora en el contador
 Cuando una página necesita ser cambiada, se miran los
contadores para determinar cuál se cambia
Reemplazo de Páginas LRU
Algoritmo LRU

 Implementación con pila – se mantiene una pila de números de


página:
 Cuando una página es referenciada:
 Se mueve a la cabeza de la pila
 En el reemplazo se escoge la página de la cola de la pila
Algoritmos de Aproximación al LRU

 Bit de referencia
 Con cada página se asocia un bit, inicialmente puesto a 0
 Cuando se referencia una página el bit se pone a 1
 Se reemplaza la página con el bit a 0 (si hay alguna)
 Esto no permite conocer el orden de uso
 Algoritmo de segunda oportunidad
 Necesitamos un bit de referencia
 También se denomina algoritmo de reloj
 Si la página a reemplazar (de acuerdo al orden del reloj) tiene
el bit de referencia a 1:
 Se pone el bit a 0
 Se deja la página en memoria
 Trata de reemplazar la siguiente página siguiendo el orden
del reloj
Algoritmo de Segunda Oportunidad (de Reloj)
Algoritmos de Conteo

 Se necesita un contador con el número de referencias que se


han hecho a cada página

 Algoritmo LFU: reemplaza la página con el valor más bajo


en el contador

 Algoritmo MFU: reemplaza la página con el valor más alto


en el contador
 Se basa en el argumento de que la página con el número
más pequeño en el contador acaba de ser traída y aún
no se usa
Asignación de Marcos

 Cada proceso necesita un número mínimo de páginas; ese número


depende de la máquina
 Ejemplo: IBM 370 – se pueden necesitar hasta 6 páginas para una
instrucción SS MOVE:
 La instrucción ocupa 6 bytes, podría requerir 2 páginas
 2 páginas para la cadena origen
 2 páginas para el destino
 Esquemas principales de asignación
 Asignación fija
 Asignación por prioridad
Asignación Fija
 Asignación equitativa – Por ejemplo, si hay 100 marcos y 5
procesos, se le da a cada proceso 20 marcos
 Asignación proporcional – Asigna marcos de acuerdo al tamaño
del proceso
si = tamaño del proceso pi
S= ∑ si
m= número total de marcos m= 64
si
a i= asignación para pi = × m s1= 10
S
s2= 127
10
a 1= × 64≈ 5
137
127
a 2= × 64≈ 59
137
Asignación por Prioridad

 Usa un esquema de asignación proporcional basado en las


prioridades en lugar del tamaño

 Si el proceso Pi produce un fallo de páginas,


 Escoge para reemplazar uno de sus marcos
 Escoge para reemplazar un marco de un proceso con
menor prioridad
Asignación Local y Global

 Reemplazo global – se escoge para reemplazar un marco


de cualquier proceso; un proceso puede tomar un marco
de otro
 Reemplazo local – se escoge para reemplazar un marco
del proceso que necesita la página
Hiperpaginación

 Si un proceso no tiene suficientes páginas, la tasa de fallos de


página es muy alta. Esto lleva a:
 Uso bajo de CPU
 El SO piensa que necesita aumentar el grado de
multiprogramación
 Otro proceso se añade al sistema

 Hiperpaginación  un proceso está ocupado trayendo y retirando


páginas de memoria
Hiperpaginación
Paginación por Demanda e Hiperpaginación

 Por qué funciona la paginación por demanda?


Modelo de localidad
 Los procesos migran de una localidad a otra
 Las localidades pueden solaparse

 Por qué ocurre la hiperpaginación?


 tamaño de la localidad > tamaño de la memoria
Patrón de Referencias a Memoria
Modelo de Conjunto de Trabajo

   ventana del conjunto de trabajo  un número fijo de


referencias a páginas
Ejemplo: 10.000 instrucciones
 WSSi (conjunto de trabajo del proceso Pi) =
número total de páginas referenciadas en la ventana más
reciente  (cambia con el tiempo)
 Si  es demasiado pequeño no abarcará toda la localidad
 Si  es demasiado grande abarcará varias localidades
 Si  =   abarcará el programa entero
 D =  WSSi  total de marcos requeridos
 Si D > m  Hiperpaginación
 Política si D > m, se suspende un proceso
Modelo de Conjunto de Trabajo
Siguiendo la Pista al Conjunto de Trabajo

 Se aproxima con un temporizador y un bit de referencia


 Ejemplo:  = 10.000
 El temporizador interrumpe cada 5000 unidades de tiempo
 Se mantienen en memoria 2 bits por página
 Cuando el temporizador interrumpe copia el bit de referencia
y lo pone a 0
 Si uno de los bits en memoria es 1  la página está en el
conjunto de trabajo
 Mejora: 10 bits e interrumpir cada 1000 unidades de tiempo
Frecuencia de Fallos de Página

 Es otra forma de evitar la hiperpaginación


 Se busca conseguir una tasa de fallos de página aceptable
 Si la tasa actual es demasiado baja, el proceso pierde un marco
 Si la tasa actual es demasiado alta, el proceso gana un marco
Prepaginación

 Prepaginación
 Se usa para reducir el gran número de fallos de página que
ocurre al comienzo de un proceso
 Consiste en traer a memoria todas o algunas de las páginas que
necesitará un proceso antes de que las referencie
 La páginas prepaginadas pueden no ser utilizadas, hay gasto de
memoria y E/S
 Asumimos que s páginas son prepaginadas y una fracción α de
esas páginas son usadas
 Es el coste de los s * α fallos de página ahorrados > o < que
el coste de prepaginar s * (1- α) páginas innecesarias?
 Si α es cercano a cero  la prepaginación no interesa
Tamaño de las Páginas

 Para la selección del tamaño de página hay que tener en


cuenta:
 La fragmentación interna
 El tamaño de la tabla de páginas
 La sobrecarga de E/S
 La localidad
Estructura del Programa

 Estructura del Programa


 int data[128][128];
 Cada fila se almacena en una página
 Programa 1
for (j = 0; j <128; j++)
for (i = 0; i < 128; i++)
data[i][j] = 0;

128 x 128 = 16,384 fallos de página

 Programa 2
for (i = 0; i < 128; i++)
for (j = 0; j < 128; j++)
data[i][j] = 0;

128 fallos de página


Interbloqueo de E/S

 Interbloqueo de E/S – A veces las páginas deben


bloquearse en memoria

 Las páginas que se están usando para copiar un fichero


de un dispositivo deben bloquearse para que no sean
escogidas por un algoritmo de reemplazo de páginas
Windows XP

 Usa paginación por demanda con agrupamiento (clustering). El


clustering trae a memoria páginas adyacentes a la página que falló
 A los procesos se les asigna un conjunto de trabajo mínimo y
máximo
 El conjunto de trabajo mínimo es el mínimo número de páginas del
proceso que van a estar con seguridad en memoria
 A un proceso se le pueden asignar páginas hasta que llegue a su
conjunto de trabajo máximo
 Cuando la cantidad de memoria libre en el sistema cae por debajo
de un umbral, se hace un recorte automático del conjunto de
trabajo para restaurar la cantidad de memoria libre
 El recorte del conjunto de trabajo retira páginas de los procesos
que tienen un número de páginas mayor que el mínimo
Solaris

 Mantiene una lista de marcos libres para asignar a los procesos


que fallan
 Lotsfree – umbral (cantidad de memoria libre) para comenzar la
paginación
 Desfree – umbral para incrementar la paginación
 Minfree – umbral para comenzar el intercambio
 La paginación la realiza el proceso pageout
 Pageout escanea las páginas usando una variante del algoritmo de
reloj (algoritmo de reloj modificado)
 Scanrate es la tasa a la que las páginas son escaneadas. Este
valor va entre slowscan y fastscan
 Pageout se llama más frecuentemente dependiendo de la cantidad
de memoria libre
Escaneador de Páginas de Solaris 2
Fin

También podría gustarte