La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Tema 10: Gestión de Memoria

Presentaciones similares


Presentación del tema: "Tema 10: Gestión de Memoria"— Transcripción de la presentación:

1 Tema 10: Gestión de Memoria

2 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 Paginación por demanda Algoritmos de reemplazo de páginas Algoritmos de asignación de marcos de página

3 Tema 10.1: Introducción

4 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

5 Procesamiento de un Programa de Usuario

6 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)

7 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

8 Registros Base y Límite
Un par de registros base y límite definen el espacio de direcciones lógicas

9 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

10 Reubicación Dinámica Mediante Registro

11 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

12 Vista Esquemática del Intercambio

13 Tema 10.2: Asignación de Espacio Contiguo

14 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

15 Asignación Estática de Memoria Particionada
Asignación estática con múltiples particiones Hueco – bloque de memoria disponible; hay huecos de diversos tamaños repartidos por toda la memoria Cuando llega un proceso se le asigna un hueco lo suficientemente grande para que quepa El SO mantiene información sobre: a) particiones asignadas b) particiones libres (huecos) SO P5 P8 P2 SO P5 P2 SO P5 P2 P9 SO P5 P2 P9 P10 intenta entrar P8 sale P9 entra

16 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

17 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

18 Protección de Direcciones con Registros Base y Límite

19 Asignación Dinámica de Memoria Particionada
Ahora el tamaño y ubicación de las particiones no es fijo sino que cambia a lo largo del tiempo Cuando llega un proceso se le asigna memoria de un hueco lo suficientemente grande para que quepa Con el espacio sobrante del hueco se crea una nueva partición libre (hueco) En este tipo de asignación las consideraciones de protección son las mismas que en la asignación estática La compartición se puede conseguir mediante solapamiento de particiones SO P5 P8 P2 SO P5 P2 SO P5 P2 P9 SO P5 P9 P2 P10 P8 sale P9 entra P10 entra

20 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

21 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

22 Tema 10.3: Asignación de Espacio No Contiguo

23 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

24 Programa Visto por un Usuario

25 Vista Lógica de la Segmentación
1 3 2 4 Espacio de usuario 1 4 2 3 Espacio de memoria física

26 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

27 Hardware de Segmentación

28 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

29 Ejemplo de Segmentación

30 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

31 Esquema de Traducción de Direcciones
Una dirección generada por un proceso es dividida en: Página (p) – usado como índice en la tabla de páginas que contiene la dirección base de cada página en memoria física Desplazamiento (d) – se combina con la dirección base para definir la dirección de memoria física que se envía a la unidad de memoria Ej.: Dado un espacio de direcciones lógicas de 2m y tamaño de página 2n número de página desplazamiento p d m - n n

32 Hardware de Paginación

33 Memoria Física y Lógica en la Paginación

34 Ejemplo de Paginación Memoria de 32 bytes y páginas de 4 bytes

35 Después de la asignación
Marcos Libres Antes de la asignación Después de la asignación

36 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)

37 Memoria Asociativa Memoria asociativa – búsqueda en paralelo
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 # Página # Marco

38 Hardware de Paginación con TLB

39 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 + 

40 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

41 Bit de Validez en una Tabla de Páginas

42 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

43 Ejemplo de páginas compartidas

44 Biblioteca Compartida con Memoria Virtual

45 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

46 El Proceso 1 Modifica la Página C (Antes)

47 El Proceso 1 Modifica la Página C (Después)

48 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

49 Ejemplo de Paginación de Dos Niveles
Una dirección lógica (en una máquina de 32 bits con tamaño de páginas de 4K) se divide en: un número de página de 20 bits un desplazamiento dentro de la página de 12 bits Ya que la tabla de páginas está paginada y cada entrada de la tabla de páginas ocupa 4 bytes, el número de página es de nuevo dividido en: un número de página de 10 bits un desplazamiento de 10 bits Por tanto, una dirección lógica tiene el siguiente aspecto: donde p1 es un índice en la tabla externa y p2 es un desplazamiento en la segunda tabla de páginas número de página desplazamiento p1 p2 d 10 12

