Definición


Debido a que esta ubicación sucede en run-time y debido a que se puede mover el address space incluso una vez que el proceso empezó a ejecutarse la técnica habitualmente se refiere como realocación dinámica.

Donde la idea es usar dos registros de hardware dentro de cada cpu:

  • Registro base
  • Registro límite o segmento

Este par base-limite va a permitir que el address space pueda ser ubicado en cualquier lugar deseado de la memoria física, y se hará mientras el sistema operativo se asegura que el proceso solo pueda acceder a su address space

En esta configuración, cada programa es escrito y compilado como si fuera cargado en la dirección física 0. A su vez cuando se inicia la ejecución del programa el OS decide en que lugar va a carga el mismo y para hacerlo setea el registro base en un determinado valor.

Registro Base


Algunas cosas interesantes pasan cuando el proceso se esta ejecutando. A partir de ahora cuando cualquier referencia es generada por el proceso es traducida por el procesador de la siguiente manera

óíó

Cada referencia de memoria generada por el procesador es una dirección virtual. El hardware cada vez que se hace referencia a esta dirección tiene que sumar el contenido del registro base y su resultado es la dirección física que tiene que ser utilizada en la memoria del sistema

Registro de Segmento


El registro de segmento está allí para ayudar con la protección. Específicamente, el procesador antes que hacer nada va a checkear que la referencia a memoria este dentro de los límites del address space para asegurarse que la misma sea legal.

Si un proceso genera una dirección virtual que es mayor que los límites o una dirección que sea negativa, la CPU va a generar una excepción y el proceso va a terminarse.

El punto es que los límites están ahí para asegurarse que todas las direcciones generadas por el proceso sean legales y estén dentro del límite del mismo

Este registro puede ser definido de dos formas

  • Este registro mantiene el tamaño del address space entonces el hardware chequea la dirección virtual contra el registro de segmento, sumándole primero el registro de base
  • El registro de segmento almacena la dirección física del fin del espacio de direcciones