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

Asignacion dinamico de memoria


Enviado por   •  20 de Abril de 2016  •  Tutorial  •  4.439 Palabras (18 Páginas)  •  221 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).

...

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