50 Esquema de Traducción de Direcciones

51 Esquema de Paginación de Tres Niveles

52 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)

53 Esquema de la Tabla de Páginas Invertida

54 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

55 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

56 Segmentación del Intel Pentium

57 Esquema de Paginación del Pentium

58 Direcciones Lineales en Linux
Se dividen en cuatro partes (paginación de tres niveles):

59 Tema 10.4: Gestión de Memoria Virtual

60 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

61 Memoria Virtual Mayor que la Memoria Física

62 Espacio de Direcciones Virtuales

63 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

64 Bit de Validez v v v v i …. i i
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: 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 # Marco Bit de validez v v v v i …. i i Tabla de páginas

65 Tabla de Páginas cuando hay Páginas Ausentes

66 Fallo de Página La primera referencia a una página producirá una excepción capturada por el SO: fallo de página El SO mira en la tabla de páginas para decidir qué hacer: Referencia inválida  aborta No está en memoria  continúa Obtiene un marco libre Carga la página en el marco Resetea las tablas Establece el bit de validez a v Reinicia la instrucción que causó el fallo de página

67 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

68 Pasos del Manejo de un Fallo de Páginas

69 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 )

70 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 p x = p x Si uno de cada accesos causa un fallo de páginas EAT = 8,2 μs El tiempo de ejecución se reduce en un factor de 41!!

71 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

72 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

73 Necesidad de Reemplazo de Páginas

74 Reemplazo de Páginas Básico
Encontrar la ubicación de la página deseada en disco 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 Traer la página deseada al (nuevo) marco libre; actualizar las tablas de páginas y de marcos Continuar con la ejecución del proceso

75 Reemplazo de Páginas

76 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

77 Fallo de Páginas Frente a Número de Marcos

78 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) 4 marcos Anomalía de Belady: más marcos  más fallos de página 1 1 4 5 2 2 1 3 9 fallos de página 3 3 2 4 1 1 5 4 2 2 1 5 10 fallos de páginas 3 3 2 4 4 3

79 Reemplazo de Páginas FIFO

80 Anomalía de Belady

81 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 En general, no conocemos los accesos futuros a memoria Este algoritmo se usa para estudiar el rendimiento de otros 1 4 2 6 fallos de página 3 4 5

82 Reemplazo de Páginas Óptimo

83 Algoritmo (LRU, Least Recently Used)
Cadena de referencias: 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5 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 1 1 1 1 5 2 2 2 2 2 3 5 5 4 4 4 4 3 3 3

84 Reemplazo de Páginas LRU

85 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

86 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

87 Algoritmo de Segunda Oportunidad (de Reloj)

88 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

89 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

90 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

91 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

92 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

93 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

94 Hiperpaginación

95 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

96 Patrón de Referencias a Memoria

97 Modelo de Conjunto de Trabajo
  ventana del conjunto de trabajo  un número fijo de referencias a páginas Ejemplo: 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

98 Modelo de Conjunto de Trabajo

99 Siguiendo la Pista al Conjunto de Trabajo
Se aproxima con un temporizador y un bit de referencia Ejemplo:  = 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

100 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

101 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

102 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

103 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

104 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

105 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

106 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

107 Escaneador de Páginas de Solaris 2

108 Fin del Tema 10

109 Carga Dinámica Las rutinas no se cargan has que son llamadas
Mejor uso de la memoria; una rutina que no se usa nunca se carga Útil cuando hay mucho código que se usa en muy raros casos No necesita soporte especial del SO; puede ser completamente implementado en el programa de usuario

110 Enlace Dinámico Enlace pospuesto hasta el tiempo de ejecución
Hay un pequeño fragmento de código (stub), usado para localizar la biblioteca apropiada previamente cargada en memoria Una vez localizada, el stub se reemplaza con la dirección de la rutina y la ejecuta El SO tiene que comprobar si la rutina está en la memoria del proceso El enlace dinámico es particularmente útil para bibliotecas También son conocidas como bibliotecas compartidas (ej., .dll en Windows o .so en Linux)


Descargar ppt "Tema 10: Gestión de Memoria"

Presentaciones similares


Anuncios Google