1.46k likes | 1.82k Views
Sistemas de Operación Hector Gonzalez hgr@cantv.net 0416-7252438. Unidad IV, V, VI. Administración de memoria, Memoria Auxiliar. Manejador de Información. Aislamiento del proceso. Asignación y gestión automáticas. Soporte para la programación modular. Protección y control de acceso.
E N D
Sistemas de Operación Hector Gonzalez hgr@cantv.net 0416-7252438
Unidad IV, V, VI Administración de memoria, Memoria Auxiliar. Manejador de Información
Aislamiento del proceso. Asignación y gestión automáticas. Soporte para la programación modular. Protección y control de acceso. Almacenamiento a largo plazo. Gestión de memoria
Sistema Monoprogramado Memoria Principal Sistema Operativo (monitor residente, núcleo) Programa Principal (el que se ejecuta en ese inst) Sistema Multiprogramado En la parte de Usuario de la memoria (debe hacerse sitio para varios procesos) Esta tarea esta a cargo del S.O. Se hace de manera dinámica Se conoce como Gestión de Memoria Gestión de Memoria
Permite a los programas direccionar la memoria desde un punto de vista lógico. No existirá un espacio muerto entre la ejecución de los procesos sucesivos, mientras un proceso se envía al almacenamiento secundario y el proceso que le sucede es traído de éste. Memoria virtual
Los intercambios E/S se producen directamente con la memoria. El procesador otorga autoridad a un módulo de E/S para leer o escribir en la memoria. Releva al procesador de la responsabilidad del intercambio. El procesador queda libre para realizar otras operaciones. Acceso directo de memoria (DMA)
Jerarquía de la memoria Memoria interna Registros cache Memoria principal Disco magnético CD-ROM CD-RW DVD + RW DVD-RAM Memoria externa Almacenamiento secundario Cinta magnética MO WORM Figura 1.14. La jerarquía de la memoria.
Disminución del coste por bit. Aumento de la capacidad. Aumento del tiempo de acceso. Disminución de la frecuencia de acceso a la memoria por parte del procesador: Cercanía de referencias. Descenso por la jerarquía
Es una parte de la memoria principal que se puede utilizar como buffer para guardar temporalmente los datos transferidos con el disco. Las escrituras al disco se agrupan. Se pueden volver a escribir algunos datos destinados a la salida. Los datos se recuperan rápidamente por software desde la cache del disco en lugar de hacerse lentamente desde el disco. Cache de disco
Es invisible para el sistema operativo. Aumenta la velocidad de la memoria. La velocidad del procesador es mayor que la de la memoria. Memoria cache
Memoria cache Transferencia de bloques Transferencia de palabras Figura 1.16. Cache y memoria principal.
Contiene una parte de la memoria principal. El procesador primero comprueba la memoria cache. Si una palabra no se encuentra en la memoria cache, se introduce en la cache un bloque de memoria principal que contiene la información necesaria. Memoria cache
Dirección de memoria Número de entrada Cache/Main Memory System Bloque Etiqueta Bloque (K palabras) Longitud de bloque (K palabras) (a) Cache Bloque Longitud de palabra (b) Memoria principal Figura 1.17. Estructura de cache/memoria principal.
Tamaño de la cache: Las caches pequeñas pueden tener un impacto significativo sobre el rendimiento. Tamaño del bloque: Es la unidad de intercambio de datos entre la cache y la memoria principal. La tasa de aciertos significa que la información se encontró en la cache. La tasa de aciertos comenzará a disminuir, dado que el bloque se hace mayor y la probabilidad de uso del dato leído más recientemente se hace menor que la probabilidad de reutilizar el dato que hay que sacar de la cache. Diseño de la cache
Función de traducción: Determina la posición de la cache que ocupará el bloque. Algoritmo de reemplazo: Elige el bloque que hay que reemplazar. Algoritmo del menos recientemente usado (LRU). Diseño de la cache
Política de escritura: Dicta cuándo tiene lugar la operación de escribir en memoria. Puede producirse cada vez que el bloque se actualice. La escritura se produce sólo cuando se reemplaza el bloque: Reduce las operaciones de escritura en memoria. Deja la memoria principal en un estado obsoleto. Diseño de la cache
El módulo E/S lleva a cabo la acción requerida en lugar del procesador. Activa los bits apropiados en el registro de estado de E/S. No se producen interrupciones. El procesador comprueba el estado hasta que se ha completado la operación. E/S programada Emitir la orden LEER al módulo de E/S CPU E/S Leer estado del módulo de E/S E/S CPU No listo Condición de error Compro- bar estado Listo Leer palabra del módulo de E/S E/S CPU Escribir palabra en memoria CPU memoria No ¿Hecho? Sí Instrucción siguiente (a) E/S programada
El procesador queda interrumpido cuando el módulo E/S está listo para intercambiar más datos. El procesador puede realizar otras operaciones. Elimina las esperas innecesarias. Consume una gran cantidad de tiempo del procesador debido a que cada palabra de datos pasa a través del procesador. E/S dirigida por interrupciones CPU E/S Emitir la orden LEER al módulo de E/S Hacer otra cosa Leer estado del módulo de E/S Interrupción E/S CPU Condición de error Compro- bar estado Listo Leer palabra del módulo de E/S E/S CPU Escribir palabra en memoria CPU memoria No ¿Hecho? Sí Instrucción siguiente (b) E/S dirigida por interrupciones
Transfiere el bloque entero directamente hacia o desde la memoria. Cuando se completa la transferencia se envía una señal de interrupción. El procesador se ve involucrado sólo al inicio y al final de la transferencia. Acceso directo a la memoria CPU DMA Emitir la orden LEER BLOQUE al módulo E/S Hacer otra cosa Leer estado del módulo de DMA Interrupción DMA CPU Instrucción siguiente (c) Acceso directo a 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. 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. Requisitos de la gestión de memoria
Protección: Cada proceso debe protegerse contra interferencias no deseadas de otros procesos (accidentales/intencionadas) 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. 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. 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. Requisitos de la gestión de memoria
Organización física: Memoria Principal(programas, datos de uso actual) Acceso rápido, costo alto, es volátil. Memoria Secundaria(almacenamiento a largo plazo) Lenta, mas barata, no es volátil La memoria disponible puede ser insuficiente para un programa y sus datos : La superposición permite que varios módulos sean asignados a la misma región de memoria. El programador no conoce, a priori, cuánto espacio habrá disponible. La tarea de mover información entre los niveles de memoria debe ser responsabilidad del sistema (Gestión de Memoria) Requisitos de la gestión de memoria
La gestión de memoria en sistemas modernos requiere de un sofisticado esquema llamado memoria virtual. La memoria virtual esta a su vez basada en el uso de una de dos técnicas básicas: Segmentación o paginación Partición de Memoria
Paginación Transferencia de paginas entre la memoria principal y la memoria secundaria Segmentación División de un programa o aplicación en segmentos como parte del esquema de memoria virtual. Conceptos
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. 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. Particiones estáticas
Sistema operativo 8M Sistema operativo 8M 2M 8M 4M 6M 8M 8M 8M 8M 8M 12M 8M 8M 16M 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.
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. Algoritmo de ubicación con particiones
Sistema operativo Sistema operativo Procesos nuevos Procesos nuevos (b) Cola única de procesos (a) Una cola de procesos por partición Figura 7.3. Asignación de memoria en partición estática.
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. Particiones dinámicas
Sistema operativo Sistema operativo Sistema operativo Sistema operativo 8M Proceso 1 20M Proceso 1 20M Proceso 1 20M 14M 14M 56M Proceso 2 Proceso 2 36M Proceso 3 18M 22M 4M (b) (c) (d) (a) Figura 7.4. Efectos de la partición dinámica.
Sistema operativo Sistema operativo Sistema operativo Sistema operativo 14M Proceso 2 20M 20M Proceso 1 Proceso 1 20M 6M 8M Proceso 4 8M Proceso 4 Proceso 4 8M 14M 6M 6M 6M 18M 18M 18M 18M Proceso 3 Proceso 3 Proceso 3 Proceso 3 4M 4M 4M 4M (g) (e) (f) (h) Figura 7.4. Efectos de la partición dinámica.
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. Algoritmo de ubicación con particiones dinámicas
Algoritmo del primer ajuste (first-fit): Es más rápido. Puede tener varios procesos cargados en el extremo inicial de la memoria que es necesario recorrer cuando se intente encontrar un bloque libre. 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. Algoritmo de ubicación con particiones dinámicas
8M 8M 12M 12M Primer ajuste 22M 6M Mejor ajuste Último bloque asignado (14K) 18M 2M 8M 8M 6M 6M Bloque asignado 14M Bloque libre 14M Siguiente ajuste 36M 20M (b) Después (a) Antes Figura 7.5. Ejemplo de una configuración de memoria antes y después de asignar un bloque de 16 Mbytes.
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 generándose. Sistema de colegas
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.
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. Reubicación
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. Direcciones
Dirección relativa Bloque de control de proceso Registro base Programa Sumador Dirección absoluta Comparador Registro límite Datos Interrupción al sistema operativo Pila Imagen de un proceso en la memoria principal Figura 7.8. Soporte de hardware para la reubicació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. 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. Registros utilizados durante la ejecució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. Paginación
Número de marco Memoria principal Memoria principal Memoria principal (b) Carga del proceso A (c) Carga del proceso B (a) Quince marcos libres Figura 7.9. Asignación de páginas de procesos a marcos libres.