Multiprogramación con particiones fijas
•
•
•
La multiprogramación aumenta el aprovechamiento aprovechamiento del CPU. Lograr la multiprogramación consiste simplemente en dividir la memoria en particiones, posiblemente desiguales. Cuando llega un trabajo, se le puede colocar en la cola de entrada de la partición pequeña que puede contenerlo. Puesto que las particiones están fijas en este esquema, cualquier espacio de una partición que un trabajo no utilice se desperdiciará.
•
•
Particiones de memoria fijas con colas de entrada individuales para cada Partición. Particiones de memoria fija con una sola cola de entrada.
•
La desventaja de repartir los trabajos entrantes en colas distintas se hace evidente cuando la cola de una partición grande está vacía pero la cola de una partición pequeña está llena.
Colas distintas
•
•
•
Cada vez que se libera una partición, se selecciona el trabajo más cercano a la cabeza de la cola que cabe en esa partición, se carga en dicha partición y ejecuta. NO es deseable desperdiciar una partición grande en un trabajo pequeño. Examinar toda la cola de entrada cada vez que se libera una partición y escoger el trabajo más grande que cabe en ella.
Una sola cola
•
Tener por lo menos una partición pequeña disponible. Permitirá que se ejecuten los trabajos pequeños sin tener que asignar una partición grande para ello.
•
Utilizado por OS/360 en Macro computadoras de IBM
MFT (multiprogramación con un numero fijo de tareas)
Sistema con Particiones fijas
Relocalización y protección
•
•
Los programas que necesitan cargarse a memoria real ya están compilados y ligados, internamente contienen una serie de referencias a direcciones de instrucciones, rutinas y procedimientos que ya no son válidas en el espacio de direcciones de memoria real de la sección en la que se carga el programa. Esto es, cuando se compiló el programa se definieron o resolvieron las direcciones de memoria de acuerdo a la sección de ese momento, pero si el programa se carga en otro dia en una sección diferente, las direcciones reales ya no coinciden.
EL PROBLEMA DE LA RELOCALIZACIÓN
•
El manejador de memoria puede solucionar el problema de dos maneras: de manera `estática' o de manera `dinámica'.
Solución estática: Consiste en que todas las direcciones del programa se vuelvan a recalcular al momento en que el programa se carga a memoria, esto es, prácticamente se vuelve a recompilar el programa. •
Solución dinámica: Consiste en tener un registro que guarde la dirección base de la sección que va a contener al programa. Cada vez que el programa haga una referencia a una dirección de memoria, se le suma el registro base para encontrar la dirección real. •
EL PROBLEMA DE LA RELOCALIZACIÓN
•
•
•
Una vez que un programa ha sido cargado a memoria en algún segmento en particular, nada le impide al programador que intente direccionar (por error o deliberadamente) localidades de memoria menores que el límite inferior de su programa o superiores a la dirección mayor; es decir, quiere referenciar localidades fuera de su espacio de direcciones.
No es legal leer o escribir en áreas de otros programas. Cada vez que el programa hace una referencia a memoria se checa si cae en el rango de los registros (registro base y registro límite) y si no es así se envía un mensaje de error y se aborta el programa.
EL PROBLEMA DE LA PROTECCIÓN
•
•
Una solución alternativa tanto al problema de relocalización como al problema de protección consiste en equipar la máquina con dos registros especiales en hardware, llamados registros de base y de límite. Cuando se calendariza un proceso, el registro de base se carga con la dirección del principio de su partición, y el registro de límite se carga con la longitud de la partición.
INTERCAMBIO Consiste en traer a la memoria cada proceso en su totalidad, ejecutarlo durante un tiempo, y después colocarlo otra vez en el disco.
Inicialmente, sólo el proceso A está en la memoria.
•
Luego se crean o se traen del disco los procesos B y C
•
•
A termina o se intercambia al disco.
•
Luego llega D y B sale. •
Por último, entra E.
La asignación de memoria cambia conforme los procesos entran en la memoria y salen de ella.
•
•
La diferencia principal entre las particiones fijas y las particiones variables es que el número, ubicación y tamaño de las particiones varían dinámicamente en el segundo caso conforme los procesos vienen y van, mientras que en el primer caso están fijas. Si el intercambio crea múltiples agujeros en la memoria, es posible combinarlos todos para formar uno grande desplazando todos los procesos hacia abajo hasta donde sea posible. Esta técnica se conoce como compactación de memoria, y pocas veces se practica porque requiere mucho tiempo de CPU.
ADMINISTRACIÓN DE MEMORIA CON MAPAS DE BITS Cuando la memoria se asigna dinámicamente, el sistema operativo debe administrarla.
•
Con un mapa de bits:
La memoria se divide en unidades de asignación, de unas cuantas palabras o quizá de varios kilobytes. A cada unidad de asignación corresponde un bit del mapa de bits, que es 0 si la unidad está libre y 1 si está ocupada (o viceversa).
(a) Una parte de la memoria con cinco procesos y tres agujeros. Las marcas indican las unidades de asignación de memoria. Las regiones sombreadas (O en el mapa de bits) están libres. (b) El mapa de bits correspondiente, (c) La misma información en forma de lista.
•
•
El tamaño de la unidad de asignación es una cuestión de diseño importante. Cuanto menor sea la unidad de asignación, mayor será el mapa de bits. Un mapa de bits ofrece un método sencillo para contabilizar las palabras en una cantidad fija de memoria, porque el tamaño del mapa de bits depende sólo del tamaño de la memoria y del tamaño de la unidad de asignación.