Descargar la presentación
La descarga está en progreso. Por favor, espere
Publicada porRocío Guzmán Godoy Modificado hace 8 años
1
Administración de Memoria Conceptos Swapping Asignación Continua Paginación Segmentación Segmentación con Paginación
2
Conceptos Un programa debe ser cargado en memoria y asignado a un proceso para ser ejecutado. Cola de entrada – colección de procesos en disco esperando ser cargados en memoria para ser ejecutados. Los programas del usuario pasan por distintos pasos antes de ejecutarse.
3
Vinculación de Instrucciones y Datos a Memoria Tiempo de compilación: si la dirección de memoria se conoce a priori, se puede generar código absoluto; se debe recompilar el código si cambia. Tiempo de carga: el compilador debe generar código reubicable. Tiempo de ejecución: la vinculación es demorada hasta la ejecución. Si el proceso puede ser movido durante su ejecución, se necesita hardware especial (p. ej. registro base y límite).
4
Etapas de un Programa del Usuario
5
Espacio de Direcciones Lógicas vs. Espacio de Direcciones Físicas EL concepto de espacio direcciones lógicas que se mapean a un espacio de direcciones físicas separadas es central para la administración de memoria. Dirección lógica – generada por la CPU; también conocida como dirección virtual. Dirección física – dirección utilizada por la unidad de memoria. Las direcciones lógicas y físicas son las mismas en la vinculación de tiempo de compilación y tiempo de carga; difieren en el esquema de tiempo de ejecución.
6
Unidad de Administración de Memoria( MMU ) Dispositivo de hardware que mapea direcciones virtuales a físicas. En la MMU, el valor del registro de re- ubicación es sumado a toda dirección generada por un proceso del usuario antes de ser enviada a memoria. El programa del usuario trabaja con direcciones lógicas; nunca ve las direcciones físicas reales.
7
Reubicación Dinámica Utilizando un Registro de Reubicación
8
Carga Dinámica La rutina no es cargada hasta que se invoca Mejor utilización del espacio de memoria; las rutinas que no se usan nunca se cargan. Útil cuando grandes cantidades de código se necesitan para manejar casos que ocurren infrecuentemente. No se requiere soporte especial del SO para implementar.
9
Enlace Dinámico El enlace se pospone hasta el tiempo de ejecución. Una pequeña pieza de código, stub, se usa para encontrar la rutina de librería apropiada. El stub se reemplaza a si mismo con la dirección de la rutina, y ejecuta la rutina. Los sistemas operativos necesitan verificar si la rutina está en la memoria del proceso. El enlace dinámico es particularmente útil para librerías.
10
Overlays Necesario cuando el proceso es más grande que la cantidad de memoria asignada a este. Mantiene en memoria las instrucciones y datos que son necesarios en determinado momento. Implementado por el usuario, no se necesita soporte del SO, el diseño de programas con overlays es complejo.
11
Overlays para un Ensamblador de 2 Pasadas
12
Swapping Un proceso puede ser sacado temporalmente de memoria a un dispositivo secundario, y luego ser traído a memoria para continuar la ejecución. Dispositivo secundario – discos rápidos suficientemente grandes para guardar las copias de imágenes de memoria de todos los usuarios; debe proveer acceso directo a dichas imágenes. Roll out, roll in – variante de swapping usada para planificadores por prioridad; los procesos de baja prioridad son desalojados de memoria para que procesos de mayor prioridad puedan ejecutar. Versiones modificas de swapping pueden encontrarse en varios sistemas, p. ej., UNIX, Linux, y Windows.
13
Esquema de Swapping
14
Asignación Continua La memoria principal generalmente está dividida en 2 particiones: SO residente, generalmente mantenido en memoria baja con el vector de interrupciones. Procesos del usuario mantenidos en memoria alta. Asignación con una sola partición Se utiliza un registro de reubicación para proteger los procesos de usuario entre si, y evitar que se modifique el código del SO. El registro de reubicación contiene el valor de la menor dirección física; el registro límite contiene el rango de direcciones lógicas – cada dirección lógica debe ser menor que el registro límite.
15
Soporte de Hardware para Registros de Reubicación y Límite
16
Asignación Continua (Cont.) Asignación con particiones múltiples Hueco – bloque de memoria disponible; huecos de distinto tamaño están desparramados por la memoria. Cuando un proceso llega, se le asigna un hueco lo suficientemente grande para contenerlo. Los SO mantienen información acerca de: a) particiones asignadas b) particiones libres (hueco) OS proceso 5 proceso 8 proceso 2 OS proceso 5 proceso 2 OS proceso 5 proceso 2 OS proceso 5 proceso 9 proceso 2 proceso 9 proceso 10
17
Problema de Asignación Dinámica Primer-ajuste: asigna el primer hueco que sea lo suficientemente grande. Mejor-ajuste: asigna el menor hueco que es suficientemente grande; debe inspeccionar la lista completa, a no ser que este ordenada por tamaño. Deja el menor espacio libre. Peor-ajuste: asigna el hueco más grande; también debe buscar en la lista. Deja el mayor espacio libre. Como satisfacer un pedido de tamaño n con una lista de huecos libres? Primer-ajuste y mejor-ajuste son mejores que peor-ajuste en términos de velocidad y utilización de espacio.
18
Fragmentación Fragmentación Externa – existe espacio para satisfacer un pedido pero no continuo. Fragmentación Interna – la memoria asignada es mayor que la pedida; esta diferencia es memoria interna de una partición, pero no usada. Reducción de fragmentación externa por compactación Mueve el contenido de memoria para ubicar toda la memoria libre junta en un gran bloque. La compactación es posible solo si la reubicación es dinámica, y en tiempo de ejecución. Problema de E/S Dejar trabajos en memoria mientras están efectuando E/S. Hacer E/S sólo en buffers del SO.
19
Compactación
20
Paginación El espacio de direcciones lógicas de un proceso puede no ser continuo; se le asigna a un proceso memoria física siempre que haya disponible. Divide la memoria física en bloques de tamaño fijo llamados marcos (frames, el tamaño es potencia de 2, entre 512 bytes y 8192 bytes). Divide la memoria lógica en bloques del mismo tamaño llamados páginas. Mantiene referencia de todos los marcos vacíos. Para ejecutar un programa de tamaño de n páginas, se necesita encontrar n marcos libres y cargar el programa. Se inicializa una tabla de páginas para traducir las direcciones lógicas a físicas. Fragmentación interna.
21
Esquema de Traducción de Direcciones Las direcciones generadas por la CPU se dividen en: Número de página (p) – usado como índice en una tabla de páginas que contiene la dirección base de cada página en la memoria física. Desplazamiento de página (d) – combinado con la dirección base para definir la dirección física enviada a la unidad de memoria.
22
Arquitectura de Traducción de Direcciones
23
Ejemplo de Paginación
25
Marcos Libres Antes de la asignación Después de la asignación
26
Implementación de la Tabla de Páginas La tabla es mantenida en memoria principal. Page-table base register (PTBR) apunta a la tabla de páginas. Page-table length register (PRLR) indica el tamaño de la tabla de páginas. En este esquema cada acceso a datos/instrucciones requiere 2 accesos a memoria. Uno para la tabla de páginas y otro para el dato/instrucción. El problema puede ser resuelto utilizando un cache de hardware especial de búsqueda rápida llamado memoria asociativa o translation look-aside buffers (TLBs)
27
Memoria Asociativa Memoria asociativa – búsqueda paralela Traducción de direcciones (P, D) Si P está en un registro asociativo, obtiene el número de marco. Si no, obtiene el número de marco de la tabla de memoria principal.
28
Hardware de Paginación con TLB
29
Tiempo de Acceso Efectivo Búsqueda Asociativa = unidades de tiempo Se asume que el tiempo de ciclo de memoria es 1 microsegundo. Tasa de aciertos – % de veces que un número de página se encuentra en registros asociativos; la tasa está asociada al número de registros asociativos. Tasa de acierto = Tiempo de acceso efectivo (EAT) EAT = (1 + ) + (2 + )(1 – ) = 2 + – (si y EAT=1.25, EAT=1.12)
30
Protección de Memoria Se implementa protección de memoria asociando un bit de protección a cada marco. Un bit valido-invalido es asociado a cada entrada de la tabla de páginas: “valido” indica que la página asociada está en el espacio lógico de direcciones del proceso, y entonces es una página válida. “invalido” indica que la página no está en el espacio de direcciones del proceso.
31
Bit de Valido (v) o Invalido (i) Bit en una Tabla de Páginas
32
Estructura de la Tabla de Páginas Paginación Jerárquica Tablas de Páginas Hasheadas Tablas de Páginas Invertidas
33
Tablas de Páginas Jerárquicas Separan el espacio de direcciones lógicas en múltiples tablas de páginas. Una técnica simple es una tabla de páginas de 2 niveles.
34
Ejemplo de Paginación de 2 Niveles Una dirección lógica (en una máquina de 32-bit con páginas de 4K) es dividida: un número de página es de 20 bits. el de desplazamiento es de 12 bits. Dado que la tabla de páginas es paginada, el número de página se divide en: un número de página de 10-bits. un desplazamiento de 10-bits. Entonces, una dirección lógica queda: número de páginadesplazamiento pipi p2p2 d 10 12
35
Esquema de Tabla de Página de 2 Niveles
36
Esquema de Traducción de Direcciones Esquema de traducción de direcciones para una arquitectura de 32 bits de paginación de 2 niveles.
37
Tabla de Páginas Hasheadas Común en espacios de direcciones mayor a 32 bits. El número de página virtual es hasheado en la tabla de páginas. Esta tabla de páginas contiene una lista de elementos hasheados en la misma ubicación. Los números de página virtuales son comparados en esta lista buscando por una que concuerde. Si se encuentra, se extrae el marco físico.
38
Tabla de Páginas Hasheada
39
Tabla de Páginas Invertidas Una entrada para cada página real de memoria. Una entrada consiste en la dirección virtual de la página almacenada, con información acerca del proceso que la posee. Minimiza la memoria que se necesita para guardar la tabla de páginas, pero incrementa el tiempo necesario para la búsqueda. Uso de una tabla hash para limitar la búsqueda a una entrada en la tabla de páginas.
40
Arquitectura de una Tabla de Páginas Invertidas
41
Páginas Compartidas Código compartido Una copia read-only (reentrante) de código compartido entre procesos (p. ej., editores de texto, compiladores, sistemas de ventanas). El código compartido debe aparecer el la misma ubicación en el espacio de direcciones lógicas de todos los procesos. Código y datos compartidos Cada proceso mantiene una copia separada de código y datos. Las páginas del código y datos privados pueden estar en cualquier lugar del espacio de direcciones lógico.
42
Ejemplo de Páginas Compartidas
43
Segmentación Esquema de manejo de memoria que soporta la visión del usuario de la memoria. Un programa es una colección de segmentos. Un segmento es una unidad lógica como: program principal, procedimiento, función, variables locales, variables globales, stack, tabla de símbolos
44
Vista del Usuario de un Programa
45
Vista Lógica de la Segmentación 1 3 2 4 1 4 2 3 espacio de usuarioespacio de memoria física
46
Arquitectura de Segmentación Las direcciones lógicas son formadas por una tupla:, Tabla de Segmentos – mapea direcciones físicas bi- dimensionales; cada entrada de la tabla tiene: base – contiene la dirección física de comienzo donde residen los segmentos. límite – especifica la longitud del segmento. Segment-table base register (STBR) apunta a la ubicación de la tabla de segmentos en memoria. Segment-table length register (STLR) indica el número de segmentos usados por un programa; el número de segmento s es válido si s < STLR.
47
Arquitectura de Segmentación (Cont.) Reubicación. dinámica por tabla de segmento Compartimiento. segmentos compratidos mismo número de segmento Ubicación. primer ajuste/mejor ajuste fragmentación externa
48
Arquitectura de Segmentación (Cont.) Protección. Con cada entrada en la tabla de segmentos se asocia: bit de validación = 0 segmento inválido permisos de lectura/escritura/ejecución Bits de protección asociados con los segmentos; el compartimiento de código sucede a nivel de segmento. Dado que los segmentos tienen distinto tamaño, es un problema de asignación dinámica.
49
Hardware de Segmentación
50
Ejemplo de Segmentación
51
Segmentos Compartidos
52
Segmentación con Paginación – MULTICS El sistema MULTICS soluciona el problema de fragmentación externa y altos tiempos de búsqueda con paginación de segmentos. La solución difiere de la segmentación pura porque la entrada en la tabla de segmentos no contiene la dirección base del segmento, sino la dirección base de la tabla de páginas para el segmento.
53
Esquema de Traducción de Direcciones en MULTICS
54
Segmentación con Paginación – Intel 386 Como se muestra en el siguiente diagrama, el Intel 386 usa segmentación con paginación para el manejo de memoria con con un esquema de paginación de 2 niveles.
55
Traducción de Direcciones en el Intel 30386
Presentaciones similares
© 2024 SlidePlayer.es Inc.
All rights reserved.