ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Asignacion dinamico de memoria

Julio MazzaTutorial20 de Abril de 2016

4.439 Palabras (18 Páginas)259 Visitas

Página 1 de 18

ASIGNACION DINAMICA DE LA MEMORIA

Una de las funciones más importantes que tienen los sistemas operativos es la administración de la memoria. Esta tarea se complica cuando se habla de sistemas de tiempo compartido o cuando varios procesos compartían en un momento determinado el control del procesador central. Es por eso que un módulo del Sistema operativo, se encarga de la tarea de administrar la memoria; este módulo se llama Administrador de Memoria y tiene que cumplir dos tareas o funciones, las cuales son:

  1. asignar memoria ante los requerimientos de los procesos.
  2. Liberar memoria cuando esos procesos han terminado de ejecutar sus funciones.

Para llevar a cabo estas dos tareas, existen un conjunto de mecanismos o de técnicas que tienen como propósito hacer más sencillas esas tareas.

La administración de la memoria se complica con la presencia de varios procesos ya que al haber muchos procesos, esto me determina que cada proceso tiene tamaños distintos y tiempos de ejecución distintos, en un momento determinado el administrador de la memoria tiene que llevar esas dos tareas de forma tal que optimice el manejo de los requerimientos.

Ejemplo: consideremos que al inicio del día tenemos la memoria libre/disponible y su tamaño es de 100.000 palabras. Supongamos que los requerimientos en un momento determinado son de 5 programas. Para asignar espacio de memoria a esos programas no necesitamos conocer los tiempos de ejecución solo necesitamos conocer el tamaño de cada programa. Veamos:

[pic 1]

PROGRAMA

TAMAÑO

P1

10.000 palabras

P2

15.000 palabras

P3

6.000 palabras

P4

8.000 palabras

P5

20.000 palabras

Si consideramos la suma de todos los tamaños de esos 5 programas podemos observar que todos entran en memoria. Entonces la tarea de  asignación de requerimientos en un momento determinado estará dividida en:

  • Un bloque de 10.000 palabras para que entre el programa 1.
  • Un bloque de 15.000 palabras para que entre el programa 2
  • ……………
  • Un bloque de 20.000 palabras para que entre el programa 5.

Esquemáticamente sería:

P1

P2

P3

P4

P5

LIBRE

10.000         15.000           6.000             8.000           20.000

Además tenemos un espacio libre que puede ser ocupado ante cualquier requerimiento, ese espacio libre es de 41.000 palabras.

Ahora supongamos, que en otro momento se terminan de ejecutar el P2 y P4 y al terminar su ejecución liberan esos bloques que les hemos asignado. Entonces tendremos una situación de memoria de la siguiente manera:

                       10.001            25.000                           31.001            39.000                             59.001                                                100.000

P1

P3

P5

LIBRE

1                10.000                        25.001            31.000                              39.001          59.000

Esos bloques que se han liberado van a quedar disponibles ante un nuevo requerimiento. Tenemos 3 bloques libres, los cuales no se encuentran en posiciones contiguas de memoria, por lo tanto no pueden realizar lo que se llama Compactación de la memoria, es decir, no se pueden unir para poder formar un solo bloque libre. Se puede llevar a cabo la compactación cuando se ha liberado un bloque y los bloques o el bloque adyacente está libre en ese caso se unirán formando un solo bloque libre y su tamaño es la suma de los tamaños de los bloques que se han compactado.

Supongamos otra situación: si ahora el P3 termina su ejecución y libera un bloque de 6.000 palabras, como sus bloques adyacentes están libres, se arma un solo bloque libre. Veamos:

                       10.001                                                                        39.000                             59.001                                                100.000

P1

P5

LIBRE

1                10.000                                                                                        39.001          59.000

                           TAMAÑO = 15.000 + 6.000 + 8.000[pic 2]

Conclusión: para lograr un manejo eficiente de bloques libres el S.O. utiliza listas encadenadas, las cuales pueden ser simples o encadenadas dobles; depende del mecanismo a utilizarse. El formato de cada nodo es de contar con el campo puntero y el campo tamaño, este campo me indica el tamaño del bloque libre.

TAMAÑO

PUNTERO

Si hacemos una representación de los bloques libres del ejemplo anterior, implementado listas simples encadenadas, tendremos 3 nodos. Estos nodos están ordenados ascendentemente por las direcciones de inicio de esos bloques. (Se implementa esta forma de ordenación para facilitar la compactación, si hubiésemos ordenado por tamaño del bloque, no podríamos compactar tan fácilmente debido a que podremos tener distintas direcciones y por lo tanto no serán consecutivas).

[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:

  1. Mecanismo del primero que cumple o FIRST FIT
  2. 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:

  1. 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.
  2. 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.

...

Descargar como (para miembros actualizados) txt (16 Kb) pdf (264 Kb) docx (56 Kb)
Leer 17 páginas más »
Disponible sólo en Clubensayos.com