¿Todos los so gestionan la memoria en bloques?

Enviado por Programa Chuletas y clasificado en Informática y Telecomunicaciones

Escrito el en español con un tamaño de 2,62 KB

8.5 Memoria con reserva dinámica - 8.5.1 Carácterísticas generales

Se introdujo para manejar estructuras dinámicas: listas, árboles, grafos, etc. La programación orientada a objetos hace un uso intensivo de esta memoria, ya que todo objeto se almacena en el montón.

Las operaciones básicas sobre el montón son el alojamiento y el desalojo:
Malloc/free en lenguajes orientados a proceso o new/dispose en lenguajes orientados a objetos. Las operaciones de alojamiento y desalojo se desarrollan en una librería especial que añade el compilador a todos los programas y que se encarga de la gestión de la memoria dinámica.

El alojamiento consiste en asignar un bloque de memoria de un tamaño dado. El desalojo consiste en liberar un bloque de memoria, indicando que dicho espacio puede ser reutilizado en nuevos alojamientos. La gestión del montón requiere de técnicas adecuadas que optimicen el espacio que se ocupa y el tiempo de ejecución de las operaciones de alojo y desalojo.

8.5.2 Bloques de longitud fija

El montón se gestiona como una lista enlazada de bloques del mismo tamaño. Sólo se almacena el puntero al primer bloque. El alojamiento consiste en asignar el primer bloque. El desalojo consiste en colocar el bloque liberado como primer bloque.


8.5.3 Montón con estructura simple:


El montón se gestiona como una lista enlazada de bloques de distinto tamaño. Sólo se almacena el puntero al primer bloque. La estructura de cada bloque es la siguiente:

Alojamiento


Estrategia del primer bloque: se recorre la lista hasta encontrar un bloque de tamaño mayor o igual a la memoria solicitada. Se divide el bloque en dos trozos: el primero se devuelve como memoria asignada y el segundo se almacena como un nuevo bloque de menor tamaño.

Estrategia del mejor bloque


Se recorre la lista hasta encontrar el bloque de tamaño más parecido a la memoria solicitada. Esta estrategia genera una alta fragmentación, por lo que no se suele utilizar.

Estrategia del peor bloque

Se asigna siempre el bloque de mayor tamaño. El problema es que elimina los bloques grandes que pueden necesitarse para objetos grandes.

Desalojo


Asignar el bloque como el primero de la lista. Esto tiende a fragmentar mucho los bloques ya que hace difícil la fusión de bloques contiguos.Mantener una lista ordenada por posición de memoria. Exige insertar el bloque liberado en su posición (es más lento), pero permite fundir bloques rápidamente.

Entradas relacionadas: