Estrategias para la Administración de Memoria
Opciones
Sin Intercambio
En los sistemas de memoria sin intercambio, la idea básica consiste en cargar el programa a ejecutar en algún lugar de la memoria principal, donde permanece hasta que finaliza su ejecución, momento en el que abandona el espacio de memoria utilizado.
- Monoprogramacion: El esquema de memoria mas simple consiste en mantener la memoria ocupada con un único proceso. cuando se carga un programa que se hace cargo de toda la memoria y del control completo de la maquina, se dice que el programa se carga sobre una maquina desnuda, es decir, una maquina en la que solamente se ofrece el hardware puro, sin ninguna ayuda software que lo recubra. La tecnica actual mas utilizada en los pequeños ordenadores es en la que la memoria esta ocupada por el sistema operativo, que suele estar en RAM, y por el cargador inicial del sistema operativo(IPL) y los drivers de dispositivos, que suelen estar en memoria ROM. el resto de la memoria RAM queda disponible como área de usuario
- Multiprogramacion con particiones fijas: Ya que en general, es deseable que haya varios procesos de usuario residiendo en memoria al mismo tiempo, se hace necesario considerar el problema de como asignar memoria disponible a varios de los procesos que están en la cola de espera para ser traídos a memoria principal. Lo mas inmediato y simple es dividir la memoria en n Particiones, de tal forma que en cada partición se mete un proceso, donde permanece hasta que finaliza su ejecución. una vez terminado el proceso, la partición queda libe para acoger un nuevo trabajo. con la llegada de la multiprogramacion y este esquema de memoria aparecen algunos problemas y cuestiones que deben solventarse, como la planificación de procesos a largo plazo, la determinación del numero y tamaño de las particiones, la ubicación de los programas y la protección de las particiones de memoria.

Con Intercambio
En un sistema batch, la organización de la memoria en particiones fijas resulta simple y efectiva. siempre que se puedan mantener en memoria suficientes trabajos como para mantener la CPU ocupada, no hay razón para complicar la organización. en cambio, en un sistema de tiempo compartido la situación es diferente, pues normalmente hay mas usuarios que memoria para contener sus procesos, por lo que se hace necesario llevar a disco los procesos en exceso. en cualquier caso, debe quedar claro que para que pase a ejecución algunos de estos procesos que se han llevado a disco, antes hay que traerlos a memoria. cuando al proceso en ejecución se le acabe su porción de tiempo, es posible que se le vuelva a llevar a memoria secundaria para dejar espacio al proceso que se haya seleccionado el planificador. al trasiego de procesos que se llevan de memoria a disco y de disco a memoria se le denomina intercambio (Swapping).
- Multiprogramacion con particiones variables: En principio, un sistema de intercambio podría estar basado en particiones de tamaño fijo, de tal forma que cuando un proceso queda bloqueado en espera, se le puede mover al disco y traer otro a la partición que queda libre. pero este sistema no es aconsejable cuando se dispone de poca memoria principal, pues los programas pequeños desperdician mucha memoria cuando ocupan particiones grandes (fragmentacion interna). otro enfoque mejor es el basado en particiones de tamaño variable, al usar este método el numero y tamaño de los procesos cargados en memoria varia con el tiempo, los procesos van y vienen al igual que varia el tamaño y las direcciones constantemente.
- Memoria Virtual: En las distintas estrategias de gestión de memoria vistas hasta ahora, todas tienen un objetivo común: mantener muchos procesos en memoria simultáneamente para permitir la multiprogramacion y en cualquier caso, siempre hemos visto que se requiere que un proceso este completamente en memoria principal antes de que se pueda ejecutar.
Sabemos que para ejecutar las instrucciones de un programa, estas, al igual que sus operandos, tienen que estar en memoria principal, esta imposición parece necesaria y razonable, pero por desgracia limita el tamaño de un programa al espacio de memoria física RAM. sin embargo, el examen de los programas reales nos muestra que no es necesario que el programa entero permanezca siempre en memoria.
La memoria virtual es una tecnica que permite la ejecución de procesos que pueden no estar completamente en memoria principal. La ventaja principal de este esquema es que los programas pueden ser mayores que la memoria principal. esto se debe a que se crea una abstracción de la memoria principal, separando la memoria lógica, tal como la ve el usuario, de la memoria física de la que realmente se dispone. esta tecnica libera al programador de las preocupaciones concernientes a las limitaciones e la memoria.
- Paginación: La paginación surge como un intento de paliar estos problemas sofisticando apreciablemente el hardware de gestión de memoria del procesador y aumentado considerablemente la cantidad de información de traducción que se almacena por cada proceso. El mapa de memoria de cada proceso se considera dividido en páginas. A su vez, la memoria principal del sistema se considera dividida en zonas del mismo tamaño que se denominan marcos de página. Un marco de página contendrá en un determinado instante una página de memoria de un proceso
- Segmentación: Con la paginación, la MMU no sabe nada sobre las distintas regiones de los procesos. Sólo entiende de páginas. El sistema operativo debe guardar para cada proceso una tabla de regiones que especifique que paginas pertenecen a cada región. esto tiene dos desventajas:
- Para crear una región hay que rellenar las entradas de las paginas pertenecientes a la región con las mismas características.
- Para compartir una región, hay que hacer que las entradas correspondientes de os procesos apunten a los mismos marcos.

El usar la memoria para cargar procesos sobre los cuales trabajaremos puede sobrecargarse de información y no realizar las funciones necesarias malgastando el uso adecuado de la memoria es allí donde entran las técnicas de gestión de memoria las cuales permiten el mejor uso de la memoria ya sea por particiones multiprogramacion, entre otros procesos como son mencionados anteriormente.
ResponderEliminar