1-131B10050 SISTEMAS OPERATIVOS Carga, Montaje y Memora Virtual. UNIDAD3/SEMANA6 requerirá que estos módulos sean intercambiados a medida que la ejecución progresa. Se malgasta el espacio interno a cada partición cuando el bloque cargado es más pequeño, lo que se conoce como fragmentación interna. Es decir, cualquier proceso por pequeño que sea, ocupará una partición completa. Ejemplo de partición estática en una memoria de 64 MB 1. CARGA Y MONTAJE La tarea central de cualquier sistema de gestión de memoria es traer los programas a memoria principal para su ejecución en el procesador. En casi todos los sistemas multiprogramado modernos, esta tarea supone un esquema sofisticado conocido como memoria virtual. La memoria virtual está, a su vez, basada en el uso de una de dos técnicas básicas; segmentación y/o paginación. Antes de ver estás técnicas de memoria virtual, se debe preparar el terreno considerando técnicas más simples que no requieren el uso de memoria virtual. Una de estas técnicas, la partición, se ha venido usando con distintas variantes en algunos sistemas operativos ahora obsoletos. Ejemplo de Asignación de Memoria con Particiones Estáticas Las otras dos técnicas, la paginación simple y la segmentación simple, no se usan en solitario. No obstante, el estudio de la memoria virtual resultará más sencillo si se consideran en primer lugar estas dos técnicas, sin tener en cuenta la memoria virtual. 2. TÉCNICAS MEMORIA DE GESTIÓN DE Particiones Estáticas: Con particiones estáticas surgen dos dificultades: Un programa puede ser demasiado grande para caber en una partición, por lo tanto, si el programa no se ha diseñado mediante superposición, simplemente no se puede ejecutar. De otro modo, podrán estar en memoria aquellos módulos del programa que se necesiten, pero se Particiones Dinámicas: Con particiones dinámicas surgen las siguientes dificultades: Producto de la entrada y salida de procesos en la memoria, se van generando porciones cada vez más pequeñas de la memoria sin utilizar, lo que se conoce como fragmentación externa. 1 Para solucionar este problema se debe recurrir a la compactación de la memoria de manera de eliminar los espacios (huecos) entre procesos. Esto significa que los procesos deben ser reubicados en memoria en forma dinámica. Ejemplo de Soporte Hardware para la Reubicación La asignación de memoria en un esquema con particiones dinámicas, consiste en determinar en qué hueco ubicar un nuevo proceso. Para esto existen tres algoritmos: mejor ajuste, primer ajuste o próximo ajuste. Mejor ajuste: consiste en ubicar el proceso en el espacio de memoria que más se ajuste a su tamaño. Primer ajuste: consiste en ubicar el proceso en el primer hueco disponible, recorriendo desde el inicio de la memoria, cuyo tamaño sea suficiente para el proceso. Próximo ajuste: consiste en ubicar el siguiente hueco disponible, que sea suficientemente grande, a partir de la última asignación de memoria. 4. PAGINACIÓN Asignación de páginas de procesos a marcos libres Ejemplo de Dinámica Efectos de la 3. REQUISITO REUBICACIÓN Partición DE Cualquier mecanismo de gestión de memoria debe poder reubicar los procesos, sin perder las referencias que se hagan dentro de él. Estructura de Datos en el tiempo (f) 2 3 Traducción de dirección lógica a física en paginación Ejemplo : Dirección relativa 0000010111011110 1502 en Resumen de las Técnicas de Gestión de Memoria binario 6. MEMORIA VIRTUAL Para un aprovechamiento eficiente del procesador y de los servicios de E/S es conveniente mantener tantos procesos en memoria principal como sea posible. Además, conviene liberar a los programadores de las limitaciones de tamaño en el desarrollo de programas. La forma de abordar ambos problemas es por medio de la memoria virtual. Con memoria virtual, todas las referencias a direcciones son referencias lógicas que se traducen a direcciones reales durante la ejecución. Esto permite a los procesos situarse en cualquier posición de memoria principal y cambiar de ubicación a lo largo del tiempo. La memoria virtual permite también dividir un proceso en fragmentos. 5. SEGMENTACIÓN Estos fragmentos no tienen por qué estar situados de forma contigua en la memoria principal durante la ejecución y no es ni siquiera necesario que todos los fragmentos del proceso estén en memoria durante la ejecución. Otra forma de subdividir el programa es la segmentación. En este caso el programa y sus datos son divididos en segmentos, sin ser necesario que todos sean de igual tamaño. Los dos enfoques básicos de memoria virtual son la paginación y la segmentación. Traducción de Dirección lógica a Física La segmentación permite el uso de fragmentos de tamaño variable. También es posible combinar segmentación y paginación en un único esquema de gestión de memoria. Un esquema de gestión de memoria virtual exige un soporte tanto de hardware como de software. El soporte de hardware lo proporciona el procesador. Este soporte 4 Con paginación, cada proceso se divide en páginas de tamaño fijo y relativamente pequeño. incluye la traducción dinámica de direcciones virtuales a direcciones físicas y la generación de interrupciones cuando una página o 5 segmento referenciado no están en memoria principal. Estas interrupciones activan el software de gestión de memoria del sistema operativo. Una serie de cuestiones de diseño relativas a los sistemas operativos dan soporte a la gestión de memoria virtual: Políticas de lectura: Las páginas de los procesos pueden cargarse por demanda o se puede usar una política de paginación previa; esta última agrupa las actividades de entrada cargando varias páginas a la vez. Políticas de ubicación: En un sistema de segmentación pura, un segmento entrante debe encajar en un espacio de memoria disponible. Políticas de reemplazo: Cuando la memoria está llena, debe tomarse la decisión de qué página o páginas serán reemplazadas. Gestión del conjunto residente: El sistema operativo debe decidir cuánta memoria principal ha de asignar a un proceso en particular cuando se carga. Puede hacerse una asignación estática en el momento de la creación del proceso o bien puede cambiar dinámicamente. Políticas de vaciado: Las páginas modificadas de un proceso pueden escribirse al disco en el momento del reemplazo o bien puede aplicarse una política de paginación previa; esta última agrupa las actividades de salida escribiendo varias páginas de una vez. Control de carga: El control de carga determina el número de procesos residentes que habrá en memoria principal en un momento dado Bibliografía Silberschatz, abrahan, Galvin, Peter Baer y Gagne, greg. 2006. Fundamentos de Sistemas Operativos. Madrid : McGraw-hill / Interamericana, 2006. Sol Llaven, Daniel. 2015. Sistemas Operativos Panorama para la Ingeniería en Computación e informática. Mexico : Grupo Editorial Patria, 2015. Stallings, William. 2000. Sistemas Operativos. Madrid : Pearson Educaci{on S.A., 2000. 6