Auto reubicación


En la programación de computadoras, un programa de auto-reubicación es un programa que reubica sus propias instrucciones y datos dependientes de la dirección cuando se ejecuta y, por lo tanto, es capaz de cargarse en la memoria en cualquier dirección. [1] [2] En muchos casos, el código de reubicación automática también es una forma de código de modificación automática .

La autorreubicación es similar al proceso de reubicación empleado por el vinculador - cargador cuando un programa se copia desde el almacenamiento externo a la memoria principal; la diferencia es que es el programa cargado en sí mismo y no el cargador en el sistema operativo o shell el que realiza la reubicación.

Una forma de auto-reubicación ocurre cuando un programa copia el código de sus instrucciones de una secuencia de ubicaciones a otra secuencia de ubicaciones dentro de la memoria principal de una sola computadora, y luego transfiere el control del procesador de las instrucciones que se encuentran en las ubicaciones de origen de la memoria. a las instrucciones que se encuentran en las ubicaciones de destino de la memoria. Como tal, los datos sobre los que opera el algoritmo del programa son la secuencia de bytes que definen el programa.

La auto-reubicación estática generalmente ocurre en tiempo de carga (después de que el sistema operativo ha cargado el software y le ha pasado el control, pero aún antes de que finalice su inicialización), a veces también cuando se cambia la configuración del programa en una etapa posterior durante el tiempo de ejecución . [3] [4]

Como ejemplo, la auto-reubicación se emplea a menudo en las primeras etapas de los sistemas operativos de arranque en arquitecturas como IBM PC compatibles , donde los cargadores de arranque de cadena de nivel inferior (como el registro de arranque maestro (MBR), el registro de arranque de volumen (VBR) y etapas de arranque de sistemas operativos como DOS ) se mueven fuera de lugar para cargar la siguiente etapa en la memoria.

Bajo CP / M , el depurador herramienta de depuración dinámico (DDT) de forma dinámica volvió a poner en sí a la parte superior de la memoria disponible a través de la página reubicación límite con el fin de maximizar el área de programa transitorio (TPA) para los programas a ejecutar en el. [5] [6]