Вы находитесь на странице: 1из 4

Administracin de Memoria

Monoprogramacin
Consiste en tener un solo proceso en la memoria a la vez, mismo que ocupara toda la memoria
hasta que llegue a su fin. Cada usuario se apodera por completo del equipo. Se utilizaba hasta los
aos 60 y se descarto porque cada proceso debe contener su propio manejador de dispositivo por
cada uno que est conectado al equipo.
Se acostumbraba a separar de la sig. manera: SO en RAM en la parte inferior y el programa en la
parte superior. b) SO en ROM en la parte superior y el p de usr debajo. C) manejador IO superior, p
usr medio y SO en RAM. Cada programa de usr se sobrescribe ante la nueva peticin del usuario.
Multiprogramacin de memoria.
La multiprogramacin permite que cualquier proceso pueda ser dividido para un mejor manejo de
la memoria y el procesador.
Un buen ejemplo es la multiprogramacin de particiones fijas. Utilizado por los SOs IBM 360 con
buenos resultados. Es un tcnica sencilla de entender y de aplicar.
La idea consiste en dividir nuestro bloque de memoria en n particiones, normalmente desiguales,
al arranque del sistema. Al presentarse un trabajo, este entrar a una lista de espera para poder
tener acceso a la particin menor con suficiente capacidad para contenerlo. Sin embargo, como
cada particin es fija cada espacio que no se utilice ser desperdiciada hasta que encuentre un
proceso adecuado a su dimensin. Desperdicio de memoria. Otra desventaja se presenta cuando
las listas de espera comienzan a saturarse a pesar de existir una particin de considerables
dimensiones libre.
Una solucin a estos problemas es hacer una sola lista de espera que enve los procesos a cada
una de las diferentes particiones pero as podemos caer en un nuevo desperdicio al ejecutar un
proceso pequeo en una particin de mayores dimensiones. Esto puede ser solucionado por
medio de un algoritmo que verifique la dimensin de los procesos y les asigne la dimensin de
acuerdo a su dimensin, pero este tiende a discriminar a los procesos pequeos ya que solo se
preocupa por asignar procesos.
INTERCAMBIO
La asignacin de particiones fijas resulta ptima en un sistema fijo, donde el tiempo para el uso de
la memoria no sea compartido, siempre y cuando existan los suficientes procesos que mantengan
ocupado al CPU.
En tiempos compartidos esto no resulta ideal ya que normalmente existen mucho ms usuarios
que la capacidad de memoria. Por ello se utiliza un disco para guardar los procesos excedentes.
Con esto se puede entender que es necesario traer los procesos del disco a la memoria central y

regresarlos a su lugar de almacenamiento. A todo este proceso se le llama intercambio o


swapping.
Un ejemplo resulta ser la multiprog con particiones variables. Aqu, el nmero y tamao de los
procesos en memoria es dinmica todo el da. El so se encuentra en la parte inferior de la memoria
y las particiones se van creando conforme van llegando los diferentes procesos y se almacenan en
memoria.
Con algunas particiones en blanco es posible combinar cada una de ellas en una de mayor
dimensin dejando a los procesos lo ms bajo posible en la memoria. A esta tcnica se le conoce
como compactacin de memoria. Sin embargo el tiempo para poder realizar una compactacin
adecuada es demasiado. Por ejemplo en una memoria de 1M toma un segundo esta tcnica.
Cunto sera en una de 1Gb y 1 Tb?
Las particiones variables resultan ptimas cuando los procesos que maneja son fijos y no tienden a
crecer. Pero algunos procesos pueden crecer asignando memoria de manera dinmica en una pila,
como los lenguajes de programacin, y tenemos un problema cada que un proceso intenta crecer.
Si se tenemos una cavidad adyacente vaca no habr problema alguno y la particin crecer. Pero
si tenemos un proceso adyacente se tendr que realizar varios intercambios, tendremos que
esperar, hasta que exista la particin adecuada para dicho proceso. Si un proceso no puede llegar
a memoria despus de un tiempo, ste es eliminado.
Una posible solucin sera asignar un espacio, adicional al proceso en ejecucin, para su posible
crecimiento. Aqu debemos tomar en cuenta que al momento de regresar al disco solo se enviara
la parte que realmente se ha utilizado y dejar atrs al espacio posible de crecimiento.
Normalmente los procesos poseen dos segmentos de crecimiento. Uno para datos adicionales al
proceso y otro para la pila que llega a controlar algunas variables, normalmente en los lenguajes
de programacin. El espacio para los datos se coloca en la parte superior del proceso y la pila para
las posibles variables en crecimiento en la parte superior del segmento de posible crecimiento.
Ambos crecen hacia el mismo punto, uno hacia arriba y el otro hacia abajo. Si ste se termina,
algn proceso deber de cambiar de particin a una adecuada, regresar a disco o simplemente
eliminarse.
En trminos generales existen tres diferentes maneras de controlar el uso de la memoria: por
medio de un mapa de bits, listas y sistemas compaeros.
MAPA DE BITS
Aqu la memoria se divide en unidades de asignacin de cualquier tamao. Cada unidad
representar un mapa de bits. 0 desocupado y 1 con espacio utilizado. Mientras ms pequea sea
la unidad de asignacin ms grande ser el mapa de bits. Una memoria de 32n bits utilizara n bits
dentro del mapa lo que se reflejar como el 3% de la memoria.

