FUNDAMENTOS DE SI SISTEMAS STEMAS OPERATIVOS
Esquemas Esqu emas de asignación asi gnación Memoria Real
Asignación contigua • Sistemas de un solo proceso • Sistemas multiprogramació multiprogramaciónn Con particiones fijas Con particiones variables
Asignación no contigua • Paginación • Segmentación • Paginación + Segmentación
Asignación contigua de memoria
En la “asignación contigua” cada programa ocupa un bloque contiguo y sencillo de localizaciones de almacenamiento. Es decir cada proceso tiene que ocupar un único bloque de localidad de memoria. Los primeros sistemas de cómputo permitían que solo una persona a la vez utilizara la máquina. Todos los recursos estaban a disposición del usuario. El código de E/S requerido para realizar las funciones básicas se consolidó en un sistema de control de E/S.
Asignación contigua de un solo usuario
Se considera que el S. O. ya posee desarrollado el “sistema de control de entrada / salida” IOCS.
Área de procesos transitorios • Se coloca un único proceso de usuario • Se elimina cuando finaliza o antes de cargar otro
Fig. 1
El tamaño de los programas está limitado por la cantidad de memoria principal, pero se puede superar este límite con técnicas de “recubrimientos” , con las siguientes características:
1.
Si una sección particular del programa ya no es necesaria, se carga otra sección desde el almacenamiento secundario ocupando las áreas de memoria liberadas por la sección que ya no se necesita.
2.
La administración manual por programa del recubrimiento es complicada y dificulta el desarrollo y el mantenimiento.
Fig. 2 Técnica de recubrim iento
Protección
El usuario tiene un completo control sobre la totalidad del almacenamiento principal. El almacenamiento se divide en porciones que contienen el S. O el programa del usuario y una porción sin usar. El programa del usuario podría destruir áreas del S. O. que podrían: Detener el sistema. Producir salidas erróneas. El S. O. debe estar protegido contra el proceso usuario: La protección se instrumenta mediante un “registro de límites” incorporado a la CPU: Contiene la dirección de la instrucción más alta utilizada por el S. O. Si se intenta ingresar al S. O. la instrucción es interceptada y el proceso finaliza.
Sistemas Multiprogramación Particiones
Multiprogramación Necesidad de varios procesos en memoria simultáneamente.
Dos modos de asignación: Particiones fijas y Variables
Particiones Fijas
División de la memoria en varios trozos (particiones) : Tamaño diferente de las particiones Tamaño fijo de las particiones (inamovible) Único proceso por partición con tamaño partición Estructuras de datos para la gestión de particiones fijas Tabla de descripción de particiones Estado (libre/asignada) Base de la partición Tamaño de la partición o
Protección entre procesos A través de registro base y límite Comprobaciónen cada acceso a memoria
Grado de multiprogramación Limitado al numero de particiones. Fragmentación Interna
Dentro de cada partición queda una zona de memoria no aprovechable. El proceso es más pequeño que la partición. No se puede asignar a ningún otro proceso. Es posible que procesos esperando entrar en memoria no tengan partición a pesar de haber espacio libre para ellos.
Fig. 3 Ejem plo: OS/MFT (Multiprogram ación con nº fijo de tareas)
Particiones Variables
A cada proceso se le asigna la memoria que necesita exactamente. El tamaño del trabajo a ubicar no puede ser mayor que el almacenamiento principal disponible. Se disminuye parcial o totalmente el desperdicio de memoria. Aparecen: Fragmentación, Condensación y Compactación. Estrategias de asignacion de particiones: Primer ajuste, Mejor ajuste y Peor ajuste.
Fragmentación
Significa desperdicio de memoria (sin usar).
Se presenta de dos maneras diferentes:
Fragmentación interna: Es la memoria que pertenece a una partición pero no se usa.
Fragmentación externa: Se presenta cuando el espacio de memoria es suficiente para atender una solicitud pero no es contiguo.
Fig. 4 Ejemplo de Partición Variable
Condensación Unir o fusionar espacios o “huecos” adyacentes para formar
uno más grande. Sistema Operativo
Sistema Operativo
Sistema Operativo
20 K
20 K
20 K S. O.
Libre
Libre
15 K
15 K Libre
Libre
22 K
37 K
22 K
Termina 8K
8K libre
libre
8K libre
Compactación
Técnica que consiste en trasladar todas las áreas ocupadas del almacenamiento hacia algún extremo de la memoria. Es una solución de la fragmentación externa. El objetivo consiste en desplazar el contenido de la memoria libre en un sólo bloque de gran tamaño.
Sistema Operativo
Sistema Operativo
15 K
Libre
15 K
8K
Libre Libre 8K libre
Estrategias de asignación
Permiten determinar en qué lugar de la memoria principal se deben colocar los programas y datos entrantes. Tipos:
Mejor Ajuste.
Primer Ajuste.
Peor Ajuste.
Estrategia del primer ajuste
Estrategia del mejor ajuste
Estrategia del peor ajuste
Asignación no contigua de memoria
En la “asignación no contigua” un programa se divide en varios bloques o “segmentos” que pueden almacenarse en direcciones que no tienen que ser necesariamente adyacentes, por lo que es más compleja pero más eficiente que la asignación continua. El espacio de direcciones lógico de un proceso se reparte entre diferentes zonas de la memoria principal Métodos de organización : Paginación Segmentación Segmentación + paginación
Paginación
El espacio de direcciones lógico de un proceso puede ser no contiguo. Se divide la memoria física en bloques de tamaño fijo llamados marcos (frames). Se divide la memoria en bloques de tamaño llamados paginas. Se mantiene información en los marcos libres. Para correr un programa de n paginas de tamaño, se necesitan encontrara n marcos y cargar el programa. Se establece una tabla de paginas para trasladar las direcciones lógicas a físicas. Se produce fragmentación interna.
Ventajas
Es posible comenzar a ejecutar un programa, cargando solo una parte del mismo en memoria, y el resto se cargara bajo la solicitud. No es necesario que las paginas estén contiguas en memoria, por lo que no se necesitan procesos de compactación cuando existen marcos de paginas libres dispersos en la memoria. Es fácil controlar todas las páginas, ya que tienen el mismo tamaño. Se libera al programador de la restricción de programar para un tamaño físico de memoria, con lo que se aumenta su productividad. Se puede programar en función de una memoria mucho más grande a la existente. Al no necesitarse cargar un programa completo en memoria para su ejecución, se puede aumentar el numero de programas multiprogramándose.
Desventajas
El costo de hardware y software se incrementa, por la nueva información que debe manejarse. Se consume mucho mas recursos de memoria, tiempo en el CPU para su implantación. Aparece el problema de fragmentación interna.
Ej.: si se requieren 5K para un programa, pero las paginas son de 4K, deberán asignárseles 2 paginas (8k), con lo que quedan 3K sin utilizar. La suma de los espacios libres dejados de esta forma puede ser mayor que el de varias paginas, pero no podrá ser utilizados.
Segmentación
Es un esquema de manejo de memoria mediante el cual la estructura del programa refleja su división lógica. llevándose a cabo una agrupación lógica de la información en bloques de tamaño variable denominados segmentos. Cada uno de ellos tienen información lógica del programa: subrutina, arreglo, etc. Luego, cada espacio de direcciones de programa consiste de una colección de segmentos, que generalmente reflejan la división lógica del programa.
Ventajas
El programador puede conocer las unidades lógicas de su programa, dándoles un tratamiento particular. Debido a que es posible separar los módulos se hace más fácil la modificación de los mismos. Cambios dentro de un modulo no afecta al resto de los módulos. Es fácil el compartir segmentos. Es posible que los segmentos crezcan dinámicamente según las necesidades del programa en ejecución. Existe la posibilidad de definir segmentos que aun no existan. Así, no se asignara memoria, sino a partir del momento que sea necesario hacer usos del segmento.
Desventajas
Hay un incremento en los costos de hardware y de software para llevar a cabo la implantación, así como un mayor consumo de recursos: memoria, tiempo de CPU, etc. No se puede garantizar, que al salir un segmento de la memoria, este pueda ser traído fácilmente de nuevo, ya que será necesario encontrar nuevamente un área de memoria libre ajustada a su tamaño. La compartición de segmentos permite ahorrar memoria, pero requiere de mecanismos adicionales da hardware y software.
Segmentación Paginada
Paginación y segmentación son técnicas diferentes, cada una de las cuales busca brindar las ventajas enunciadas anteriormente. Puede hacerse una combinación de segmentación paginación para obtener las ventajas de ambas.
y
En lugar de tratar un segmento como una unidad contigua, este puede dividirse en páginas. Cada segmento puede ser descrito por su propia tabla de páginas. Los segmentos son usualmente múltiplos de páginas en tamaño, y no es necesario que todas las páginas se encuentren en memoria principal a la vez.
Ventajas
Debido a que los espacios de memoria son segmentados, se garantiza la facilidad de implantar la compartición y enlace. Como los espacios de memoria son paginados, se simplifican las estrategias de almacenamiento. Se elimina el problema de la fragmentación externa y la necesidad de compactación.