Bibliotecas compartidas y memoria compartida

Este tema proporciona información sobre los recursos del sistema operativo proporcionados para compartir bibliotecas y asignación de memoria.

El sistema operativo proporciona recursos para la creación y uso de bibliotecas compartidas enlazadas dinámicamente. El enlace dinámico permite que el cargador resuelva en tiempo de ejecución los símbolos externos a los que se hace referencia en el código de usuario y que se definen en una biblioteca compartida.

El código de biblioteca compartida no está presente en la imagen ejecutable en el disco. El código compartido se carga en la memoria una vez en el segmento de la biblioteca compartida y se comparte con todos los procesos que hacen referencia al mismo. Las ventajas de las bibliotecas compartidas son:

  • Se utiliza menos espacio de disco porque el código de biblioteca compartida no está incluido en los programas ejecutables.
  • Se utiliza menos memoria porque el código de biblioteca compartida sólo se carga una vez.
  • El tiempo de carga puede reducirse porque es posible que el código de la biblioteca compartida ya esté en la memoria.
  • El rendimiento puede mejorarse porque se generarán menos anomalías de página cuando el código de biblioteca compartida ya esté en la memoria. Sin embargo, hay un coste de rendimiento en las llamadas a las rutinas de biblioteca compartida de una a ocho instrucciones.

Los símbolos definidos en el código de biblioteca compartida que se van a poner a disposición de los módulos de referencia deben exportarse explícitamente utilizando un archivo de exportaciones, a menos que se utilicen las opciones -bexpall. La primera línea del archivo contiene opcionalmente el nombre de vía de acceso de la biblioteca compartida. Las líneas subsiguientes contienen los símbolos que se van a exportar.