Asignacion dinamico de memoria
Enviado por Jerry • 31 de Enero de 2018 • 2.199 Palabras (9 Páginas) • 370 Visitas
...
[pic 3][pic 4][pic 5][pic 6][pic 7][pic 8]
ADMINISTRADOR DE LA MEMORIA
Tiene dos funciones las cuales son
Asignar memoria: en este módulo se decide que bloque de posiciones contiguas de memoria se tiene que asignar ante un requerimiento de un programa.
Existen básicamente 2 mecanismos para llevar a cabo esta función:
- Mecanismo del primero que cumple o FIRST FIT
- Mecanismo del mejor que cumple o BEST FIT; este mecanismo tiene menos desperdicio de memoria.
Primer ajuste- (First Fit)Consiste en asignar el primer espacio disponible quetenga un espacio suficiente para almacenar elprograma. Las dos principales desventajas son su altodesperdicio interno, y el elevado uso de las primerasposiciones de memoria. Este último inconvenienterepercute negativamente en la circuitería, debido a quese produce un mayor desgaste en dichas posiciones.
Algoritmo de administración y ajuste de memoriaMejor ajuste –(Best Fit)
. Mejor ajuste- (Best Fit)Consiste en asignarle al proceso al espacio dememoria con menor ajuste interno, el espacio vacioal cual se le es asignado el proceso deja menosespacio sin utilizarSu mayor inconveniente es su orden de complejidaddebido a que hay que recorrer todo el mapa de bits otoda la lista de controluna posible solución seria usar una lista de controlencadenada que mantenga los espacios vaciosordenado por tamaño crecienteOtro problema es la fragmentación externa, debidoa que se asigna el menor espacio vacio posible, elespacio sobrante será del menor tamaño posible loque da lugar a huecos de tamaño normalmenteinsuficiente para contener programas
El primer ajuste, se conoce como el método de asignar el primer agujero en memoria que se encuentre que sea lo suficientemente grande como para alojar el proceso entrante, la exploración de memoria puede hacerse desde el inicio de la memoria o bien donde terminó la exploración anterior y la exploración se detiene en cuanto se encuentre un hueco de memoria con la cantidad de memoria igual o superior al espacio requerido por el proceso. [1]
Como se puede observar en la imagen, el mejor ajuste es un método de asignación de memoria en que se busca el bloque de memoria disponible más pequeño pero que tenga espacio suficiente para el proceso, pero este método puede generar un agujero de memoria más pequeño que en los demás métodos. [1]
- First-fit: consiste en recorrer la lista secuencialmente hasta hallar el primer fragmento donde quepa la memoria solicitada, el trozo encontrado se parte en dos para entregar sólo lo que se necesita
- Best-fit: Consiste en recorrer la lista secuencial y completamente hasta hallar el fragmento donde quepa la memoria solicitada y se desperdicie el menor espacio posible, el trozo encontrado se parte en dos para entregar sólo lo que se necesita
El método del FIRST FIT presenta dos problemas:
- después de un cierto tiempo de ejecución des este método se ha comprobado como provoca la existencia de muchos bloques de memoria pequeños que nunca podrán ser asignados. Este problema se conoce con el nombre de FRAGMENTACIÓN EXTERNA. Otro inconveniente se denomina PROBLEMA DEL FRACCIONAMIENTO DE LA MEMORIA, al existir muchos bloques se pierde mucho tiempo durante la asignación de requerimientos, porque el tiempo de asignación es proporcional a la cantidad de nodos que hay que recorrer.
- Es que la búsqueda siempre se inicia desde el comienzo de la lista al recorrer la lista del inicio debemos examinar muchos nodos, debido a que esos nodos serán generalmente pequeños.
Ambos problemas están íntimamente relacionados.
¿Cómo resuelvo el problema de la fragmentación externa? Para ello se determina una constante de satisfacción E para solucionar ese problema. La cuestión sería si el tamaño del bloque es menor al requerimiento y el desperdicio que se produce es menor al valor de esa constante de satisfacción E entonces entrega todo el bloque que cumple el requerimiento. Esa cte. se determina con anterioridad.
Ejemplo: si tengo un bloque de 1.000 palabras y mi cte. de satisfacción E = 100, supongamos que mi requerimiento es de 950 palabras, entonces entrego todo el bloque. Donde el desperdicio interno es de 50 palabras se va a denominar FRAGMENTACION INTERNA.
La cte de satisfacción E va a variar de acuerdo a los programas que se van a ejecutar.
Mi situación de memoria sería la siguiente:
[pic 9][pic 10]
[pic 11]
[pic 12]
FRAGMENTACION INTERNA[pic 13]
El otro problema se solucionaría implementando la lista de mis nodos disponibles como una lista circular y que el recorrido de esa lista se inicie ante cada requerimiento a partir del último que ha sido asignado.
Compactación: la única manera que sabemos cuando vamos a compactar es cuando se cumpla dos condiciones:
- Establece que si el nodo, bloque disponible izquierdo adyacente está libre entonces voy a poder compactar a izquierda. Ese bloque izquierdo va a finalizar en la dirección P-1, entonces si finaliza en la dirección P-1 y esta libre realizo la compactación por izquierda.
- Analizar si el bloque a la derecha está libre y ese nodo de derecha libre tiene que tener como dirección de inicio P+N entonces voy a compactar a derecha.
Ejemplo: P = dirección del bloque que se devuelve.
N = es el tamaño del bloque que se devuelve.
999 P=1.000 1.500 [pic 15][pic 14]
Para satisfacer estos requerimientos existen dos métodos que me permiten determinar cuando compactar o no.
METODO Nº 1: Método de la Etiqueta Libre. La estructura de los nodos varía si tenemos que:
- cuando se trata de nodos disponibles tenemos una estructura en donde la primera palabra tienen los campos PA, MARCA, TAMAÑO, y PS. El campo MARCA es siempre iguala cero, eso indica que es un nodo disponible. La última palabra tendrá dos campo: uno MARCA y DIR.I.B. me indica la dirección
...