Pages

Asignación contigua Simple

La memoria principal normalmente se divide en dos particiones:

*Sistema operativo residente, normalmente en la parte baja de memoria con los vectores de interrupción.

*Procesos de usuario en la parte alta.

El sistema operativo (s.o.) es el responsable de asignar memoria principal a los procesos para que puedan ser ejecutados.

En un modelo de memoria con asignación contigua, todo el espacio lógico de un proceso(Código, Datos, Pila) ha de estar ubicado de forma contigua en memoria principal, es decir en direcciones físicas consecutivas

Cuando un proceso finaliza libera la memoria ocupada.

La asignación de memoria consiste en el proceso de asignar memoria para propósitos específicos, ya sea en tiempo de compilación o de ejecución. Si es en tiempo de compilación estática, si es en tiempo de ejecución es dinámica y si son variables locales a un grupo de sentencias se denomina automática.

Asignación Particional

La tarea principal del Sistema de Gestión de memoria es cargar los programas en la memoria principal para su ejecución en el procesador.

En casi todos los sistemas multiprogramados modernos, esta tarea requiere un sofisticado esquema llamado memoria virtual, la cual esta basada en el uso de una de dos técnicas básicas: segmentación o paginación.

Existen técnicas más simples que no requieren el uso de la memoria virtual como la partición, partición simple y la segmentación simple.

-Particiones Estáticas:

En la mayoría de los esquemas de gestión de memoria, el sistema operativo ocupa una parte fija de la memoria principal y que el resto de la memoria esta disponible para ser usado por varios procesos. El esquema más sencillo de gestión de la memoria disponible es dividir en regiones con límites fijos.

Tamaño de partición

Una posibilidad es emplear particiones de igual tamaño en este caso, cualquier proceso cuyo tamaño sea menor o igual que el tamaño de la partición puede cargarse en cualquier partición libre.

Las particiones estáticas de igual tamaño plantean dos dificultades

Un programa puede ser demasiado grande para caber en la partición. El programador debe diseñar el programa mediante superposiciones. Cuando se necesita un módulo que no este presente el programa de usuario debe cargar dicho módulo en la partición del programa, superponiéndose a los programas y datos que se encuentren en ella.

El uso de la memoria principal Es ineficiente. Cualquier programa sin importar lo pequeño que sea, ocupara una partición completa.

Este fenómeno, en el que se malgasta el espacio interno de una partición cuando el bloque de datos cargados Es más pequeño que la partición se denomina fragmentación interna.

Algoritmo de Ubicación 

Con particiones del mismo tamaño. Mientras haya alguna partición libre, puede cargarse un proceso en esa partición. Si todas las particiones están ocupadas con procesos que no están listos para ejecutarse, uno de esos procesos debe sacarse para hacer sitio a un nuevo proceso. Cual debe expulsarse Es una decisión de planificación con particiones de distintos tamaños, hay dos manera de asignar los procesos a las particiones. La forma más simple Es asignar cada proceso a la partición más pequeña en la que quepa. En este caso, hace falta una cola de planificación para cada partición.

La ventaja Es que se minimiza la memoria desaprovechada dentro de cada partición.

Una solución seria emplear una única cola para todos los procesos cuando se va a cargar un proceso en la memoria principal se selecciona la partición más pequeña disponible que pueda albergar al proceso. Si todas las particiones están ocupadas se debe tomar una decisión de intercambio.

El uso de particiones de distintos tamaño proporciona flexibilidad a las particiones estáticas, se plantean las siguientes desventajas:

El número de particiones especificadas en el momento de la generación del sistema limita él número de procesar activos en el sistema. Puesto que los tamaños de partición se programa en el momento de la generación del sistema, los trabajos pequeños no hacen un uso eficiente del espacio de las particiones. 

-Particiones Dinámicas: 

Con la partición dinámica, las particiones son variables en número y longitud. Cuando se carga un proceso en la memoria principal, se le asigna exactamente tanta memoria como necesita y no más.

Este método comienza bien, pero desembarca en una situación en la que hay un gran número de guecos pequeños en la memoria. La memoria comienza a estar más fragmentada y su rendimiento decae. Este fenómeno se denomina fragmentación externa y se refiere al hecho que la memoria externa a todas las particiones se fragmenta cada vez más.

Una técnica para vencer la fragmentación externa Es la compactación, el sistema operativo desplaza los procesos para que estén contiguos, de forma que toda la memoria libre quede junta en un bloque. La dificultad de la compactación esta en que Es un procedimiento que consume tiempo, la compactación necesita de renunciación dinámica. Es decir se debe poder mover un programa de una región a otro de la memoria principal sin invalidar la referencia a la memoria del programa.

Algoritmo de Ubicación

Puesto que la compactación de memoria consume tiempo, el diseñador del sistema operativo tiene que decidir como asignar un proceso a memoria. Cuando llega el momento de cargar o traer un proceso a memoria principal, y si hay libre mas de un bloque de memoria de tamaño suficiente, el sistema operativo debe decidir cual asignar.

Los tres algoritmos de ubicación que se pueden considerar son los de mejor ajuste, el del 1º ajuste y el de siguiente ajuste.

El mejor ajuste elige el bloque de tamaño más próximo al solicitado. Aunque cada solicitud de memoria desperdicia siempre la menor cantidad de memoria, el resultado Es que la memoria principal se llena rápidamente de bloques demasiados pequeños como para satisfacer las solicitudes de asignación de memoria, así se debe compactar más frecuentemente.

El primer ajuste comienza recorriendo la memoria desde el principio y escoge el primer bloque disponible que sea suficientemente grande. El siguiente ajuste recorre la memoria desde el lugar de la última ubicación y elige el siguiente bloque disponible que sea suficientemente grande.

Cual de estos métodos Es mejor dependerá de la secuencia exacta de intercambio de procesos que ocurran y del tamaño de estos procesos.

El algoritmo del primer ajuste Es el mejor y el más rápido.

El algoritmo del siguiente ajuste llevara frecuentemente a la asignación de bloques libre al final de la memoria. El resultado Es que el bloque de memoria libre más grande, que suele aparecer al final del espacio de memoria, se divide en fragmentos pequeños.

Algoritmo de Reemplazo

En un sistema multiprogramado con particiones dinámicas, habrá algún momento en el que todos los procesos de la memoria principal estén en estado bloqueado y la memoria sea insuficiente.

Para evitar desaprovechar el tiempo del procesador esperando a que un proceso activo se desbloquee, el sistema operativo expulsara uno de los procesos de la memoria principal para hacer sitio a un proceso listo o nuevo. Por lo tanto, el sistema operativo debe elegir que proceso reemplazar.

No hay comentarios:

Publicar un comentario