Cargas Relocalizables
Enviado por albertfredic • 8 de Enero de 2014 • 430 Palabras (2 Páginas) • 465 Visitas
El Proceso De Carga Re localizable
En la relocalización se establece la correspondencia entre las direcciones usadas en el programa y direcciones físicas cada vez que se utilizan durante la ejecución del programa. Las direcciones lógicas generadas por el ensamblador y el enlazador no se alteran durante la carga. Comenzaremos por ver un sencillo método en el cuál el programa se carga en posiciones contiguas de la memoria; es decir el programa no está disperso por la memoria. En la siguiente figura se presenta un cargador sencillo que puede usarse con la relocalización dinámica. En este caso el cargador lee encabezado del archivo ejecutable y determina la cantidad de espacio necesaria para el programa. Después asigna espacio suficiente para el programa y copia el archivo ejecutable a memoria. Cuando se carga el programa en la memoria, el cargador establece la correspondencia necesaria para el programa, pasando la dirección de carga y el tamaño v del programa a una rutina llamada establecer-correspondencia. Al leer este código observe que la función de carga devuelve un entero sin signo en lugar de un apuntador. Esto refleja el hecho de que la dirección inicial es una dirección lógica y física.
Pseudocódigo para un cargador sencillo (re localizable)
Cuando varios programas comparten la memoria principal puede no ser conveniente decidir por adelantado en que región de la memoria debe cargarse un módulo en particular es mejor tomar esa decisión en el momento de carga. Así pues se necesita un módulo de carga que pueda ubicarse en cualquier posición de la memoria principal. Para satisfacer este nuevo requisito el ensamblador o el compilador no generará direcciones reales de memoria principal (direcciones absolutas) si no direcciones relativas a algún punto conocido, al comienzo de módulo de carga se le asigna la dirección relativa 0 y todas las demás referencias dentro del módulo se expresan en relación al comienzo del módulo.
Con todas las referencias a memoria expresadas en forma relativa, situar los módulos en la posición deseada se convierte en una tarea sencilla para el cargador, si el módulo va a ser cargado comenzando por la dirección x el cargador simplemente sumará x a cada referencia a memoria a medida que cargue el módulo en memoria. Para ayudar en esta tarea el módulo de carga debe incluir información que indique el cargador dónde están las referencias a direcciones y como se interpreten (generalmente de forma relativa al comienzo del programa pero también es posible que sean relativas a algún otro punto del programa, como la posición actual). El compilador prepara este conjunto de información que se conoce como carga re localizable.
...