so: administración de memoria

94
Sistemas Operativos I Administración de memoria Angel Vázquez-Patiño [email protected] Departamento de Ciencias de la Computación Universidad de Cuenca 31 de mayo de 2016

Upload: angel-vazquez-patino

Post on 13-Jan-2017

79 views

Category:

Engineering


0 download

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)

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

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é

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)

Resolución de direcciones

Asignación de memoria contigua

Partición de la memoria

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

FIGURA SOBRE AJUSTE Y FRAGMENTACIÓNVídeo: https://youtu.be/w1tx6d8-pmw

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

PermisosIntercambio parcial

Ejemplificando

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

Segmentación

Segmentación

PermisosIntercambio parcial

Ejemplificando

Permisos

Ventaja de segmentación● Permisos● Distinguir niveles de acceso

● Llamadas al sistema, modo supervisor

Segmentación

PermisosIntercambio parcial

Ejemplificando

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

Segmentación

PermisosIntercambio parcial

Ejemplificando

Ejemplificando

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

● Direcciones manejadas por la CPU no son absolutas

2^9

Paginación

● Tabla de páginas para mapeo

Paginación

Espacio deDireccionamiento2^5 = 32 bytes

Requerimientodel proceso001 01

Página

Desplazamiento

Lo que ve el proceso

Paginación

Tamaño de la páginaAlmacenamiento de la tabla de páginas

Memoria compartida

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)

Paginación

Tamaño de la páginaAlmacenamiento de la tabla de páginas

Memoria compartida

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

El buffer de traducción adelantada (TLB)

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

Paginación

Tamaño de la páginaAlmacenamiento de la tabla de páginas

Memoria compartida

Memoria compartida

¿?: Permisos de lectura y escritura

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 compartida

Copiar al escribir (copy on write, CoW)

Memoria compartida

Copiar al escribir (copy on write, CoW)

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

Memoria virtual

● Swap● Transparente al proceso (gestionado por SO)

Memoria virtual

Paginación sobre demandaReemplazo de páginasAsignación de marcos

Hiperpaginación

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

Paginación sobre demanda

Paginación sobre demanda

Paginación sobre demanda

Memoria virtual

Paginación sobre demandaReemplazo de páginasAsignación de marcos

Hiperpaginación

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

Anomalía

de Belady

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)

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)

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

Memoria virtual

Paginación sobre demandaReemplazo de páginasAsignación de marcos

Hiperpaginación

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

Memoria virtual

Paginación sobre demandaReemplazo de páginasAsignación de marcos

Hiperpaginación

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)

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

Lectura en casa

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.

Fuente

● 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.