Está en la página 1de 25

SISTEMAS OPERATIVOS I

Administración de Memoria
2da parte

1 de 25
Sistemas Operativos I
Fallos de página

2 de 25
Sistemas Operativos I
Algoritmos de Reemplazo de Páginas

• Algoritmo de reemplazo de páginas óptimo


• No usadas recientemente
• Primera en entrar, Primera en salir (FIFO)
• Segunda oportunidad
• Clock (Reloj)
• Menos usadas recientemente (LRU)
• Conjunto de trabajo
• WSClock

3 de 25
Sistemas Operativos I
Algoritmo de reemplazo de páginas óptimo

 Se etiqueta cada página con el número de


instrucciones que se ejecutarán antes de que se
haga referencia por primera vez a esa página
 La página con etiqueta más alta debe eliminarse
 Al momento del fallo de página, el sistema
operativo no tiene forma de saber cuándo será la
próxima referencia a cada una de las páginas
(Recordar el algoritmo de planificación del trabajo
más corto primero: ¿cómo puede saber el sistema
cuál trabajo es más corto?)

4 de 25
Sistemas Operativos I
Algoritmo de reemplazo de páginas:
No usadas recientemente NRU (Not Recently Used)
 El SO debe recolectar estadísticas sobre el uso de páginas. Se
establecen dos bits de estado asociados a cada página:
◦ R = 1 cada vez que se hace referencia
a la página (lectura o escritura)
◦ M =1 se establece cuando se escribe
en la página (es decir, se modifica).
Estos bits se deben actualizar en cada referencia a la memoria
 Cuando ocurre un fallo de página, el SO inspecciona todas las páginas
y las divide en 4 categorías con base en los valores actuales de sus
bits R y M
◦ Clase 0: no ha sido referenciada, no ha sido modificada.
◦ Clase 1: no ha sido referenciada, ha sido modificada.
◦ Clase 2: ha sido referenciada, no ha sido modificada.
◦ Clase 3: ha sido referenciada, ha sido modificada.
 El algoritmo NRU elimina una página al azar de la clase de menor
numeración que no esté vacía
 Es fácil de comprender, moderadamente eficiente de implementar y
proporciona un rendimiento que, aunque no es óptimo, puede ser
5 de 25
adecuado Sistemas Operativos I
Algoritmo de reemplazo de páginas:
Primera en entrar, primera en salir (FIFO)

• El SO mantiene una lista de todas las páginas


actualmente en memoria, en donde la llegada más
reciente está en la parte final y la menos reciente en
la parte frontal.
• En un fallo de página, se elimina la página que está
en la parte frontal y la nueva página se agrega a la
parte final de la lista
• Se trata de reemplazar la página que ha estado mas
tiempo en memoria
• Podrían eliminarse páginas antiguas pero de mucho
uso
• Se usan variaciones de este algoritmo

6 de 25
Sistemas Operativos I
Algoritmo de reemplazo de páginas:
Segunda oportunidad
 Es una modificación simple al algoritmo FIFO
 Evita el problema de descartar una página de uso frecuente
inspeccionando el bit R de la página más antigua. Si es 0, la
página es antigua y no se ha utilizado, por lo que se sustituye de
inmediato. Si el bit R es 1, el bit se borra, la página se pone al final
de la lista de páginas y su tiempo de carga se actualiza, como si
acabara de llegar a la memoria.
 Después la búsqueda continúa.

Páginas ordenadas
con base a FIFO
(b) Lista de páginas si
ocurre un fallo de
página en el tiempo 20
y A tiene su bit R
activado. Los números
encima de las páginas
son sus tiempos de
carga
7 de 25
Sistemas Operativos I
Algoritmo de reemplazo de páginas: Clock (Reloj)

 Similar al de 2da oportunidad


 Mantiene todos los marcos de
página en una lista circular en
forma de reloj. La manecilla
apunta a la página más antigua.
 Cuando ocurre un fallo de página,
la página a la que apunta la
manecilla se inspecciona.
◦ Si el bit R es 0, la página se
desaloja, se inserta la nueva
página en el reloj en su lugar y
la manecilla se avanza una
posición
◦ Si R es 1, se borra y la
manecilla se avanza a la
siguiente página.

8 de 25
Sistemas Operativos I
Algoritmo de reemplazo de páginas:
Menos usadas recientemente (LRU Least Recently Used)
Aproximación al algoritmo óptimo: descartar la página que no se haya utilizado
durante la mayor longitud de tiempo.
Es necesario mantener una lista enlazada de todas las páginas en memoria, con
la página de uso más reciente en la parte frontal y la de uso menos reciente en la
parte final. La lista debe actualizarse en cada referencia a memoria.
¨Puede implementarse por hardware y por software:

n marcos
matrices de n x n
Si se referencia la
página k:
Fila k  “1”
Luego
Columna k  “0”
Elimina la fila de
menor valor
LRU usando una matriz cuando se hace referencia a las páginas 9 de 25
en el orden 0, 1, 2, 3, 2, 1, 0, 3, 2, 3. Sistemas Operativos I
Algoritmo de reemplazo de páginas:
No Utilizadas frecuentemente (NFU)
LRU por software. Este algoritmo requiere un contador de software asociado con cada página, que al
principio es cero.
En cada interrupción de reloj, el sistema operativo explora todas las páginas en memoria. Para cada
página se agrega el bit R, que es 0 o 1, al contador. Los contadores llevan la cuenta aproximada de la
frecuencia con que se hace referencia a cada página.
Cuando ocurre un fallo de página, se selecciona la página con el contador que sea menor para sustituirla.
En el algoritmo de envejecimiento los contadores tienen un número finito de bits (8 en este ejemplo), lo
cual limita su horizonte pasado.

