Técnicas de asignación de memoria | Asignación de direcciones virtuales a direcciones físicas – Part 2

Requisito previo: requisitos del sistema de gestión de memoria , dirección lógica y física

La CPU siempre genera direcciones para la memoria secundaria, es decir, direcciones lógicas. Pero queremos acceder a la memoria principal, por lo que necesitamos la traducción de la dirección de la dirección lógica a la dirección física.

  1. Asignación de memoria contigua
  2. Asignación de memoria no contigua 
  1. Esquema de partición fija
  2. Esquema de partición variable.

Se utilizan diferentes métodos de asignación de particiones en las asignaciones de memoria contigua:

  1. primer ajuste
  2. Mejor ajuste 
  3. peor ajuste
  4. Siguiente ajuste

MMU (Unidad de gestión de memoria):
la asignación de tiempo de ejecución entre la dirección virtual y la dirección física se realiza mediante un dispositivo de hardware conocido como MMU.
En la administración de memoria, el sistema operativo manejará los procesos y moverá los procesos entre el disco y la memoria para su ejecución. Realiza un seguimiento de la memoria disponible y utilizada.

esquema MMU:

 CPU------- MMU------Memory 
esquema MMU

Reubicación dinámica utilizando un registro de reubicación.

  1. La CPU generará una dirección lógica, por ejemplo: 346
  2. MMU generará un registro de reubicación (registro base) por ejemplo: 14000
  3. En la memoria, se encuentra la dirección física, por ejemplo: (346+14000= 14346)

El valor en el registro de reubicación se agrega a cada dirección generada por un proceso de usuario en el momento en que la dirección se envía a la memoria. El programa de usuario nunca ve las direcciones físicas reales. El programa puede crear un puntero a la ubicación 346, almacenarlo en la memoria, manipularlo y compararlo con otras direcciones, todo como el número 346. 
El programa de usuario genera solo direcciones lógicas. Sin embargo, estas direcciones lógicas deben asignarse a direcciones físicas antes de que se utilicen. 

Vinculación de direcciones: la vinculación
de direcciones es el proceso de asignación de un espacio de direcciones a otro espacio de direcciones. La dirección lógica es una dirección generada por la CPU durante la ejecución, mientras que la dirección física se refiere a la ubicación en la unidad de memoria (la que se carga en la memoria). La dirección lógica es traducida por la MMU o la unidad de traducción de direcciones en particular. El resultado de este proceso es la dirección física adecuada o la ubicación del código/datos en la RAM.

Un enlace de dirección se puede hacer de tres maneras diferentes:

Tiempo de compilación: 
si sabe que durante el tiempo de compilación, donde el proceso residirá en la memoria, se genera una dirección absoluta. es decir, la dirección física está incrustada en el ejecutable del programa durante la compilación. La carga del ejecutable como proceso en memoria es muy rápida. Pero si el espacio de direcciones generado está ocupado por otros procesos, el programa falla y es necesario volver a compilar el programa para cambiar el espacio de direcciones.

Tiempo de carga: 
si no se sabe en el momento de la compilación dónde residirá el proceso, se generará una dirección reubicable. El cargador traduce la dirección reubicable a una dirección absoluta. El cargador agrega la dirección base del proceso en la memoria principal a todas las direcciones lógicas para generar una dirección absoluta. En esto, si la dirección base del proceso cambia, entonces necesitamos recargar el proceso nuevamente.

Tiempo de ejecución: 
las instrucciones están en la memoria y están siendo procesadas por la CPU. Se puede asignar y/o desasignar memoria adicional en este momento. Esto se usa si un proceso se puede mover de una memoria a otra durante la ejecución (enlace dinámico: enlace que se realiza durante la carga o el tiempo de ejecución). ej. – Compactación.

    registro básico –

    El registro de límite verifica primero la dirección lógica generada por la CPU. Si el valor de la dirección lógica generada es menor que el valor del registro de límite, la dirección base almacenada en el registro de reubicación se agrega a la dirección lógica para obtener la dirección física de la ubicación de la memoria.
    Si el valor de la dirección lógica es mayor que el registro de límite, la CPU entra en el sistema operativo y el sistema operativo finaliza el programa con un error fatal.
     

    En la asignación de memoria no contigua, los procesos se pueden asignar en cualquier lugar del espacio disponible. La traducción de direcciones en la asignación de memoria no contigua es difícil.
    Existen varias técnicas utilizadas para la traducción de direcciones en la asignación de memoria no contigua, como en estas técnicas se requieren diferentes estructuras de datos y soporte de hardware como TLB.

    Publicación traducida automáticamente

    Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

    Deja una respuesta

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *