so: administración de memoria
TRANSCRIPT
Sistemas Operativos I
Administración de memoria
Angel Vázquez-Patiñ[email protected]
Departamento de Ciencias de la ComputaciónUniversidad de Cuenca
31 de mayo de 2016
Funciones y operacionesAsignación de memoria contigua
SegmentaciónPaginación
Memoria virtualConsideraciones de seguridad
Funciones y operaciones
Espacio de direccionamientoHW: la unidad de manejo de memoria (MMU)
La memoria cachéEl espacio en memoria de un proceso
Resolución de direcciones
Funciones y operaciones
● El único almacenamiento que usa el procesador es la RAM
● Almacenamiento primario y secundario● Programas → memoria (compilación, ligado)● HW especializado: unidad de manejo de
memoria (MMU)
Funciones y operaciones
Espacio de direccionamientoHW: la unidad de manejo de memoria (MMU)
La memoria cachéEl espacio en memoria de un proceso
Resolución de direcciones
Espacio de direccionamiento
● Memoria, arreglo direccionable de bytes● Con dirección específica, el HW entrega un byte● Espacio de direccionamiento de 16 bits puede
referirse directamente hasta a 2^16 bytes = 65536 bytes = 64 KB
● 32 bits, 2^32 bytes = 4 GB● 64 bits, 2^64 bytes = 16 Exabytes
– 2^40 y 2^48, 1 y 256 Terabytes
Funciones y operaciones
Espacio de direccionamientoHW: la unidad de manejo de memoria (MMU)
La memoria cachéEl espacio en memoria de un proceso
Resolución de direcciones
MMU
● Con multitarea, cómo ubicar los programas en la memoria física disponible
● Fue necesario abstraer el espacio de almacenamiento para dar la ilusión de contar con más memoria
● Con asistencia HW se configura espacio lineal para cada proceso
● MMU también encargada de controlar R W entre procesos
MMU
● Primera aproximación– Registro base y registro límite
– Modificados sólo por el SO
● Ejemplo: asignación de 64 KB (65536 bytes)
Funciones y operaciones
Espacio de direccionamientoHW: la unidad de manejo de memoria (MMU)
La memoria cachéEl espacio en memoria de un proceso
Resolución de direcciones
La memoria caché
● Según hay aumento en el registro de conteo de instrucción, se dan accesos a memoria
● En memoria, siguiente instrucción, operadores y el resultado
¿Cuál es el problema?● Diferencia de velocidad, procesador – memoria
La memoria caché
● Cuando el procesador pide contenido de dirección de memoria y no está disponible, detiene su ejecución
● El CPU no puede congelar el estado (lista secuencial de operaciones)
Memoria de alta velocidad entre RAM y procesador que guarda copias de las páginas que van siendo accedidas partiendo del principio de la localidad de referencia
La memoria caché
Localidad de referencia● Localidad temporal
– Es probable que un recurso que fue empleado recientemente vuelva a emplearse en un futuro cercano
● Localidad espacial– La probabilidad de que un recurso aún no requerido sea
accedido es mucho mayor si fue requerido algún recurso cercano
● Localidad secuencial– Un recurso, y muy particularmente la memoria, tiende a ser
requerido de forma secuencial
Así cuando el procesador pide un dato se manda una página
Funciones y operaciones
Espacio de direccionamientoHW: la unidad de manejo de memoria (MMU)
La memoria cachéEl espacio en memoria de un proceso
Resolución de direcciones
Espacio en memoria de un proceso
● (SO) Estructura para manejo de información de estado relativa a la ejecución
● Segmento de texto
Imagen en memoria de las instrucciones a ser ejecutadas
Espacio en memoria de un proceso
● (SO) Estructura para manejo de información de estado relativa a la ejecución
● Sección de datos
Espacio fijo preasignado para las variables globales y datos inicializados. Fijado en tiempo de compilación, los datos que cargados sí cambian
Espacio en memoria de un proceso
● (SO) Estructura para manejo de información de estado relativa a la ejecución
● Sección de libres (Heap)
Asignación dinámica durante la ejecución.
Espacio en memoria de un proceso
● (SO) Estructura para manejo de información de estado relativa a la ejecución
● Pila de llamadas (Stack)
Guarda la secuencia de funciones que han sido llamadas dentro del proceso
Funciones y operaciones
Espacio de direccionamientoHW: la unidad de manejo de memoria (MMU)
La memoria cachéEl espacio en memoria de un proceso
Resolución de direcciones
Resolución de direcciones
● Variables → direcciones de memoria● En tiempo de compilación
● Dirección absoluta● En tiempo de carga
● Cargador actualiza referencias a la memoria● En tiempo de ejecución
● Relativo a una base y un desplazamiento (offset)● Proceso reubicado en caliente (se necesita HW, e.g.,
MMU)
Partición de la memoria
● Primera solución: asignar bloques contiguos fijos
● Al comienzo se ve como un bloque● Conforme se ejecutan procesos, se subdivide
Partición de la memoria
Fragmentación● Regiones interrumpidas● Primer ajuste● Mejor ajuste● Peor ajuste● Fragmentación externa vs interna
Partición de la memoria
Compactación● Costo alto
Intercambio (swap)● Memoria principal ↔ memoria secundaria● Cuando la memoria se acaba, se suspende un
proceso y se almacena una copia● Considerar la velocidad de la memoria
secundaria
Segmentación
● Secciones: para espacio de variables globales, código compilado, etc
● La segmentación es un concepto que se aplica directamente a la arquitectura del procesador. Permite separar las regiones de la memoria lineal en segmentos, cada uno de los cuales puede tener diferentes permisos de acceso. La segmentación también ayuda a incrementar la modularidad de un programa.
Segmentación
● Código compilado para procesadores con segmentación. Espacio segmentado
● Direcciones lógicas (selector de segmento y un desplazamiento dentro del segmento)
● La MMU traduce a dirección lineal física● Fallas, excepciones
● Segmento no presente● Violación de segmento
Permisos
Ventaja de segmentación● Permisos● Distinguir niveles de acceso
● Llamadas al sistema, modo supervisor
Intercambio parcial
● Ciertas regiones para cambio a disco● Programa con porciones de código que no se repetirán
comúnmente● Swap
Rendimiento● Costo de swap● Cantidad de información trasladada menor● El que más estorbe, el menos recientemente usado● Si es un espacio de sólo lectura, no retornar a disco
Paginación
● Evita por completo la fragmentación externa● Cada proceso está dividido en varios bloques
de tamaño fijo más pequeños que los segmentos
● La asignación no requiere que sea en un área contigua de memoria
Paginación
● La memoria se divide en frames del mismo tamaño
● El espacio para cada proceso se divide en una serie de páginas del mismo tamaño que los marcos
Memoria
Paginación
Tabla depáginas
Páginas Memoria
La MMU se encarga delmapeo entre páginas ymarcos mediante tablasde páginas
Paginación
Espacio deDireccionamiento2^5 = 32 bytes
Requerimientodel proceso001 01
Página
Desplazamiento
Lo que ve el proceso
Tamaño de la página
● La fragmentación interna persiste● Desperdicio de un proceso con páginas/marcos de
longitud fija 2^n bytes● Mejor caso: 1● Peor caso: 2^n – 1● Promedio: 2^n / 2
● ¿Solución?● Páginas tan pequeñas como se pueda
Tamaño de la página
● ¿Solución?● Páginas tan pequeñas como se pueda
● Carga administrativa● Velocidad de transferencia secundario ↔
primario● Bloque de control de proceso (PCB) incluyendo
la información de memoria, requeriría intercambios de contexto más pesados
Tamaño de la página
Información asociada a un proceso (PCB)● Estado del proceso● Contador de programa● Registros del CPU● Información de planificación● Información de administración de memoria● Información de contabilidad● Estado de E/S
Tamaño de página
Concluyendo● Ahora (2015) habitualmente tamaños de 4 u 8
KB (2^12 o 2^13 bytes)● Solaris soporta múltiples tamaños 8 KB o 4 MB
(2^13 o 2^22 bytes)
Almacenamiento de la tabla de páginas
● Posible cuando se manejaban sistemas de 16 bits● Páginas de 8 KB (2^13)● Ocho páginas (2³)
● Con 32/64 bits no es posible por el tamaño que tendría el tamaño de la tabla de páginas
● Una solución es guardarla en la misma memoria pero se penaliza un acceso a la memoria con otra más
Almacenamiento de la tabla de páginas
El buffer de traducción adelantada (TLB)● Caché especializado en MMU● Tabla asociativa (hash) donde las claves son
las páginas y los valores los marcos● Búsquedas en tiempo constante
Almacenamiento de la tabla de páginas
Subdividiendo la tabla de páginas● El TLB tampoco puede ser muy grande● Se puede subdividir el identificador de página
en dos niveles o más● E.g., 32 bits: tabla externa de 10, tabla interna
de 10 y el desplazamiento de 12 bits● Cada nivel conlleva un acceso adicional a
memoria
Memoria compartida
Copiar al escribir (copy on write, CoW)● Unix, para crear un nuevo proceso fork()● Las páginas de memoria de ambos procesos son las
mismas mientras que sean sólo leídas● Se marcan las páginas como sólo lectura● Al querer modificar la página se produce un fallo● El SO nota que ocurrió eso en un espacio CoW, en vez
de terminar el proceso, copia la página y la marca como de lectura y escritura
Memoria virtual
● Swap● Transparente al proceso (gestionado por SO)● Cuando se habla de memoria virtual no se está
haciendo referencia a un intercambiador (swap), sino al paginador
Paginación sobre demanda
● Significa que, para comenzar a ejecutar un proceso, el sistema operativo carga solamente la porción necesaria para comenzar la ejecución (posiblemente una página o ninguna), y que a lo largo de la ejecución, el paginador es vago (lazy): sólo carga a memoria las páginas cuando van a ser utilizadas. Al emplear un paginador lazy, las páginas que no sean requeridas nunca serán siquiera cargadas a memoria
Reemplazo de páginas
● Si se aumenta la multiprogramación con memoria virtual puede darse que se comprometa más memoria de la que hay físicamente
● Algoritmos de reemplazo– Encontrar patrón que permita obtener el menor
número de fallos de página
Reemplazo de páginas
Análisis de algoritmos● Memoria de tres marcos● Cadena de referencia
7, 0, 1, 2, 0, 3, 0, 4, 2, 3, 0, 3, 2, 1, 2, 0, 1, 7, 0, 1
Reemplazo de páginas
Primero en entrar, primero en salir (FIFO)● Ventaja
– Simple
● Desventaja– No toma en cuenta la historia de las últimas
solicitudes, por lo que puede causar un bajo rendimiento. Todas las páginas tienen la misma probabilidad de ser reemplazadas, sin importar su frecuencia de uso
Reemplazo de páginas
Reemplazo de páginas óptimo (OPT, MIN) Página que no vaya a ser usada en un tiempo máximo
Reemplazo de páginas
Menos reciente utilizado (LRU)● Predecir cuándo será la próxima vez de uso
basado en el historial● Su implementación necesita apoyo HW
Reemplazo de páginas
Más frecuentemente utilizada (MFU) / menos frecuentemente utilizada (LFU)● Parecido a LRU pero no toma en cuenta el tiempo sino el
número de referencias que se han hecho a cada página● Lógica: MFU, si una página fue empleada muchas veces,
probablemente vuelva a ser empleada muchas veces más; LFU parte de que una página que ha sido empleada pocas veces es probablemente una página recién cargada, y va a ser empleada en el futuro cercano
● Demasiado costoso y no mucho mejor que LRU. No se usa
Reemplazo de páginas
Algoritmos con manejo de buffers● Sistema no espera a enfrentarse a la necesidad de
reemplazar un marco, sino que proactivamente busque tener siempre espacio vacío en memoria
● Para hacerlo, conforme la carga lo permite, el SO busca las páginas sucias más proclives a ser llevadas a disco y va actualizando el disco
● De este modo, cuando tenga que traer de vuelta una página, siempre habrá espacio donde ubicarla sin tener que esperar a que se transfiera una para liberarla
Asignación de marcos
● E.g., 2^20 = 1024 KB de memoria● 256 páginas de 1024 KB/256 = 4096 bytes● Paginación puramente por demanda● El SO ocupa 248 KB● 1. se reserva 248 KB/4096 bytes = 62 páginas● Restan 194 páginas● 2. cuando la memoria se llene el siguiente fallo de página
invocará un algoritmo de reemplazo● La gran cantidad de fallos penaliza el rendimiento
Asignación de marcos
● Demasiado lazy debería tener un mínimo de marcos
Mínimo de marcos● Si es posible por la arquitectura se debería
reservar 4 marcos: 1 para el flujo del programa, 1 para un operando, 1 para otro operando y 1 para el resultado
Asignación de marcos
Esquemas de asignación● Nivel deseable: dar a cada proceso el total e
marcos que solicita● Asignación igualitaria, deficiente, todos el
mismo espacio incluso sin necesitarlo● Asignación proporcional
Asignación de marcos
Ámbitos del algoritmo de reemplazo de páginas● Reemplazo local: las únicas páginas
consideradas para intercambio son las del mismo proceso
● Reemplazo global● Reemplazo global con prioridades: un proceso
puede sobrepasar su límite siempre que use el espacio de procesos de prioridad menor
Hiperpaginación (thrashing)
Varias razones● En un esquema de reemplazo local, un proceso
tiene pocas páginas y genera tantos fallos que le imposibilita hacer trabajo real
● En un esquema de reemplazo global, cuando hay demasiados procesos en ejecución en el sistema y los constantes fallos y reemplazos hacen imposible a todos los procesos involucrados avanzar
Hiperpaginación (thrashing)
Modelando el conjunto activo● Cambio de atención de un conjunto de páginas
a otro
Hiperpaginación (thrashing)
Modelando el conjunto activo● Una aproximación a la localidad de referencia
Hiperpaginación (thrashing)
Modelando el conjunto activo● Idealmente, para evitar los problemas relacionados con la
hiperpaginación, el sistema debe asignar a cada proceso suficientes páginas como para que mantenga en memoria física su conjunto activo —y si no es posible hacerlo, el proceso es un buen candidato para ser suspendido. Sin embargo, detectar con suficiente claridad para efectuar este diagnóstico cuál es el conjunto activo, es una tarea muy compleja, que típicamente implica rastrear y verificar del orden de los últimos miles a decenas de miles de accesos a memoria
Consideraciones de seguridad
Desbordamiento de buffer (buffer overflows)Ligado estático y dinámico de bibliotecas
Términos importantes
● Unidad de manejo de memoria
● Stack● Fragmentación● Compactación● Segmentación● Paginación
● CoW● Localidad de referencia● Página● Hiperpaginación● Conjunto activo● Memoria virtual● Buffer overflows
Revisar
● Wolf, G., Ruiz, E., Bergero, F., Meza, E., 2015. Fundamentos de Sistemas Operativos, 1st ed. Universidad Nacional Autónoma de México, México D.F., México. Ejercicios del capítulo 5.