10 de 25
Algoritmo de envejecimiento - Se muestran seis páginas para cinco pulsos de reloj Sistemas Operativos I
Algoritmo de reemplazo de páginas:
Conjunto de trabajo
Los procesos inician sin ninguna de sus páginas en la memoria – forma pura de paginación.
Cuando la CPU trata de obtener la primera instrucción, recibe un fallo de página. El SO tiene que
traer la página que contiene la primera instrucción. A este fallo le siguen otros fallos de página por
las variables globales y la pila.
Después de cierto tiempo, el proceso tiene la mayoría de las páginas que necesita y se establece
para ejecutarse con relativamente pocos fallos de página
Es decir que las páginas se cargan sólo según la demanda, no por adelantado.
El conjunto de páginas que utiliza un proceso en un momento dado se conoce como su conjunto de
trabajo
Si todo el conjunto de trabajo está en memoria, el proceso se ejecutará sin producir muchos fallos
hasta que avance a otra fase de ejecución.
Si la memoria disponible es demasiado pequeña como para contener todo el conjunto de trabajo
completo, el proceso producirá muchos fallos de página y se ejecutará lentamente, ya que para
ejecutar una instrucción se requieren varios neg y para leer una página del disco se requieren
algunos mseg
El conjunto de trabajo varía lentamente con el tiempo, es posible realizar una predicción razonable y
cargar páginas antes de reanudar el proceso, esto se llama prepaginación.
El SO debe llevar la cuenta de cuáles páginas están en el conjunto de trabajo. Esto nos conduce a
un posible algoritmo de reemplazo de páginas: cuando ocurra un fallo de página, hay que buscar11 de 25
una página que no se encuentre en el conjunto de trabajo y desalojarla. Sistemas Operativos I
Algoritmo de reemplazo de páginas:
Conjunto de trabajo

Tiempo virtual actual: es la cantidad de tiempo de la CPU que ha utilizado un proceso desde
que empezó. El conjunto de trabajo de un proceso es el conjunto de páginas a las que se ha 12 de 25
hecho referencia durante los últimos τ segundos de tiempo virtual. Sistemas Operativos I
Algoritmo de reemplazo de páginas: WSClock

Basado en el algoritmo de reloj y también utiliza la información del conjunto de trabajo.


Debido a su simplicidad de implementación y buen rendimiento, es muy utilizado en la
práctica.
Al principio, esta lista está vacía. Cuando se carga la primera página, se agrega a la
lista. A medida que se agregan más páginas, pasan a la lista para formar un anillo.
Cada entrada contiene el campo Tiempo de último uso del algoritmo básico del
conjunto de trabajo, así como el bit R (mostrado) y el bit M (no mostrado).
Al igual que con el algoritmo de reloj, en cada fallo de página se examina primero la
página a la que apunta la manecilla. Si el bit R es 1, la página se ha utilizado durante
el pulso actual, por lo que no es candidata ideal para la eliminación. Después el bit R
se establece en 0, la manecilla se avanza a la siguiente página y se repite el algoritmo
para esa página.
¿Qué ocurre si la manecilla llega otra vez a su punto inicial? Hay dos casos a
considerar:
1. Se ha planificado por lo menos una escritura. la manecilla sólo sigue moviéndose,
buscando una página limpia. Como se han planificado una o más escrituras, en algún
momento se completará alguna escritura y su página se marcará como limpia
2. No se han planificado escrituras. Todas las páginas están en el conjunto de trabajo,
de otra manera se hubiera planificado por lo menos una escritura. Lo más simple por
hacer es reclamar cualquier página limpia y usarla
13 de 25
Sistemas Operativos I
Algoritmo de reemplazo de páginas: WSClock

Ejemplo cuando R=1


14 de 25
Sistemas Operativos I
Algoritmo de reemplazo de páginas: WSClock

Ejemplo cuando R=0


15 de 25
Sistemas Operativos I
Algoritmos de reemplazo de páginas

Sumario
16 de 25
Sistemas Operativos I
Segmentación

El compilador tiene muchas tablas que se


generan a medida que procede la compilación,
las cuales posiblemente incluyen:

1. El texto del código fuente que se guarda para el listado


impreso (en sistemas de procesamiento por lotes).
2. La tabla de símbolos, que contiene los nombres y
atributos de las variables.
3. La tabla que contiene todas las constantes enteras y de
punto flotante utilizadas.
4. El árbol de análisis sintáctico, que contiene el análisis
sintáctico del programa.
5. La pila utilizada para las llamadas a procedimientos
dentro del compilador. 17 de 25
Sistemas Operativos I
Segmentación

En un espacio de direcciones unidimensional con tablas que


aumentan de tamaño, una tabla puede toparse con otra
18 de 25
Sistemas Operativos I
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
19 de 25
Sistemas Operativos I
Segmentación

Ejemplo 20 de 25
Sistemas Operativos I
Segmentación

Implementación 21 de 25
Sistemas Operativos I
Segmentación paginada

• Una memora segmentada permite que a tabla crezca o se reduzca de


manera independiente a las otras tablas.
• La segmentación también facilita la compartición de procedimientos o
datos entre varios procesos.
• Se divide el espacio lógico en partes semánticamente definidas.
• Optimiza la protección y la compartición.
22 de 25
• No hay fragmentación interna. Sistemas Operativos I
Segmentación paginada

Conversión de una dirección de dos partes


en una dirección de memoria principal 23 de 25
Sistemas Operativos I
Comparación entre paginación y segmentación
24 de 25
Sistemas Operativos I
Continúa …

25 de 25
Sistemas Operativos I

También podría gustarte