Diagrama temporal de un programa simple Multi-Programación con dos programas
Multi-Programación con tres programas Gestión de la Memoria Mono-programación La memoria se divide en dos partes: Una para el sistema operativo (monitor) Otra para el programa en ejecución (usuario) Multi-programación La parte del usuario debe subdividirse para dar cabida a los distintos procesos La tarea de subdivisión la realiza dinámicamente el sistema operativo, y se conoce como gestión de memoria
Intercambio (swapping) Problema: La E/S es tan lenta comparada con la CPU que aun en sistemas de multiprogramación, la CPU puede estar inactiva al mayor parte del tiempo. Soluciones: Incrementar la memoria principal Es caro Más memoria= programas más grandes Intercambio Que es el Intercambio? Se tiene una cola (queue) a largo plazo de solicitudes de proceso en el disco. Los procesos se traen a la memoria principal a medida que hay espacio disponible A medida que un proceso se completa se mueve fuera de la memoria principal. Puede pasar que ninguno de los procesos de memoria este listo (p.ej., todos están esperando una operación de E/S) En lugar de estar parado, el procesador intercambia uno de esos procesos, ubicándolo en el disco en una cola intermedia Trae entonces otro proceso de la cola intermedia o acepta otra petición de proceso de la cola de largo plazo Pero el intercambio es otro proceso de E/S
Uso de Intercambio Particiones Consiste en dividir la memoria en secciones para ubicar los procesos (incluyendo el Sistema Operativo) Particiones de tamaño fijo Pueden no ser del mismo tamaño Cuando un proceso se introduce en la memoria, se ubica en la partición más pequeña que puede incluirlo. Se desperdicia memoria Una opción más eficiente consiste en usar particiones de tamaño variable
Particiones Fijas Particiones de Tamaño Variable (1) Cuando cada proceso se introduce en la memoria, se le asigna el espacio exacto que necesita. Esto deja al final de la memoria un hueco, demasaido pequeño para otro proceso Un solo hueco menos derroche Cuando todos los procesos están en espera, el procesador saca uno de memoria u carga otro desde el disco El nuevo proceso puede ser mas pequeño que el anterior Queda otro hueco
Particiones de Tamaño Variable (2) Efectos de Particionamiento Dinámico Eventualmente, puede haber una gran número de huecos, empeorando la utilización de la memoria (fragmentación) Soluciones: Fusión Juntar huecos adyacentes en un hueco mayor Compactación - Periódicamente recorrer la memoriay mover los huecos a un bloque libre (de-fragmentación de disco)
Relocalización Dificilmente un proceso se cargará en la misma posición de memoria cada vez que se intercambia. Las instrucciones contienen direcciones: Direcciones de datos Direcciones de instrucciones (en saltos) Estas direcciones cambian cada vez que el proceso se intercambia. Se distinguen: Direcciones lógicas relativas al comienzo del programa Direcciones físicas posición actual en la memoria principal La conversión es automática al intercambiar procesos: dirección física = dirección lógica + posición de comienzo actual del proceso (dirección base) Paginación Se divide la memoria en pequeños trozos iguales y de tamaño fijo frames (marcos) Se dividen los programas (procesos) en pequeños trozos iguales pages (páginas) Se asignan el número requerido de frames a un proceso El Sistema Operativo mantiene una lista de frames libres Un proceso no requiere que sus páginas se alojen en frames contiguos Se usa una tabla de páginas que indica en que frame se aloja cada página del proceso.
Asignación de Marcos (Frames) libres Direcciones lógicas y físicas - Paginación
Memoria Virtual Paginación por demanda No requiere que todas las páginas de un proceso esten alojadas en la memoria Cada página se introduce en la memoria sólo cuando es requerida- Fallo de página La página requerida no está en la memoria El Sistema Operativo debe cargarla Puede ser necesario sacar alguna página para hacer espacio. La página a sacar se selecciona (predicción) en base a su historia reciente (las menos utilizadas) Hiperpaginación (Thrashing) Si hay muchos procesos en una memoria pequeña: El Sistema Operativo pasa mucho tiempo intercambiando páginas, en lugar de ejecutar instrucciones El led del disco está encendido todo el tiempo Soluciones Buenos algoritmos de remplazo de páginas Reducir el número de procesos en ejecución Instalar más memoria.
Ventajas Estructura de la Tabla de Páginas Invertida No es necesario cargar todo un proceso en memoria para que corra Solo se cargan las páginas necesarias Por lo tanto, se puede correr un proceso mayor que toda la memoria principal! La memoria principal es llamada memoria real Sin embargo, el usuario o programador percibe una memoria mucho mayor (la que hay disponible en disco, que se denomina memoria virtual
Buffer de Traducción Anticipada (Translation Lookaside Buffer) Operación de la TLB Toda referencia a memoria virtual puede ocasionar dos accesos a la memoria física: Para tomar el elemento de la tabla de páginas apropiada Para tomar el dato correspondiente Esto duplicaría el tiempo de acceso a memoria Para evitar esto, se usa una cache especial para los elementos de la tabla de páginas TLB
Operación de la TLB y Cache Segmentación La paginación no es visible al programador La segmentación es visible al programador Usualmente, el programador o el Sistema Operativo asignarán programas y datos a segmentos distintos Pueden haber segmentos de programa distintos para varios tipos de programas, y también distintos segmentos de datos, pudiendo asignarse a cada uno derechos de acceso y uso
Ventajas de la Segmentation Simplifica el manejo de estructuras de datos crecientes Permite modificar los programas y recompilarlos independientemente, sin que sea necesario volver a enlazarlos y recargar el conjunto entero. Permite que varios procesos compartan segmentos Se facilita la protección Algunos sistemas combinan la segmentación con la paginación Lecturas requeridas Stallings capítulo 7