520 likes | 730 Views
Sistemas Operativos Tema 5. Gestión de la Memoria. Resumen. Introducción a la gestión de la memoria Requisitos Traducción de direcciones Espacio contiguo Espacio no contiguo Memoria virtual. Introducción.
E N D
Sistemas OperativosTema 5 Gestión de la Memoria
Resumen • Introducción a la gestión de la memoria • Requisitos • Traducción de direcciones • Espacio contiguo • Espacio no contiguo • Memoria virtual
Introducción • Se dedica una parte de la memoria al sistema operativo y otra parte a procesos de usuario • El gestor de memoria es la parte del S.O. que controla el uso de esta segunda parte • El gestor de memoria busca el uso efectivo de la memoria • Es necesario maximizar el número de procesos que hay en memoria en cada instante
Gestión de Memoria: requisitos • Reubicación • Permite que un proceso se pueda ubicar en diferentes posiciones de memoria, e incluso cambiar de posición • Permite el intercambio a memoria secundaria • Protección • Impide que un proceso acceda a datos de otro • Normalmente se realiza mediante hardware por razones de eficiencia
Gestión de Memoria: requisitos • Compartición • Permite que los procesos compartan información • Debe mantener las necesidades de protección • Organización Lógica • Deseable proporcionar soporte para los programas que utilizan módulos • La segmentación es el método que mejor satisface esta necesidad • Organización Física • El flujo de información entre memoria principal y memoria secundaria (y viceversa) lo gestiona el SO • La traducción de direcciones se realiza durante la ejecución del proceso
Traducción de Direcciones (I) El hardware de traducción permite la reubicación
Traducción de Direcciones (II) • Una Dirección Relativa es una dirección lógica que toma como base el comienzo del proceso • El Registro Base forma parte de los registros del procesador • Por razones de eficiencia la traducción la realiza el hardware • El Registro Límite permite aplicar técnicas de protección y compartición
Espacio contiguo: Particiones fijas • División de la memoria en regiones con límites fijos • Produce fragmentación interna pues el proceso no ocupa toda la partición • Regiones del mismo tamaño • Si son grandes se desperdicia mucho espacio • Si son pequeñas no caben los procesos • Regiones de distintos tamaños • Múltiples colas: la partición más pequeña donde quepa • Cola única: la partición más pequeña de las libres
Espacio contiguo: Particiones fijas Particiones fijas de igual y de distinto tamaño
Espacio contiguo: Particiones dinámicas • La partición se crea al ejecutar el proceso • Necesita algoritmo de ubicación
Espacio contiguo: Particiones dinámicas • Produce fragmentación externa • Se soluciona mediante compactación
Espacio no contiguo: asignación de memoria • El proceso se divide en fragmentos • Asignación de cada fragmento a una zona de memoria • No tienen por qué estar contiguos • Una tabla almacena la asignación de cada proceso • Cada acceso a memoria se convierte en dos accesos: uno a la tabla y otro al dato • Sólo es posible con ayuda del hardware • Reduce el coste de las consultas a la tabla
Espacio no contiguo: paginación • El proceso se divide en fragmentos del mismo tamaño llamados Páginas • La memoria se divide estáticamente en fragmentos de ese tamaño llamados Marcos de página • Se crea una tabla de páginas para cada proceso que hay en memoria que indica la posición de esa página • El esquema es similar a las particiones fijas, pero un proceso puede ocupar varias particiones • Las direcciones lógicas se expresan mediante dos valores: número de página y posición en la página
Espacio no contiguo: paginación • Para aplicar el esquema de paginación, las páginas deben ser de tamaño 2n • Una división entre 2n en valores binarios equivale a eliminar los n bits menos significativos • En ese caso la dirección lógica coincide con la dirección relativa • Los marcos de página siempre se corresponden con posiciones de memoria con los n bits menos significativos a cero • La traducción de direcciones se simplifica
Espacio no contiguo: paginación • Ejemplo de direcciones con paginación • La dirección relativa 1502 se corresponde con la dirección lógica (1, 478)
Espacio No ContiguoSegmentación (I) • El proceso se divide en fragmento del distinto tamaño llamados Segmentos • La memoria se divide dinámicamente en fragmentos del tamaño adecuado para cada segmento • El esquema es similar las particiones variables, pero un proceso puede ocupar varias particiones • Es necesario un algoritmo de ubicación para decidir dónde se sitúa un segmento en memoria
Espacio No ContiguoSegmentación (II) • Se crea una tabla de segmentos para cada proceso que hay en memoria, indica la posición del segmento y debe almacenar el tamaño de cada uno • Las direcciones lógicas se expresan mediante dos valores: número de segmento y posiciónen el segmento • El tamaño del campo con la posición delimita el tamaño máximo del segmento.
Espacio No ContiguoSegmentación (III) • Este tipo de división es más cercana al trabajo del programador, porque cada segmento se corresponde con un módulo y se genera la posición relativa a ese módulo • No hay ningún método que simplifique la traducción, porque los segmentos son de distinto tamaño
Espacio No ContiguoSegmentación (y IV) • Ejemplo de direcciones con segmentación • No hay ninguna relación entre la dirección relativa 1502 y la dirección lógica (1, 752) • La dirección lógica cambia según el tamaño de los segmentos
Espacio No ContiguoSegmentación Paginada (I) • Cada segmento se divide en páginas de tamaño 2n • La posición dentro del segmento es una dirección relativa que es una dirección lógica de paginación • El proceso utiliza segmentación ( s, d ) y el sistema divide el desplazamiento en una dirección lógica de paginación d = ( p, d’ ) • La memoria se divide en Marcos de Página
Espacio No ContiguoSegmentación Paginada (II) • Se utilizan tabla de segmentos y tabla de páginas • Una traducción necesita de tres accesos a memoria en lugar de dos • La tabla de segmentos indica la ubicación de la tabla de páginas del segmento y su número de páginas • La tabla de páginas indica la ubicación en memoria de cada página • Las páginas de un segmento no tienen que estar contiguas en memoria
Espacio No ContiguoTraducción con Segmentación Paginada Dirección virtual Memoria S P D’ D Dirección física M D’ Tamaño del segmento + Tabla de páginas S Base de la tabla de páginas Tabla de segmentos
Introducción a la Memoria VirtualCaracterísticas (I) • No es necesario que todos los fragmentos del proceso estén en memoria principal • Válido tanto para paginación como segmentación • En adelante hablaremos sólo de páginas • Cuando se accede a una página que no está en memoria se produce un Fallo de Página • El SO realiza una E/S y trae la pagina del disco • El proceso queda bloqueado hasta que llega la página • Ejecuta otro proceso en estado Listo
Introducción a la Memoria VirtualCaracterísticas (y II) • Conjunto residente es la parte que está en memoria, el resto se almacena en memoria secundaria • Es necesario tomar más decisiones para gestionar la memoria • Presenta dos ventajas • Es posible tener más procesos en memoria principal por lo que aumenta el grado de multiprogramación • Es posible que un proceso sea más grande que la memoria por lo que el tamaño del programa no está condicionado por el de la memoria
Introducción a la Memoria VirtualCercanía de Referencias (I) • Si un sistema pasa mucho tiempo resolviendo fallos de página, se dice que está en hiperpaginación • El procesador pasa más tiempo atendiendo fallo de página que ejecutando procesos • El S.O. adivina las páginas que va a usar un proceso en el futuro y las mantiene en memoria • Para ello emplea información sobre el comportamiento del proceso en el pasado cercano
Introducción a la Memoria VirtualCercanía de Referencias (y II) • Principio de Cercanía • Un proceso sólo accede a parte de sus páginas durante cierto periodo de tiempo, por lo que si esas páginas están en memoria no generará fallos de página • Cuando pasa ese periodo de tiempo, el proceso utiliza otro conjunto de páginas y genera fallos hasta tenerlas todas en memoria • El Principio de Cercanía es que permite llevar a la práctica la memoria virtual • Garantiza que un proceso no esta continuamente con fallos de página
Hardware de Memoria VirtualBuffer de Traducción Adelantada, TLB (I) • Permite acceder rápidamente a las últimas entradas utilizadas de la tabla de páginas o segmentos • Utiliza registros asociativos (rápidos y caros) • Permiten buscar un valor en todos ellos a la vez • La traducción comienza buscando en TLB, después busca en la tabla de páginas o segmentos y por último produce un fallo de página y carga la página del disco • El tiempo de acceso efectivo en un sistema con TLB es: Tacceso = prob_acierto * Tsiacierto + (1-prob_acierto) * Tsifallo
Hardware de Memoria VirtualTLB (y II) Con pocos registros asociativos se obtienen un alto porcentaje de aciertos en TLB por lo que se mejora mucho el tiempo de acceso
Hardware de Memoria VirtualModificaciones en Estructuras • Paginación • En cada entrada de la tabla de páginas añade dos bits • El bit de presencia (P) indica que la página está en memoria principal • El bit de modificación (M) indica que la página se ha modificado desde que se cargo en memoria principal • Una página no modificada no necesita escribirse en disco cuando se expulsa de memoria • Segmentación • Cadaentrada de la tabla de segmentos incluye también P y M • Segmentación paginada • Los bits P y M pertenecen a cada página de un segmento
Software de Memoria VirtualPolíticas de Lectura • Deciden cuándo debe entrar una página en memoria • Paginación por demanda • La página se carga cuando el proceso lo solicita • Paginación previa • Carga un conjunto de páginas del mismo bloque de disco • Normalmente se combinan ambos • Paginación previa al principio de la ejecución o cuando hay muchos fallos de página • Paginación por demanda cuando ya no hay muchos fallos de página
Software de Memoria VirtualPolíticas de Reemplazo (I) • Deciden qué página sale de memoria cuando se necesita espacio para cargar otra página • Deben tener en cuenta que algunas páginas están bloqueadas y no pueden salir de memoria • Se diferencian dos tipos de algoritmos: • Alcance local: la página a reemplazar pertenece al proceso que recibe la nueva página cargada. Normalmente los procesos tienen siempre el mismo número de páginas • Alcance global: la página a reemplazar puede pertenecer a cualquier proceso. Los procesos pueden tener más o menos páginas en cada instante
Software de Memoria VirtualPolíticas de Reemplazo (II) • Algoritmo FIFO • Reemplaza la página que lleva más tiempo en memoria • Presenta la anomalía de Belady: al utilizar más marcos se generan más fallos de página
Software de Memoria VirtualPolíticas de Reemplazo (III) • Algoritmo Óptimo • Reemplaza la página que tardará más tiempo en usarse • Utiliza información sobre el futuro (no conocida) • Sólo es útil con carácter teórico
Software de Memoria VirtualPolíticas de Reemplazo (IV) • Algoritmo Usada menos recientemente (LRU) • Las usadas en el pasado cercano serán las usadas en el futuro cercano (principio de cercanía) • Difícil de llevar a la práctica porque necesita anotar el instante de TODAS las páginas • Se utilizan algoritmos basados en LRU
Software de Memoria VirtualPolíticas de Reemplazo (V) • Algoritmo del reloj (Segunda Oportunidad) • Un bit de uso indica si una página se ha usado • El bit de uso se pone a uno cuando se referencia una página que ya está en memoria • Para el reemplazo, se recorre la lista de páginas de forma circular a partir de la última posición de reemplazo • Al pasar por una página con bit de referencia a uno, se pone a cero • Si se encuentra una página con el bit de uso a cero, se reemplaza esa página
Software de Memoria VirtualPolíticas de Reemplazo (VI) • Algoritmo del reloj (Segunda Oportunidad)
Software de Memoria VirtualPolíticas de Reemplazo (VII) • Algoritmo del reloj (Clases de páginas) • Utiliza el bit de uso (u) y el bit de modificación (m) • Establece cuatro clases de páginas (con u y m) • El algoritmo de reemplazo es: • Comenzando el la posición actual del puntero, recorrer la lista de marcos. Durante este recorrido se selecciona el primer marco con u=0 y m=0. No se modifica el bit de uso • Si falla el paso 1, recorrer de nuevo la lista buscando marcos con u=0 y m=1. Poner a cero el bit de uso de las páginas recorridas • Si falla 2, todos los bit de uso estarán a cero. Repetir el algoritmo desde el paso 1. Esta vez se encontrará un marco en el paso 1 o en el 2
Software de Memoria VirtualGestión del Conjunto Residente (I) • Intenta mantener en memoria todas las páginas que un proceso necesita en un instante dado • Utiliza un algoritmo de asignación local, pero cambia el número de páginas asignadas a un proceso • Es la estrategia del Conjunto de Trabajo • El conjunto de trabajo de un proceso en un “instante virtual” t y con parámetro , W(t, ), es el conjunto de páginas a las que el proceso ha hecho referencia en las últimas unidades de “tiempo virtual” • Por tiempo virtual se entiende el tiempo transcurrido mientras el proceso esta ejecutando, cada instrucción ejecutada equivale a una unidad de “tiempo virtual”
Software de Memoria VirtualGestión del Conjunto Residente (II) • El algoritmo mantiene en memoria el conjunto de trabajo de un proceso para un parámetro dado • El algoritmo no es aplicable en la práctica • El valor óptimo de es desconocido • El valor óptimo de cambia durante la ejecución del proceso • Es impracticable la medida del conjunto de trabajo de cada proceso, porque sería necesario marcar cada referencia de cada página de un proceso y mantener una cola ordenada de las páginas del proceso
Software de Memoria VirtualGestión del Conjunto Residente (III) • Algoritmo de Frecuencia de fallos de página (PFF) • Emplea el bit de uso y define un umbral de tiempo F • Controla el tiempo entre fallos de página • Si el tiempo entre dos fallos en menor que F, la página se añade al conjunto residente del proceso que la necesita. Esto aumenta el tamaño del conjunto residente • Si el tiempo entre dos fallos de página es mayor que F, se reemplazan todas las páginas con el bit de uso a cero y se pone a cero el bit de uso del resto. Esto reduce el tamaño del conjunto residente
Software de Memoria VirtualGestión del Conjunto Residente (IV) • El algoritmo PFF no funciona bien cuando el proceso cambia el conjunto de páginas que utiliza • El conjunto residente crece mucho porque hay muchos fallos de página • Algoritmo de Conjunto de trabajo muestreado en intervalos variables (VSWS) • Reemplaza las páginas no usadas en intervalos de tiempo variables • Emplea el bit de uso y tres parámetros • M, duración mínima del intervalo • L, duración máxima del intervalo • Q, número de fallos de página permitidos en el intervalo
Software de Memoria VirtualGestión del Conjunto Residente (y V) • Algoritmo VSWS • Si el tiempo virtual del intervalo llega a L, el intervalo termina • Si se producen Q fallos de página en el intervalo • Si el tiempo virtual del intervalo es menor que M, continuar con el intervalo • Si el tiempo virtual del intervalo es mayor que M, el intervalo termina • Durante el intervalo, las páginas siempre se añaden al conjunto residente. Eso hace que aumente de tamaño • El conjunto residente sólo puede disminuir de tamaño al final del intervalo • Cuando hay muchos fallos de página, el intervalo se reduce y el conjunto residente se vacía con mayor frecuencia
Software de Memoria VirtualPolíticas de Vaciado • Deciden cuándo se lleva a memoria secundaria una página que está en memoria principal • Vaciado por demanda • La página se descarga cuando se reemplaza • Vaciado previo • Descarga un conjunto de páginas del mismo bloque de disco
Software de Memoria VirtualPolíticas de Control de Carga • Determinan el número de procesos en memoria principal. Grado de multiprogramación • El objetivo es limitar el número de fallos de página para evitar la hiperpaginación • Los algoritmos de Gestión del conjunto residente incluyen control de carga • Criterio L = S • El tiempo medio entre fallos de página es el necesario para tratar un fallo de página • Criterio del 50% • El dispositivo de paginación debe estar en uso el 50% del tiempo
Software de Memoria VirtualSuspensión de Procesos • Para reducir el grado de multiprogramación es necesario expulsar procesos de memoria • Existen las seis posibilidades siguientes: • Proceso con la prioridad más baja • Proceso con más fallos de página • Último proceso en entrar al sistema • Proceso con menos páginas en memoria • Proceso con más páginas en memoria • Proceso con mayor tiempo de ejecución restante