Arquitectura de Computadores El subsistema de Memoria Departament d’Informàtica de Sistemes i Computadors E.P.S.Alcoi Arquitectura de Computadores y Sistemas Operativos 1 Bloque Temático II: Arquitectura de Computadores ÖTema 3: Introducción a la arquitectura de un computador ÖTema 4: Procesadores segmentados ÖTema 5: El subsistema de memoria ÖTema 6: El subsistema de Entrada/Salida ÖTema 7: Computadores Superescalares ÖTema 8: Multiprocesadores Arquitectura de Computadores y Sistemas Operativos Tema 5: Subsistema de Memoria 2 1 Arquitectura de Computadores Gestión de la Memoria ÖGestión de la memoria ÖMemoria Virtual Arquitectura de Computadores y Sistemas Operativos 3 Gestión de la Memoria Ö Subdivisión de la memoria para hacer sitio a varios procesos. Ö Hace falta repartir eficientemente la memoria para introducir tantos procesos como sea posible. Arquitectura de Computadores y Sistemas Operativos Tema 5: Subsistema de Memoria 4 2 Arquitectura de Computadores Requisitos de la gestión de memoria Ö Reubicación: • El programador no conoce qué otros programas residirán en la memoria en el momento de la ejecución. • Mientras que se está ejecutando el programa, puede que se descargue en el disco y que vuelva a la memoria principal, pero en una ubicación distinta a la anterior (reubicación). • Se deben traducir las referencias a la memoria encontradas en el código del programa a las direcciones físicas reales. Arquitectura de Computadores y Sistemas Operativos Información de control del proceso Punto de entrada al programa 5 Bloque de control de proceso Programa Instrucción de bifurcación Direcciones ascendentes Referencia de datos Datos Cima actual de pila Pila Figura 7.1. Requisitos de dirección para un proceso. Arquitectura de Computadores y Sistemas Operativos Tema 5: Subsistema de Memoria 6 3 Arquitectura de Computadores Requisitos de la gestión de memoria Ö Protección: • El código de un proceso no puede hacer referencia a posiciones de memoria de otros procesos sin permiso. • Es imposible comprobar las direcciones absolutas de los programas, puesto que se desconoce la ubicación de un programa en la memoria principal. • Debe comprobarse durante la ejecución: # El sistema operativo no puede anticiparse a todas las referencias a la memoria que hará un programa. Arquitectura de Computadores y Sistemas Operativos 7 Requisitos de la gestión de memoria Ö Compartimiento: • Permite el acceso de varios procesos a la misma zona de la memoria principal. • Es mejor permitir a cada proceso (persona) que acceda a la misma copia del programa, en lugar de tener cada uno su propia copia aparte. Arquitectura de Computadores y Sistemas Operativos Tema 5: Subsistema de Memoria 8 4 Arquitectura de Computadores Requisitos de la gestión de memoria Ö Organización lógica: • La mayoría de los programas se organizan en módulos. • Los módulos pueden escribirse y compilarse independientemente. • Pueden otorgarse distintos grados de protección (sólo lectura, sólo ejecución) a los módulos. • Compartir módulos. Arquitectura de Computadores y Sistemas Operativos 9 Requisitos de la gestión de memoria Ö Organización física: • La memoria disponible para un programa y sus datos puede ser insuficiente: # La superposición permite que varios módulos sean asignados a la misma región de memoria. • El programador no conoce cuánto espacio habrá disponible. Arquitectura de Computadores y Sistemas Operativos Tema 5: Subsistema de Memoria 10 5 Arquitectura de Computadores Particiones estáticas Ö Particiones de igual tamaño: • Cualquier proceso cuyo tamaño sea menor o igual que el tamaño de la partición puede cargarse en cualquier partición libre. • Si todas las particiones están ocupadas, el sistema operativo puede sacar un proceso de una partición. • Un programa puede que no se ajuste a una partición. El programador debe diseñar el programa mediante superposiciones. Arquitectura de Computadores y Sistemas Operativos 11 Particiones estáticas Ö El uso de la memoria principal es ineficiente. Cualquier programa, sin importar lo pequeño que sea, ocupará una partición completa. Este fenómeno se denomina fragmentación interna. Arquitectura de Computadores y Sistemas Operativos Tema 5: Subsistema de Memoria 12 6 Arquitectura de Computadores Sistema operativo 8M 8M Sistema operativo 8M 2M 4M 6M 8M 8M 8M 8M 8M 12 M 8M 8M 16 M 8M (a) Particiones de igual tamaño (a) Particiones de distinto tamaño Figura 7.2. Ejemplo de partición estática en una memoria de 64Mb. Arquitectura de Computadores y Sistemas Operativos 13 Algoritmo de ubicación con particiones Ö Particiones de igual tamaño: • Puesto que todas las particiones son de igual tamaño, no importa la partición que se use. Ö Particiones de distintos tamaños: • Pueden asignar cada proceso a la partición más pequeña en la que quepa. • Hace falta una cola para cada partición. • Los procesos están asignados de forma que se minimiza la memoria desaprovechada dentro de cada partición (se minimiza la fragmentación interna) Arquitectura de Computadores y Sistemas Operativos Tema 5: Subsistema de Memoria 14 7 Arquitectura de Computadores Sistema operativo Sistema operativo Procesos nuevos Procesos nuevos (a) Una cola de procesos por partición (b) Cola única de procesos Figura 7.3. Asignación de memoria en partición estática. Arquitectura de Computadores y Sistemas Operativos 15 Particiones dinámicas Ö Las particiones son variables en número y longitud. Ö Al proceso se le asigna exactamente tanta memoria como necesite. Ö Finalmente, hay varios huecos en la memoria. Este fenómeno se denomina fragmentación externa. Ö Se debe usar la compactación para desplazar los procesos que estén contiguos, de forma que toda la memoria libre quede junta en un bloque. Arquitectura de Computadores y Sistemas Operativos Tema 5: Subsistema de Memoria 16 8 Arquitectura de Computadores Sistema operativo 8M Sistema operativo Sistema operativo Proceso 1 20M 56M Sistema operativo Proceso 1 20M Proceso 1 20M Proceso 2 14M Proceso 2 14M Proceso 3 18M 36M 22M 4M (b) (a) (c) (d) Figura 7.4. Efectos de la partición dinámica. Arquitectura de Computadores y Sistemas Operativos Sistema operativo Proceso 1 Sistema operativo 20M Proceso 1 17 Sistema operativo Sistema operativo Proceso 2 20M 14M 20M 6M Proceso 4 8M Proceso 4 8M Proceso 4 14M 6M 6M Proceso 3 18M Proceso 3 Proceso 3 4M 4M (e) 18M (f) 18M 6M Proceso 3 18M 4M 4M (g) 8M (h) Figura 7.4. Efectos de la partición dinámica. Arquitectura de Computadores y Sistemas Operativos Tema 5: Subsistema de Memoria 18 9 Arquitectura de Computadores Algoritmo de ubicación con particiones dinámicas Ö El sistema operativo debe decidir qué bloque libre se tiene que asignar al proceso. Ö Algoritmo del mejor ajuste (best-fit): • Elige el bloque de tamaño más próximo al solicitado. • Proporciona en general los peores resultados. • Puesto que este algoritmo busca el hueco más pequeño para el proceso, garantiza que el fragmento que se deja es lo más pequeño posible y, por lo tanto, se debe compactar más frecuentemente. Arquitectura de Computadores y Sistemas Operativos 19 Algoritmo de ubicación con particiones dinámicas Ö Algoritmo del primer ajuste (first-fit): • Es más rápido. • Normalmente habrá varios procesos cargados en el extremo inicial de la memoria, que será necesario recorrer cuando se intente encontrar un bloque libre (el puntero en memoria queda en la posición en la que se ha ubicado el último bloque en memoria por lo que, en el algoritmo first-fit, hay que volver a recorrer la memoria desde el inicio). Arquitectura de Computadores y Sistemas Operativos Tema 5: Subsistema de Memoria 20 10 Arquitectura de Computadores Algoritmo de ubicación con particiones dinámicas Ö Algoritmo del siguiente ajuste (next-fit): • Lleva frecuentemente a la asignación de un bloque de memoria de la última ubicación, donde se encuentra el bloque más grande. • El bloque de memoria más grande se divide en fragmentos pequeños. • Hará falta la compactación para obtener un bloque de memoria grande al final del espacio de memoria. Arquitectura de Computadores y Sistemas Operativos 21 8M 12M 8M Primer ajuste 12M 22M 6M Mejor ajuste Último bloque asignado (14K) 18M 2M 8M 8M 6M 6M Bloque asignado 14M Bloque libre 14M Siguiente ajuste 36M 20M (a) Antes (b) Después Figura 7.5. Ejemplo de una configuración de memoria antes y después de asignar un bloque de 16 Mbytes. Arquitectura de Computadores y Sistemas Operativos Tema 5: Subsistema de Memoria 22 11 Arquitectura de Computadores Sistema de colegas Ö El espacio entero disponible para la asignación se trata como un solo bloque de tamaño 2U Ö Si se hace una solicitud de tamaño s tal que 2U-1 < s <= 2U, entonces el bloque entero se asigna: • En otro caso, el bloque se divide en dos colegas de igual tamaño. • Este proceso continúa hasta que el bloque más pequeño sea mayor o igual que s. Arquitectura de Computadores y Sistemas Operativos 23 1 bloque de 1 megabyte Solicitud de 100K Solicitud de 240K Solicitud de 64K Solicitud de 256K Liberación de B Liberación de A Solicitud de 75K Liberación de C Liberación de E Liberación de D Figura 7.6. Ejemplo del sistema de colegas. Arquitectura de Computadores y Sistemas Operativos Tema 5: Subsistema de Memoria 24 12 Arquitectura de Computadores Figura 7.7. Representación en árbol del sistema de colegas. Arquitectura de Computadores y Sistemas Operativos 25 Reubicación Ö Cuando el proceso se carga en la memoria, se determina la ubicación real (absoluta) de la memoria. Ö Un proceso puede ocupar diferentes particiones, lo que significa diferentes posiciones absolutas de la memoria durante su ejecución (a partir de la carga). Ö La compactación también hará que un programa ocupe una partición distinta, lo que significa que las ubicaciones absolutas de la memoria cambien. Arquitectura de Computadores y Sistemas Operativos Tema 5: Subsistema de Memoria 26 13 Arquitectura de Computadores Direcciones Ö Dirección lógica: • Es una referencia a una posición de memoria independiente de la asignación actual de datos a la memoria. • Se debe hacer una traducción a una dirección física. Ö Dirección relativa: • La dirección se expresa como una posición relativa a algún punto conocido. Ö Dirección física: • La dirección absoluta o la posición real en la memoria principal. Arquitectura de Computadores y Sistemas Operativos 27 Dirección relativa Bloque de control de proceso Registro base Programa Sumador Registro límite Comparador Interrupción al sistema operativo Dirección absoluta Datos Pila Imagen de un proceso en la memoria principal Figura 7.8. Soporte de hardware para la reubicación. Arquitectura de Computadores y Sistemas Operativos Tema 5: Subsistema de Memoria 28 14 Arquitectura de Computadores Registros utilizados durante la ejecución Ö Registro base: • Se carga con la dirección en la memoria principal del proceso. Ö Registro límite: • Indica la posición final del programa. Ö Estos valores deben asignarse cuando se carga el programa y cuando se carga el proceso. Arquitectura de Computadores y Sistemas Operativos 29 Registros utilizados durante la ejecución Ö Se añade el valor del registro base a la dirección relativa para obtener una dirección absoluta. Ö La dirección obtenida se compara con el valor del registro límite. Ö Si la dirección no está dentro de los límites, se generará una interrupción en el sistema operativo. Arquitectura de Computadores y Sistemas Operativos Tema 5: Subsistema de Memoria 30 15 Arquitectura de Computadores Paginación Ö La memoria principal se encuentra dividida en trozos iguales de tamaño fijo y cada proceso en pequeños trozos de tamaño fijo. Ö Los trozos del proceso se denominan páginas y los trozos libres de memoria se denominan marcos. Ö El sistema operativo mantiene una tabla de páginas para cada proceso: • Muestra la posición del marco de cada página del proceso. • La dirección de la memoria consta de un número de página y de un desplazamiento dentro de la página. Arquitectura de Computadores y Sistemas Operativos Número de marco 31 Memoria principal Memoria principal Memoria principal (a) Quince marcos libres (b) Carga del proceso A (c) Carga del proceso B Figura 7.9. Asignación de páginas de procesos a marcos libres. Arquitectura de Computadores y Sistemas Operativos Tema 5: Subsistema de Memoria 32 16 Arquitectura de Computadores Memoria principal Memoria principal Memoria principal (d) Carga del proceso C (e) Descarga del proceso B (f) Carga del proceso D Figura 7.9. Asignación de páginas de procesos a marcos libres. Arquitectura de Computadores y Sistemas Operativos 33 Tablas de páginas Tabla de páginas del proceso A Tabla de páginas del proceso B Tabla de páginas del proceso C Lista de marcos libres Tabla de páginas del proceso D Figura 7.10. Estructuras de datos para el ejemplo de la Figura 7.9 en el instante de tiempo (f). Arquitectura de Computadores y Sistemas Operativos Tema 5: Subsistema de Memoria 34 17 Arquitectura de Computadores Segmentación Ö No es necesario que todos los segmentos de todos los programas tengan la misma longitud. Ö Existe una longitud máxima de segmento. Ö Un dirección lógica segmentada consta de dos partes, un número de segmento y un desplazamiento. Ö Como consecuencia del empleo de segmentos de distinto tamaño, la segmentación resulta similar a la partición dinámica. Arquitectura de Computadores y Sistemas Operativos 35 Gestión de la Memoria ÖGestión de la memoria ÖMemoria Virtual Arquitectura de Computadores y Sistemas Operativos Tema 5: Subsistema de Memoria 36 18 Arquitectura de Computadores Estructuras de hardware y de control Ö Todas las referencias a la memoria se traducirán dinámicamente a direcciones físicas durante la ejecución: • Un proceso puede cargarse y descargarse de la memoria principal de tal forma que ocupe regiones diferentes. Ö Un proceso puede dividirse en varias partes y no es necesario que estas partes se encuentren contiguas en la memoria principal durante la ejecución: • No será necesario que todas las páginas o todos los segmentos de un proceso estén en la memoria durante la ejecución. Arquitectura de Computadores y Sistemas Operativos 37 Ejecución de un programa Ö El sistema operativo comienza trayendo sólo unos pocos fragmentos del programa. Ö El conjunto residente es la parte de un proceso que está realmente en la memoria principal. Ö Si el procesador encuentra una dirección lógica que no está en la memoria principal, genera una interrupción que indica un fallo de acceso a la memoria. Ö El sistema operativo pone al proceso interrumpido en estado Bloqueado. Arquitectura de Computadores y Sistemas Operativos Tema 5: Subsistema de Memoria 38 19 Arquitectura de Computadores Ejecución de un programa Ö El sistema operativo necesita traer a la memoria principal el fragmento del proceso que contiene la dirección lógica que provocó el fallo de acceso: • El sistema operativo emite una solicitud de Lectura de E/S al disco. • El sistema operativo puede expedir otro proceso para que se ejecute mientras realiza la operación de E/S. • Una vez que el fragmento deseado se ha traído a la memoria principal y se ha emitido la interrupción de E/S, se devuelve el control al sistema operativo, que coloca el proceso afectado en el estado de Listo. Arquitectura de Computadores y Sistemas Operativos 39 Ventajas de dividir un proceso ÖSe pueden mantener más procesos en la memoria principal: • Se cargan sólo algunos fragmentos de un proceso particular. • Con tantos procesos en la memoria principal es muy probable que uno de los procesos esté en estado Listo en un instante determinado. ÖEs posible que un proceso sea más grande que toda la memoria principal. Arquitectura de Computadores y Sistemas Operativos Tema 5: Subsistema de Memoria 40 20 Arquitectura de Computadores Tipos de memoria ÖMemoria real: • Memoria principal. ÖMemoria virtual: • Memoria situada en el disco. • Permite una multiprogramación muy efectiva y releva al usuario de las rígidas e innecesarias restricciones de la memoria principal. Arquitectura de Computadores y Sistemas Operativos 41 Hiperpaginación ÖEl sistema operativo expulsa un fragmento de un proceso justo antes de ser usado. ÖEl procesador consume más tiempo intercambiando fragmentos que ejecutando instrucciones de usuario. Arquitectura de Computadores y Sistemas Operativos Tema 5: Subsistema de Memoria 42 21 Arquitectura de Computadores Principio de cercanía Ö Las referencias a los datos y al programa dentro de un proceso tienden a agruparse. Ö Durante cortos periodos de tiempo se necesitarán sólo unos pocos fragmentos de un proceso. Ö Sería posible hacer predicciones inteligentes sobre qué fragmentos de un proceso se necesitarán en un futuro cercano. Ö El principio de cercanía sugiere que los esquemas de memoria virtual pueden funcionar eficazmente. Arquitectura de Computadores y Sistemas Operativos 43 Soportes de la memoria virtual ÖTiene que existir un soporte de hardware para la paginación y la segmentación. ÖEl sistema operativo debe incluir un software para gestionar el movimiento de páginas o segmentos entre memoria secundaria y memoria principal. Arquitectura de Computadores y Sistemas Operativos Tema 5: Subsistema de Memoria 44 22 Arquitectura de Computadores Paginación ÖCada proceso tiene su propia tabla de página. ÖCada entrada de la tabla de páginas contiene el número de marco de la página correspondiente en la memoria principal. ÖSe necesita un bit para indicar si la página correspondiente está presente en la memoria principal o no lo está. Arquitectura de Computadores y Sistemas Operativos 45 El bit de modificación en la tabla de páginas ÖOtro bit de control necesario en la entrada de la tabla de páginas es el bit de modificación para indicar si el contenido de la página se ha alterado desde que la página se cargó en la memoria principal. ÖSi no ha habido cambios, no es necesario escribir la página cuando sea sustituida en el marco que ocupa actualmente. Arquitectura de Computadores y Sistemas Operativos Tema 5: Subsistema de Memoria 46 23 Arquitectura de Computadores Entradas de la tabla de páginas Dirección virtual Número de página Desplazamiento Entrada de la tabla de páginas PP M M Otros Otrosbits bitsde decontrol control Número Númerode demarco marco (a) Sólo paginación Figura 8.2. Formatos típicos de gestión de memoria. Arquitectura de Computadores y Sistemas Operativos 47 Dirección virtual Despla- Despla- N.º marco zamiento N.º pág. zamiento Registro Puntero a tabla de páginas N.º página Tabla de páginas Desplazamiento Marco de página N.º marco Programa Mecanismo de paginación Memoria principal Figura 8.3. Traducción de direcciones en un sistema de paginación. Arquitectura de Computadores y Sistemas Operativos Tema 5: Subsistema de Memoria 48 24 Arquitectura de Computadores Tablas de páginas ÖLa tabla de páginas completa puede ocupar una cantidad enorme de memoria principal. ÖPara solucionar este problema, las tablas de páginas también se almacenan en la memoria virtual. ÖCuando un proceso se está ejecutando, al menos una parte de su tabla de páginas se encuentra en la memoria principal. Arquitectura de Computadores y Sistemas Operativos 49 Buffer de traducción adelantada Ö Cada referencia a la memoria virtual puede generar dos accesos a la memoria: • Uno para obtener la entrada de la tabla de páginas correspondiente. • Otro para obtener el dato deseado. Ö Para solucionar este problema, los esquemas de memoria virtual hacen uso de un cache especial para las entradas de la tabla de páginas: • Se trata de la buffer de traducción adelantada (TLB, Translation Lookaside Buffer). Arquitectura de Computadores y Sistemas Operativos Tema 5: Subsistema de Memoria 50 25 Arquitectura de Computadores Buffer de traducción adelantada ÖContiene aquellas entradas de la tabla de páginas usadas hace menos tiempo. ÖFunciona del mismo modo que una memoria cache. Arquitectura de Computadores y Sistemas Operativos 51 Buffer de traducción adelantada Ö Dada una dirección virtual, el procesador examinará primero la TLB. Ö Si la entrada de la tabla de páginas buscada está presente (un “acierto en la TLB”), se obtiene el número de marco y se forma la dirección real. Ö Si la entrada de la tabla de páginas no se encuentra (un “fallo en la TLB”), el procesador emplea el número de página como índice para buscar en la tabla de páginas del proceso y examinar la entrada correspondiente de la tabla de páginas. Arquitectura de Computadores y Sistemas Operativos Tema 5: Subsistema de Memoria 52 26 Arquitectura de Computadores Buffer de traducción adelantada ÖPrimero comprueba que la página esté en la memoria principal: • Si no está, se produce un fallo en el acceso a la memoria, llamado fallo de página. ÖEl procesador actualiza la TLB para incluir esta nueva entrada de la tabla de páginas. Arquitectura de Computadores y Sistemas Operativos 53 Comienzo La CPU comprueba la TLB Volver a la instrucción que falló ¿Está la entrada de la tabla de página en la TLB? Sí No Acceder a la tabla de páginas Rutina de gestión de fallo de página El SO ordena a la CPU leer la página del disco No ¿Está la página en memoria principal? Sí La CPU activa el hardware de E/S Actualizar TLB La página se transfiere del disco a memoria principal ¿Memoria llena? No La CPU genera La CPU genera la dirección física la dirección física Sí Actualizar las tablas de páginas Actualizar las tablas de páginas Figura 8.8. Funcionamiento de la paginación con buffer de traducción adelantada (TLB) [FUTH87]. Arquitectura de Computadores y Sistemas Operativos Tema 5: Subsistema de Memoria 54 27 Arquitectura de Computadores Memoria secundaria Memoria principal Dirección virtual DesplaDesplaN.º Nº.pág. Pág. zamiento zamiento Buffer de traducción adelantada Acierto de TLB Desplazamiento Cargar página Tabla de páginas Fallo de TLB DesplaN.º marco zamiento Dirección real Fallo de página Figura 8.7. Uso de un Buffer de Traducción Adelantada. Arquitectura de Computadores y Sistemas Operativos 55 Tamaño de página Ö Cuanto menor sea el tamaño de página, menor será la cantidad de fragmentación interna. Ö Cuanto menor sea la página, mayor será el número de páginas que se necesitan por proceso. Ö Un número mayor de páginas por proceso significa que las tablas de páginas serán mayores. Ö Esto puede significar que una gran parte de las tablas de páginas de los procesos activos deben estar en la memoria virtual. Ö La memoria secundaria está diseñada para transferir eficazmente los bloques de datos de mayor tamaño, de manera que es propicia para tamaños de página mayores. Arquitectura de Computadores y Sistemas Operativos Tema 5: Subsistema de Memoria 56 28 Arquitectura de Computadores Tamaño de página Ö Si el tamaño de página es muy pequeño, estarán disponibles en la memoria principal un gran número de páginas para cada proceso. Ö Después de un tiempo, todas las páginas de la memoria contendrán parte de las referencias más recientes del proceso. La tasa de fallos de página será menor. Ö Cuando se incrementa el tamaño de la página, cada página individual contendrán posiciones cada vez más distantes de cualquier referencia reciente. La tasa de fallos será mayor. 57 Tasa de fallos de página Tasa de fallos de página Arquitectura de Computadores y Sistemas Operativos (a) Tamaño de página (b) Número de marcos de página asignados P = Tamaño del proceso completo W = Tamaño del conjunto de trabajo N = Número total de páginas del proceso Figura 8.11. Comportamiento típico de la paginación en un programa. Arquitectura de Computadores y Sistemas Operativos Tema 5: Subsistema de Memoria 58 29 Arquitectura de Computadores Tamaño de página ÖMúltiples tamaños de página proporcionan la flexibilidad necesaria para usar una TLB eficazmente. ÖLas páginas grandes se pueden utilizar para traducir instrucciones de programa. ÖLas páginas de pequeño tamaño se pueden emplear para las pilas de los hilos. ÖLa mayoría de los sistemas operativos favorecen el uso de un solo tipo de página. Arquitectura de Computadores y Sistemas Operativos 59 Ejemplos de tamaños de páginas Tabla 8.2. Ejemplos de tamaños de páginas. Computadora Atlas 512 palabras de 48 bits Honeywell-Multics 1.024 palabras de 36 bits IBM 370/XA y 370/ESA 4 Kbytes Familia VAX 512 bytes IBM AS/400 512 bytes DEC Alpha 8 Kbytes MIPS de 4 Kbytes a 16 Mbytes UltraSPARC de 8 Kbytes a 4 Mbytes Pentium de 4 Kbytes a 4 Mbytes Power Pc 4 Kbytes Arquitectura de Computadores y Sistemas Operativos Tema 5: Subsistema de Memoria Tamaño de página 60 30 Arquitectura de Computadores Segmentación ÖLos segmentos pueden ser de distintos tamaños, incluso de forma dinámica. ÖSimplifica la gestión de estructuras de datos crecientes. ÖPermite modificar y recopilar los programas independientemente. ÖSe presta a la compartición entre procesos. ÖSe presta a la protección. Arquitectura de Computadores y Sistemas Operativos 61 Tablas de segmentos Ö Segmento correspondiente de la memoria principal. Ö Cada entrada de la tabla de segmentos contiene la longitud del segmento. Ö Se necesita un bit para indicar si el segmento correspondiente está presente en la memoria principal. Ö Otro bit de control necesario es un bit de modificación que indique si el contenido del segmento correspondiente ha sido modificado desde que se cargó por última vez en la memoria principal. Arquitectura de Computadores y Sistemas Operativos Tema 5: Subsistema de Memoria 62 31 Arquitectura de Computadores Entradas de las tablas de segmentos Dirección virtual Número de segmento Desplazamiento Entrada del segmento de tabla P M Otros bits de control Longitud Base de segmento (b) Sólo segmentación Figura 8.2. Formatos típicos de gestión de memoria. Arquitectura de Computadores y Sistemas Operativos 63 Paginación y segmentación combinadas Ö La paginación es transparente al programador. Ö La paginación elimina la fragmentación externa. Ö La segmentación es visible para el programador. Ö La segmentación permite gestionar estructuras de datos que pueden crecer, la modularidad y el soporte de la compartición y la protección. Ö Cada segmento se divide en varias páginas de tamaño fijo. Arquitectura de Computadores y Sistemas Operativos Tema 5: Subsistema de Memoria 64 32 Arquitectura de Computadores Paginación y segmentación combinadas Dirección virtual Nº. segmento Número Número de de segmento segmento DesplaDesplazamiento zamiento Número Número de de página página Entrada de la tabla de segmentos Otros Otros bits bits de de control control Longitud Longitud Base Base de de segmento segmento Entrada de la tabla de páginas PP M M Otros Otros bits bits de de control control P = Bit de presencia M = Bit de modificación Número Número de de marco marco (c) Segmentación y paginación combinadas Figura 8.2. Formatos típicos de gestión de memoria. Arquitectura de Computadores y Sistemas Operativos Dirección 65 Memoria principal Distribuidor Ningún acceso permitido Proceso A Instrucción de salto (no permitida) Proceso B Referencia a datos (permitida) Proceso C Referencia a datos (no permitida) Figura 8.14. Relaciones de protección entre segmentos. Arquitectura de Computadores y Sistemas Operativos Tema 5: Subsistema de Memoria 66 33 Arquitectura de Computadores Políticas de lectura Ö Política de lectura: • Está relacionada con la decisión de cuándo se debe cargar una página en la memoria principal. • Con la paginación por demanda, se trae una página a la memoria principal sólo cuando se hace referencia a una posición en dicha página: # Cuando un proceso se ejecute por primera vez, se producirán muchos fallos de página. • Con la paginación previa, se cargan más páginas de las necesarias: # Es más eficiente traer a la memoria un número de páginas contiguas. Arquitectura de Computadores y Sistemas Operativos 67 Políticas de reemplazo ÖPolítica de ubicación: • Qué página se va a reemplazar. • La página que se va a reemplazar tiene que ser la que tenga una menor posibilidad de ser referenciada en un futuro cercano. • La mayoría de las políticas intentan predecir el comportamiento futuro en función del comportamiento pasado. Arquitectura de Computadores y Sistemas Operativos Tema 5: Subsistema de Memoria 68 34 Arquitectura de Computadores Políticas de reemplazo ÖBloqueo de marcos: • Cuando un marco está bloqueado, la página cargada en ese marco no puede ser reemplazada. • La mayoría del núcleo del sistema operativo está en marcos bloqueados. • Estructuras de control. • Buffers de E/S. • El bloqueo se consigue asociando un bit de bloqueo a cada marco. Arquitectura de Computadores y Sistemas Operativos 69 Algoritmos básicos de reemplazo ÖPolítica óptima: • Selecciona para reemplazar la página que tiene que esperar una mayor cantidad de tiempo hasta que se produzca la referencia siguiente. • Es imposible de implementar porque requiere que el sistema operativo tenga un conocimiento exacto de los sucesos futuros. Arquitectura de Computadores y Sistemas Operativos Tema 5: Subsistema de Memoria 70 35 Arquitectura de Computadores Algoritmos básicos de reemplazo ÖPolítica de la usada menos recientemente (LRU): • Reemplaza la página de memoria que no ha sido referenciada desde hace más tiempo. • Debido al principio de cercanía, ésta sería la página con menor probabilidad de ser referenciada en un futuro cercano. • Una solución sería etiquetar cada página con el momento de su última referencia. Arquitectura de Computadores y Sistemas Operativos 71 Algoritmos básicos de reemplazo Ö Política de primera en entrar primera en salir (FIFO): • Trata los marcos asignados a un proceso como un buffer circular. • Las páginas se suprimen de la memoria según la técnica de turno rotatorio (round-robin). • Es una de las políticas de reemplazo más sencillas de implementar. • Se reemplaza la página que ha estado más tiempo en la memoria. • Estas páginas pueden necesitarse de nuevo y en un plazo de tiempo corto. Arquitectura de Computadores y Sistemas Operativos Tema 5: Subsistema de Memoria 72 36 Arquitectura de Computadores Algoritmos básicos de reemplazo Ö Política del reloj: • Requiere asociar un bit adicional a cada marco, denominado bit de uso. • Cuando se carga una página por primera vez en un marco de memoria, el bit de uso de dicho marco se pone a cero. • Cuando se hace referencia a la página posteriormente, el bit de uso se pone a 1. • Cuando llega el momento de reemplazar una página, el primer marco encontrado con el bit de uso a 0 es reemplazado. • Durante la búsqueda para realizar reemplazos cada bit de uso a 1 se cambia a 0. Arquitectura de Computadores y Sistemas Operativos 73 Primer marco en el buffer circular de marcos que son candidatos para el reemplazo Página 9 uso = 1 Página 19 uso = 1 Página 1 uso = 1 Puntero al siguiente marco Página 222 uso = 0 Página 45 uso = 1 Página 191 uso = 1 Página 556 uso = 0 Página 33 uso = 1 Página 67 uso = 1 Página 13 uso = 0 (a) Estado del buffer justo antes del reemplazo de página Figura 8.16. Ejemplo de funcionamiento de la política del reloj. Arquitectura de Computadores y Sistemas Operativos Tema 5: Subsistema de Memoria 74 37 Arquitectura de Computadores Página 9 uso = 1 Página 19 uso = 1 Página 1 uso = 0 Página 45 uso = 0 Página 191 uso = 0 Página 222 uso = 0 Página 727 uso = 0 Página 33 uso = 1 Página 67 uso = 1 Página 13 uso = 0 (b) Estado del buffer justo después del siguiente reemplazo de página Figura 8.16. Ejemplo de funcionamiento de la política del reloj. Arquitectura de Computadores y Sistemas Operativos 75 Algoritmos básicos de reemplazo ÖAlmacenamiento intermedio de páginas: • La pista de la página reemplazada se asigna a una de las dos listas siguientes: # La lista de páginas libres, si la página no ha sido modificada. # La lista de páginas modificadas, si lo ha sido. Arquitectura de Computadores y Sistemas Operativos Tema 5: Subsistema de Memoria 76 38 Arquitectura de Computadores Tamaño del conjunto residente ÖAsignación fija: • Otorga a cada proceso un número fijo de páginas en las que ejecutar. • Cada vez que se produce un fallo de página en la ejecución de un proceso, se debe reemplazar una de las páginas de dicho proceso. ÖAsignación variable: • Permite que el número de marcos asignados a un proceso cambie a lo largo de su vida. Arquitectura de Computadores y Sistemas Operativos 77 Asignación variable y alcance global Ö Es la combinación más sencilla de implementar. Ö Ha sido adoptada por un buen número de sistemas operativos. Ö Normalmente el sistema operativo mantiene una lista de marcos libres. Ö Cuando se produce un fallo de página, se añade un marco libre al conjunto residente del proceso. Ö Cuando no hay marcos libres, el sistema operativo debe elegir una página que esté en la memoria para reemplazar. Arquitectura de Computadores y Sistemas Operativos Tema 5: Subsistema de Memoria 78 39 Arquitectura de Computadores Asignación variable y alcance local Ö Cuando se carga un nuevo proceso en la memoria, se le asigna cierto número de marcos en función del tipo de aplicación, las necesidades del programa u otros criterios. Ö Cuando se produce un fallo de página, se selecciona la página a reemplazar de entre las del conjunto residente del proceso que sufre el fallo. Ö Se vuelve a evaluar la asignación de vez en cuando. Arquitectura de Computadores y Sistemas Operativos 79 Políticas de vaciado ÖVaciado por demanda: • Una página se escribirá en la memoria secundaria sólo cuando haya sido elegida para reemplazarse. ÖVaciado previo: • Escribe las páginas modificadas por lotes. Arquitectura de Computadores y Sistemas Operativos Tema 5: Subsistema de Memoria 80 40 Arquitectura de Computadores Políticas de vaciado ÖLa mejor solución es incorporar almacenamiento intermedio de páginas: • Las páginas reemplazadas pueden situarse en dos listas: # Modificadas y no modificadas. • Las páginas de la lista de modificadas pueden escribirse periódicamente por lotes. • Una página de la lista de no modificadas pueden reclamarse, si se le hace de nuevo referencia o perderse, cuando se asigna su marco a otra página. Arquitectura de Computadores y Sistemas Operativos 81 Control de carga ÖDetermina el número de procesos que pueden estar en la memoria principal. ÖCuando hay pocos procesos residentes en la memoria, habrá muchas ocasiones en las que todos los procesos estén bloqueados y se gastará mucho tiempo en el intercambio. ÖSi hay demasiados procesos residentes, el resultado será la hiperpaginación. Arquitectura de Computadores y Sistemas Operativos Tema 5: Subsistema de Memoria 82 41 Arquitectura de Computadores Suspensión de procesos ÖSuspender un proceso implica liberar parte de la memoria que éste estaba ocupando. Hay varios criterios para suspender procesos: • Procesos con la prioridad más baja. • Procesos con fallos de página: # Este proceso no tiene su conjunto de trabajo en la memoria principal, por lo que quedará bloqueado de todas formas. • Último proceso activado: # Este es el proceso con menos posibilidades de tener su conjunto de trabajo residente. Arquitectura de Computadores y Sistemas Operativos 83 Suspensión de procesos • Proceso con el conjunto residente más pequeño: # Este es el proceso que necesita el menor esfuerzo futuro para volver a cargar el conjunto residente. • El proceso mayor: # Esta alternativa obtiene la mayor cantidad de marcos libres. • Procesos con la mayor ventana de ejecución restante. Arquitectura de Computadores y Sistemas Operativos Tema 5: Subsistema de Memoria 84 42 Arquitectura de Computadores Gestión de memoria en UNIX y Solaris ÖSistema de paginación: • • • • Tabla de páginas. Descriptor de bloques de disco. Tabla de marcos de página. Tabla de uso de intercambios. Arquitectura de Computadores y Sistemas Operativos 85 Estructuras de datos Copia Modifi- Refe- Protec- Número de marco de página Número de marco de página Edad Edaden es- cación rencia Validez ción critura (a) Entrada de la tabla de páginas Número de dispositivo de intercambio Número de bloque de dispositivo Tipo de almacenamiento (b) Descriptor de bloques de disco Figura 8.22. Formatos de gestión de memoria en UNIX SVR4. Arquitectura de Computadores y Sistemas Operativos Tema 5: Subsistema de Memoria 86 43 Arquitectura de Computadores Estructuras de datos Estado de Contador de Dispositivo Número de Puntero a marco Número de marco de página la página referencias lógico Edadbloque de página (c) Entrada de la tabla de marcos de página Contador de referencias Página/número de unidad de almacenamiento (d) Entrada de la tabla de utilización del intercambio Figura 8.22. Formatos de gestión de memoria en UNIX SVR4. Arquitectura de Computadores y Sistemas Operativos 87 Gestión de memoria en UNIX y Solaris ÖReemplazo de páginas: • Es un refinamiento de la política del reloj. ÖAsignador de memoria del núcleo: • La mayor parte de estos bloques son significativamente más pequeños que el tamaño de página en las máquinas normales. Arquitectura de Computadores y Sistemas Operativos Tema 5: Subsistema de Memoria 88 44 Arquitectura de Computadores Gestión de memoria en Linux ÖDirectorio de páginas. ÖDirectorio intermedio de páginas. ÖTabla de páginas. Arquitectura de Computadores y Sistemas Operativos 89 Gestión de memoria en Windows 2000 ÖPaginación en W2K: • Disponible. • Reservada. • Confirmada. Arquitectura de Computadores y Sistemas Operativos Tema 5: Subsistema de Memoria 90 45 Arquitectura de Computadores Región de 64 Kilobytes para la asignación de punteros NULL (inaccesible) Región de 2 Gigabytes para el espacio de direcciones de usuario (no reservado, utilizable) Región de 64 Kilobytes para la asignación incorrecta de punteros (inaccesible) Región de 2 Gigabytes para el sistema operativo (inaccesible) Figura 8.25. Espacio de direcciones virtuales por defecto en Windows 2000. Arquitectura de Computadores y Sistemas Operativos Tema 5: Subsistema de Memoria 91 46