Asignación de memoria contigua

Definición: ¿Qué significa la asignación de memoria contigua?

La asignación de memoria contigua es un modelo clásico de asignación de memoria. Aquí, un sistema asigna bloques de memoria consecutivos (es decir, bloques de memoria que tienen direcciones consecutivas) a un proceso.

La asignación de memoria contigua es uno de los métodos de asignación de memoria más antiguos. Así es como funciona: cuando un proceso necesita ejecutarse, el proceso solicita memoria. El tamaño del proceso se compara con la cantidad de memoria principal contigua disponible para ejecutar el proceso.

Si se encuentra suficiente memoria contigua, la memoria se asigna y el proceso comienza su ejecución. De lo contrario, el proceso se agrega a una cola de procesos en espera hasta que haya suficiente memoria contigua libre disponible.

Techinfo explica la asignación de memoria contigua

La asignación de memoria contigua se puede implementar en los sistemas operativos con la ayuda de dos registros, conocidos como registros base y límite.

Cuando un proceso se está ejecutando en la memoria principal, su registro base contiene la dirección de inicio de la ubicación de la memoria donde se está ejecutando el proceso, mientras que la cantidad de bytes consumidos por el proceso se almacena en el registro de límite.

Un proceso no se refiere directamente a la dirección real de una ubicación de memoria correspondiente. En cambio, usa una dirección relativa con respecto a su registro base. Todas las direcciones referidas por un programa se consideran direcciones virtuales. La CPU genera la dirección lógica o virtual, que se convierte en una dirección real con la ayuda de la unidad de gestión de memoria (MMU).

La MMU utiliza el registro de direcciones base para la traducción de direcciones. Por tanto, una dirección física se calcula de la siguiente manera:

Dirección física = Dirección de registro base + Dirección lógica / Dirección virtual

La dirección de cualquier ubicación de memoria a la que hace referencia un proceso se verifica para asegurarse de que no se refiera a una dirección de un proceso vecino. Esta seguridad de procesamiento es manejada por el sistema operativo subyacente.

Beneficios y desventajas de la asignación de memoria contigua

Otra forma de entender la asignación de memoria continua es contrastarla con su método opuesto: asignación de memoria no contigua. En la asignación de memoria no contigua, la memoria no tiene que asignarse en bloques de direcciones contiguos.

A diferencia de la asignación de memoria no contigua, la asignación de memoria contigua tiene algunos beneficios distintos. Tiende a ser más rápido de ejecutar, más fácil de manejar para el sistema operativo y, a menudo, implica menos gastos generales.

Sin embargo, también existen inconvenientes en la asignación de memoria contigua. Uno de los principales es que la memoria se puede desperdiciar de esta manera, si no se utilizan las cantidades más pequeñas de memoria debido a la necesidad de bloques de memoria contiguos. Además, los procesos pueden esperar más tiempo para la ejecución, porque el bloque contiguo no es fácilmente accesible.

Asignación de pila y montón

La asignación de memoria contigua también es interesante en el contexto de varias técnicas de asignación de memoria. Por ejemplo, los expertos a menudo contrastan dos tipos de asignación de memoria conocidos como "asignación de pila" y "asignación de montón".

En la asignación de pila, la asignación de memoria está preestablecida e implementada durante la compilación, donde la asignación de montón se realiza más tarde en tiempo de ejecución.

Es importante tener en cuenta que la asignación de la pila a menudo toma la forma de asignación de memoria contigua, donde la asignación de memoria se asigna en bloques. Por el contrario, en la asignación de montones, la asignación de memoria contigua es difícil, porque el sistema tiene que encontrar, no solo memoria suficiente, sino también memoria que esté en un bloque contiguo lo suficientemente grande. Como resultado, la asignación de montón es a menudo una asignación de memoria no contigua.

Los expertos también hablan sobre métodos de asignación de memoria estáticos y dinámicos, y cómo implementar aquellos que utilizan métodos de asignación de memoria contiguos o no contiguos.