Aqu el problema surge cuando se intente ubicar un proceso dentro del mapa de bits ya que
deber de buscar una localidad apropiada dentro de todo el mapa lo que termina en prdida de
tiempo, por eso actualmente este tcnica no es utilizada.
LISTAS ENLAZADAS
Otra manera es asignar los procesos y huecos en la memoria por medio de diferentes segmentos
asociados. Este segmento se dividir en tres. La primera casilla se utilizar para indicar si se trata
de un proceso o un hueco en memoria, el segundo indica donde inicia el segmento en memoria y
finalmente el tercero definir el tamao del segmento.
La ventaja de este ordenamiento de que cuando un proceso termina o se intercambia, la
actualizacin de la lista es directa. Normalmente cada proceso posee 2 vecinos. A excepcin de los
procesos inciales y finales de cada bloque de memoria. Por consiguiente al momento de revisar la
lista en busca de localidades vacas se debe verificar el estado de ambos vecinos para poder hacer
una compactacin de memoria si es posible.
En una lista enlazada sencilla la lectura del bloque completo de memoria se realiza en un solo
sentido. Lo que con considerables dimensiones esto comienza a ser un retraso de tiempo. Para
ello se recomienda una lista doblemente enlazada para que al momento de llegar a un bloque no
sea necesario verificar el estado de ambos vecinos hasta despus de una segunda vuelta.
Existen una gran variedad de algoritmos que pueden ser utilizados en una lista sencilla para poder
intercambiar o alojar cualquier nuevo proceso. Estos son:
Primer Ajuste.-Ubica una localidad de dimensiones adecuadas. Divide el segmento en dos: uno
para el proceso y otro para su posible crecimiento, a menos de que sea de dimensiones exactas. Es
considerado de los ms rpidos por que busca lo menos posible dentro de la lista.
Siguiente Ajuste.- La nica diferencia al anterior algoritmo es que controla su ubicacin al
momento de asignar un proceso en memoria para que a la siguiente bsqueda comience desde
ese lugar. A diferencia del primer ajuste que lo hace desde el inicio del bloque de memoria.
Mejor Ajuste. Se considera ccon un rendimiento menor al anterior ajuste pero presenta la variable
de que busca la cavidad ms adecuada a la dimensin del proceso dejando a un lado su posible
espacio de crecimiento.
Lo curioso de comparar el primer ajuste con el mejor ajuste es el desperdicio de memoria, que
tiende a ser superior en el mejor ajuste al crear una mayor cantidad de particiones pequeas con
lo que satura la memoria.
EL Que Peor se Ajusta. A diferencia del anterior buscar particiones mucho ms grandes para no
tener que saturar la memoria.
Ajuste Rpido. Su considerable deferencia se basa en que maneja listas separadas de algunos de
los tamaos ms comunes a ser solicitados.

Sistema Compaero.
Es un algoritmo que administra la memoria utilizando el sistema binario para optimizar el
direccionamiento de las cavidades adyacentes cuando un proceso termina o es intercambiado.
Este consiste en crear bloques de memoria de 1M de capacidad que sern divididos en dos,
llamados compaeros, de 512. El primero iniciar en el bit 0k y el segundo en el bit 512k. A su
vez, el primero se divide en otros dos de 256k, en 0k y 256k y estos a su vez en dos de 128k.
Digamos que llega un proceso de 70k, A. Para poder ser asignado en memoria es necesario que
se almacene en un compartimiento par. Como no es posible que sea asignado a una cavidad de
64k se le asigna la primer cavidad de 128k, de los cuales solo sern ocupados 70. Posteriormente
llega un bloque de 35k y se redondea en 64k, pero como no hay bloques de 64k creados hasta el
momento, el bloque compaero siguiente es divido en dos de 64k, al siguiente bloque se le
asigna entonces el proceso B.
Una tercera peticin llega con un requerimiento de 80k. Como la adyacente no posee espacio
suficiente toma una vez ms a la particin compaero que estaba previamente dividida en 128k.
Quedando el diagrama de la siguiente manera.
Ahora uno de los procesos deja de utilizar su cavidad en la memoria. El primero en ser liberado
es el bloque A de 70k. En ese momento llega un bloque que requiere 60k, con esto se divide el
bloque de 128 en dos de 64, ste bloque se asigna en la cavidad 0 de todo el bloque de memoria.
Quedando atrapado una cavidad de 64k entre D y B y uno mas entre B y C. Inmediatamente
despus se libera el bloque B, con lo que queda libre una cavidad de 128, que previamente haba
sido de dos de 64. Una vez liberado el bloque D, podemos reconstruir el bloque, teniendo como
resultado un bloque de 256k en la direccin 0, que estar en espera que se libere la cavidad C
para as retomar el bloque nico de 1M.
Los sistemas compaeros tienen una ventaja sobre otro tipo de algoritmos. La ventaja es que
cuando se libera un bloque de tamao 2kbytes, el administrador de la memoria tiene que buscar
una cavidad libre del mismo tamao para ver si es posible una unin. Con otros algoritmos en los
que se permite una divisin arbitraria, todas las listas de cavidades deben de ser rastreadas lo
que termina siendo consumo de tiempo de memoria. Pero tambin resulta ineficiente en la
utilizacin de la memoria al asignar espacios de memoria que no corresponden al proceso que se
est ejecutando.

Вам также может понравиться