27/04/07 | Publicado por: a19992199 | Categoría Curso Lp2
- Añadir comentario | Link permanente | Visto: 3885 veces |
Son de dos tipos:
Estática.- Se enlaza con el archivo intermedio (en C++ es archivo .obj) en un solo archivo.
Dináminas.- Se enlaza con el programa en tiempo de compilación.
Las ventajas de las librerías:
Estática : Enlace en tiempo de compilación, por tanto se gana en eficiencia en la ejecución del programa que la utiliza.
Dinámica: No se duplica código. En memoria Ram existe una copia de la librería. El mantenimiento es sencillo.
Las desventajas de las librerías:
Estática: Se duplica código. El mantenimiento es díficil.
Dinámica: Enlace en tiempo de ejecución, con pérdida de eficiencia en la ejecución del programa que la utiliza.
Características de las líbrerias:
Poseen una tabla de importación y de exportación.
En la memoría Ram el S.O. guarda el programa que la llama y la librería en dos secciones de la memoría. Sabe donde empieza la librería y sólo hace uso de un proceso especial para llamar a cualquier función de la librería.
Ejemplo:
Digamos que el programa que usamos desea llamara a la función "fn" de la librería "L1". El S.O. no puede llamar directamente al programa sino utiliza una función de nombre GetProAddress("L1","fun") para llamar la función de la librería.
En resumen:
call fn
call pl1
Es equivalente a:
pfn=GetProcAddress("L1","fn");
push "L1"
push "fn"
call GetProcAddress
mov pfn, ax
call pfn
Luego surgen preguntas del tema:
¿Un S.O. controla el puntero de pila cuando un programa se esta cargando? ¿Cuando se llama a la misma función de la librería por dos programas distintos sigue los mismo pasos? ¿Los virus pueden modificar el archivo librería del sistema operativo para que en lugar de llamar a la función llame a la función de un virus?









