Professional Documents
Culture Documents
1.2.5.- Fragmentacin
La fragmentacin es la memoria que queda desperdiciada al usar
los mtodos de gestin de memoria que se vieron en los mtodos anteriores.
Tanto el primer ajuste, como el mejor y el peor producen fragmentacin
externa.
MEMORIA VIRTUAL
PAGINACIN
Hasta ahora, los mtodos que hemos visto de la administracin de la memoria
principal, nos han dejado con un problema: fragmentacin, (huecos en la
memoria que no pueden usarse debido a lo pequeo de su espacio) lo que nos
provoca un desperdicio de memoria principal.
2.1.1.- Tablas de pginas
Cada pgina tiene un nmero que se utiliza como ndice en la tabla de pginas,
lo que da por resultado el nmero del marco correspondiente a esa pgina
virtual. Si el bit presente / ausente es 0, se provoca un sealamiento (trap)
hacia el sistema operativo. Si el bit es 1, el nmero de marco que aparece en la
tabla de pginas se copia en los bits de mayor orden del registro de salida,
junto con el ajuste (offset) de 12 bits, el cual se copia sin modificaciones de la
direccin virtual de entrada. Juntos forman una direccin fsica de 15 bits. El
registro de salida se coloca entonces en el bus de la memoria como la direccin
en la memoria fsica.
Sin embargo hay que enfrentar dos aspectos fundamentales:
de
reemplazo
de
pginas
de
la
segunda
Este algoritmo es una modificacin del FIFO. El algoritmo hace uso del bit de
referencia de la pgina. Cuando una pgina ha sido seleccionada para
reemplazo, se revisa el bit de referencia. Si tiene valor de 0, se procede a
reemplazar la pgina. Si por el contrario, el bit de referencia es 1 se le da a la
pgina una segunda oportunidad.
Contadores: En el caso ms sencillo, se asocia cada entrada tablapgina un campo de tiempo-de-uso y se le agrega al CPU un reloj lgico
o contador. Este reloj es incrementado en cada referencia de memoria.
SEGMENTACIN
Otra opcin para el manejo de la memoria es usar una forma de liberar al
programador de la tarea del control de las tablas en expansin y contraccin,
de la misma forma que la memoria virtual elimina la preocupacin por
organizar el programa en una serie de proyectos.
2.2.1.- Segmentacin pura
La implantacin de la segmentacin difiere del caso de la paginacin en un
sentido esencial: las pginas tienen un tamao fijo y los segmentos no.
Fig. 13. Comparacin de paginacin y segmentacin.
Este fenmeno de fragmentacin externa o checkboarding, desperdicia la
memoria correspondiente a los huecos, pero es fcilmente corregido mediante
el uso de la compactacin. De esta forma los huecos son unificados, generando
as un hueco de tamao suficiente para albergar algn otro segmento ms.
2.2.2.- Segmentacin con paginacin: MULTICS
En el sistema MULTICS, una direccin lgica est formada por un nmero de
segmento de 18-bit y un offset de 16 bit. Aunque este esquema crea un
espacio de direccin de 34-bit, la sobrecarga en la tabla de segmentos es
tolerable; solo se requiere de las suficientes localidades en la tabla de
segmentos como haya segmentos, puesto que no debe haber localidades
vacas.
Fig. 15. Segmentacin paginada en el GE 645 (MULTICS)
Ahora se debe de tener una tabla de pginas individual para cada segmento.
Sin embargo, dado que cada segmento est limitado en tamao por su
Asignacin de memoria
La asignacin de memoria consiste en el proceso de asignar memoria para
propsitos especficos, ya sea en tiempo de compilacin o de ejecucin. Si es
en tiempo de compilacin es esttica, si es en tiempo de ejecucin
es dinmica y si son variables locales a un grupo de sentencias se
denomina automtica.
Asignacin esttica de memoria
La Asignacin esttica de memoria consiste en el proceso de asignar memoria
en tiempo de compilacin antes de que el programa asociado sea ejecutado, a
diferencia de laasignacin dinmica o la automtica donde la memoria se
asigna a medida que se necesita en tiempo de ejecucin.
Asignacin automtica de memoria
Las variables automticas son variables locales a un bloque de sentencias
(subrutina, funcin o procedimiento). Pueden ser asignadas automticamente
en la pila de datoscuando se entra en el bloque de cdigo. Cuando se sale
del bloque, las variables son automticamente desasignadas. 3 Las variables
automticas tendrn un valor sin definir cuando son declaradas, por tanto es
buena prctica de programacin inicializarlas con un valor vlido antes de
usarlas.
Asignacin dinmica de memoria
En ciencia de la computacin, asignacin dinmica de la memoria es la
asignacin de almacenamiento de memoria para utilizacin por parte de un
programa de computador durante el tiempo de ejecucin de ese programa. Es
una manera de distribuir la propiedad de recursos de memoria limitada entre
muchas piezas de cdigo y datos.
Soluciones para los problemas de asignacin
La tarea de satisfacer una peticin de asignacin, la cual conlleva encontrar un
bloque de memoria sin usar de cierto tamao en el heap, es un problema
complicado. Se han propuesto una amplia variedad de soluciones, incluyendo
listas de bloques libres, Paginacin, y Asignacin buddy de memoria.
Asignacin de bloques de tamao fijo
Una solucin es tener una lista enlazada LIFO de bloques de memoria de
tamao fijo. Esto funciona bien para sistemas empotrados simples.
Algoritmo Buddy
Otra solucin es tener un asignador buddy de bloques binarios. En este
sistema, la memoria se asigna desde un gran bloque de memoria que es
tamao potencia de dos. Si el bloque es ms del doble de grande de lo
necesario, se parte en dos. Se selecciona una de las dos mitades, y el proceso