2012-06-20 12 views

Respuesta

10

Ha pasado mucho tiempo desde que se hizo esta pregunta, pero solo estoy agregando la respuesta para archivarla.

Vamos a echar un vistazo a la siguiente definición:

Logical address: Dirección generada por la CPU

Physical address: Las direcciones como se ve por la unidad de gestión de memoria (MMU)

Ahora en compile time binding suponemos que siempre estará disponible un rango de ubicación de memoria (que es suficiente para el programa) y se genera un código absoluto. Por lo tanto, cualquier dirección que la CPU genere (como direcciones de puntero, etc.) es lo mismo que MMU.

Una mejor versión de la utilización de la memoria es retrasar el enlace hasta el tiempo de carga para que la memoria no sea utilizada por el programa sentado en el disco. Para esto el código generado en formato reubicable. Esto es load time binding.

Ahora execution time binding es un poco diferente donde el enlace se retrasa hasta el tiempo de ejecución. En este caso, la CPU genera una dirección, digamos 300, y realiza toda la manipulación en la dirección 300, pero siempre que haya un acceso de memoria real esta dirección se transforma al agregar el valor de registro reubicable, digamos R, a esta dirección. Por lo tanto, el rango de direcciones lógicas es 0-LIM, mientras que el espacio de direcciones físicas es R-(R+LIM).

también quisiera explicar con un ejemplo para que sea más claro:

Considere el canje si intercambiado un programa con load time binding que necesita para pasar nuevamente a la misma ubicación (como todas las direcciones en las instrucciones eran pujar según esta dirección) mientras que en execution time binding puede cambiar cualquier proceso a cualquier lugar porque solo necesita cambiar el valor en el registro reubicable y simplemente funcionará bien. De ahí el aumento de la utilización de la memoria.

+0

¿Puede decirme cuál es la diferencia entre la reubicación y el atascamiento? – Zephyr

Cuestiones relacionadas