sábado, 2 de junio de 2012

5 Enlace dinámico


La necesidad de ejecutar programas de tamaño mayor que la memoria física
disponible ha originado a lo largo de la historia la introducción de sofisticados
mecanismos de gestión de la ubicación de programas en memoria. Un primer
enfoque es el de dividir en programa en varios módulos, denominados overlays o
solapamientos, a partir de su estructura y cargar dinámicamente sólo aquellos que se
necesiten. La carga de un solapamiento la realiza una rutina de enlace, que se
encarga también de seleccionar el(los) solapamiento(s) reemplazado(s), si se requiere
espacio para la carga. Tradicionalmente, el programador determinaba qué rutinas
constituían los solapamientos, construía la rutina de enlace y las tablas de rutinas de
los solapamientos, y elaboraba el programa de forma que las llamadas a las rutinas
de los solapamientos se llamasen a través de la rutina de enlace. También eran suyos
los criterios de reemplazo de los solapamientos.
El enfoque alternativo al problema es la memoria virtual, más general y
completamente transparente al programador, al que dedicaremos la siguiente
Sección.
Sin embargo, una evolución de los overlays ha quedado en los sistemas de hoy en día
para cubrir un objetivo diferente del originalmente asignado a aquellos: las rutinas
de enlace dinámico6.
Una librería de enlace dinámico es un conjunto de rutinas agrupadas en módulos que
se cargan dinámicamente en el momento de la llamada, como ocurría en los overlays,
pero de forma transparente al programa. El sistema operativo proporciona como
soporte una llamada al sistema donde se especifica como parámetro la rutina de
enlace dinámico a ejecutar. Cuando en un programa aparece una llamada a una
rutina de este tipo, el montador, en vez de enlazar estáticamente a la rutina en el
código ejecutable, enlaza a la llamada al sistema. Cuando esta llamada al sistema seejecuta, comprueba si el módulo que contiene la rutina especificada como parámetro
está cargado en memoria. Si no lo está, lo carga y establece la referencia (indirecta)
desde el programa. A esto se le llama montaje dinámico o en tiempo de ejecución.
Se requiere una tabla que especifique el estado de cada módulo de enlace dinámico
(cargado o no) y la dirección de memoria donde se carga. En principio, hay que
destinar un espacio de memoria específico para los módulos de enlace dinámico, y
proporcionar una política de reemplazo, pero cuando se combina con memoria
virtual, que es lo habitual hoy en día, el reemplazo se realiza página a página de
forma integrada en el propio mecanismo de memoria virtual.
Aunque esta técnica se podría utilizar con el mismo objetivo de los overlays,
actualmente, ya que todos los sistemas tienen soporte de memoria virtual, el enlace
dinámico se utiliza por otros motivos:
· Los ficheros ejecutables de los programas almacenados en disco son más
pequeños. Esto tiene cierta importancia si se tiene en cuenta que hoy en día los
programas hacen un amplio uso de rutinas que consumen un gran volumen
de espacio, como por ejemplo las rutinas de tratamiento gráfico.
· Las rutinas de enlace dinámico cargadas en memoria se comparten por varios
programas, lo que permite ahorrar espacio también en memoria.
· El tiempo de carga de los programas, y por lo tanto su latencia, es menor.
· Facilita la actualización de las aplicaciones. La instalación de una nueva
aplicación aporta nuevas versiones de las librerías de enlace dinámico (por
ejemplo, rutinas de tratamiento gráfico más elaborado) que sustituyen a las
versiones antiguas, de lo que se benefician otras aplicaciones que usan dichas
rutinas

No hay comentarios:

Publicar un comentario