2012-04-03 15 views
7

Sé lo que hace un cargador dinámico. Carga programas cuando la aplicación lo solicita en el tiempo de ejecución, lo que minimiza la huella de memoria. Pero realmente no entiendo qué es este enlazador dinámico. ¿Y cuáles son sus ventajas? Leo muchas cosas en línea, pero están hablando en términos abstractos.¿Cuál es la diferencia entre el vinculador dinámico y el cargador dinámico?

¿Alguien me puede explicar con algunos ejemplos simples?

+0

http://stackoverflow.com/questions/311882/what-do-statically-linked-and-dynamically-linked-mean/311889#311889 – Vijay

+0

@peter gracias! Eso ayudo. –

Respuesta

6

Son realmente dos términos para la misma cosa. En el mundo Unix, el término enlazador dinámico se utiliza para denotar el componente del sistema operativo que vincula bibliotecas dinámicas en tiempo de ejecución, mientras que un cargador en la mayoría de los otros sistemas carga y vincula bibliotecas dinámicas.

Debido a que la carga de bibliotecas en sistemas tipo Unix se realiza por un componente separado (ld.so más a menudo), un enlazador dinámico se considera algo distinto del cargador de programas. Los compiladores suelen insertar algún código auxiliar al principio del archivo ejecutable para cargar ld.so, y ld.so continuarán cargando el resto de las bibliotecas dependientes antes de invocar main. Mientras que la carga del programa se realiza en el espacio del kernel, la vinculación de las bibliotecas dinámicas generalmente se realiza en el espacio de usuario.

Esto no se parece a Windows, donde tanto la carga del programa como la vinculación de bibliotecas dinámicas se realiza en modo kernel.

Cuestiones relacionadas