Por qué tiempo de compilación & cargar el enlace de direcciones de tiempo generar direcciones físicas y lógicas idénticas mientras que la ejecución del enlace de direcciones de tiempo genera diferentes direcciones lógicas físicas &?Direccionamiento de enlace generar la misma dirección
Respuesta
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.
- 1. Direccionamiento de la dirección de una cadena literal en C
- 2. Generar dirección IP aleatoria
- 3. Agregando dirección local de enlace
- 4. Posible tener el mismo contrato, el mismo enlace, la misma dirección, pero diferentes puertos?
- 5. Django: generar enlace de descarga
- 6. Formato de dirección local de enlace IPv6
- 7. ¿La DLL siempre tiene la misma dirección base?
- 8. escritura simultánea a la misma dirección de memoria
- 9. Dirección de enlace y servidor Mysql
- 10. Enlace de la dirección IP con ID de sesión
- 11. Encontrar la dirección web de un enlace de Javascript
- 12. error "Ningún enlace de protocolo coincide con la dirección especificada ..."
- 13. Direccionamiento de matriz indirecta Bash?
- 14. Direccionamiento de matriz más rápido
- 15. Linq a NHibernate generar múltiples uniones a la misma tabla
- 16. redmine enlace al encabezado en la misma página
- 17. impulso :: aleatoria generar la misma cantidad cada vez
- 18. Generar un enlace desde un servicio
- 19. Diferencia entre el direccionamiento físico y el concepto de direccionamiento virtual
- 20. ¿La dirección de una estructura es la misma que la de su primer miembro?
- 21. cómo recortar la cadena de dirección IP para obtener las primeras 3 partes de la misma?
- 22. Es la dirección IP en la misma subred que la máquina local (con soporte IPv6)
- 23. Generar enlace de descarga de archivos en PHP
- 24. ¿Cómo obtener la dirección de la puerta de enlace WIFI en el iPhone?
- 25. Obtener la dirección IP de la puerta de enlace en android
- 26. ActiveAdmin - ¿generar enlace a índice, con preajuste de filtro?
- 27. Direccionamiento abierto frente a encadenamiento separado
- 28. Generar enlace de descarga limitado por tiempo y por IP
- 29. OpenCV en Generar en Visual Studio error de enlace
- 30. Cómo generar un enlace de página emergente en ASP.NET MVC
¿Puede decirme cuál es la diferencia entre la reubicación y el atascamiento? – Zephyr