13 feb 2010

PostHeaderIcon Datos Estáticos y Dinámicos



Datos Estáticos:

Su tamaño y forma es constante durante la ejecución de un programa y por tanto se determinan en tiempo de compilación. El ejemplo típico son los arreglos. Tienen el problema de que hay que dimensionar la estructura de antemano, lo que puede conllevar desperdicio o falta de memoria.


Datos dinámicos: 

Su tamaño y forma es variable (o puede serlo) a lo largo de un programa, por lo que se crean y destruyen en tiempo de ejecución.

Librería de Programas

Una librería es uno o más métodos (funciones) que tenemos ya compiladas y preparadas para ser utilizadas en cualquier programa que hagamos.

Librerías de enlace Estático:

Las librerías de enlace estático son ficheros destinados a almacenar funciones, clases y variables globales.

Una librería estática, es una librería que "se copia" en nuestro programa cuando lo compilamos. Una vez que tenemos el ejecutable de nuestro programa, la librería no sirve para nada (es un decir, sirve para otros futuros proyectos). Podríamos borrarla y nuestro programa seguiría funcionando, ya que tiene copia de todo lo que
necesita. Sólo se copia aquella parte de la librería que se necesite. Por ejemplo, si la librería tiene dos funciones y nuestro programa sólo llama a una, sólo se copia esa función.



Imagen de Programa:

Una imagen, no es más que un fichero con código binario preparado para ser ejecutado.

 

Hay 3 tipos de imágenes:

Aplicaciones. Son el fichero de un programa ejecutable.

Librerías de enlace dinámico. Es un fichero con funciones que los programas que las usan cargan la primera vez que tienen que llamar a una de sus funciones.

Adds-on. Son librerías de enlace dinámico que permiten aumentar la funcionalidad de un determinado programa (ejemplo: Internet Explorer)

Librerías de enlace Dinámico:

Una librería de enlace dinámico es una imagen, con una tabla de símbolos en la que a cada símbolo (función, variable global o método) se le da un nombre y se apunta en la tabla la dirección de memoria que le corresponde en la imagen. Al ejecutar el programa, unas rutinas que pone el compilador, a las que se suele llamar intérprete de programas, se encargan de buscar las librerías y mapearlas en memoria. Mapearlas en memoria consiste en hacer corresponder un fichero en disco con un trozo de la memoria virtual (memoria primaria y memoria secundaria). Esto permite que los programas con librerías dinámicas inicien más rápido que los programas con librerías estáticas, ya que la carga de la librería se realizará más tarde, y sólo, si ese trozo de programa se ejecuta.

El principal inconveniente de las librerías dinámicas es que el programa puede fallar si usamos una versión distinta de la librería. Una librería dinámica NO se copia en nuestro programa al compilarlo. Cuando tengamos nuestro ejecutable y lo estemos ejecutando, cada vez que el código necesite algo de la librería, irá a buscarlo a ésta. Si borramos la librería, nuestro programa dará un error de que no la encuentra.

Inconvenientes:

a) Un programa compilado con librerías estáticas es más grande, ya que se hace copia de todo lo que necesita.
b) Un programa compilado con librerías estáticas se puede llevar a otro ordenador sin necesidad de llevarse las librerías.
c) Un programa compilado con librerías estáticas es, en principio, más rápido en ejecución. Cuando llama a una función de la librería, la tiene en su código y no tiene que ir a leer el fichero de la librería dinámica para encontrar la función y ejecutarla.
d) Si cambiamos una librería estática, a los ejecutables no les afecta. Si cambiamos una dinámica, los ejecutables se ven afectados. Esto es una ventaja si hemos cambiado la librería para corregir un error (se corrige automáticamente en todos los ejecutables), pero es un inconveniente si tocar eso nos hace cambiar los ejecutables (por ejemplo, hemos añadido un parámetro más a una función de la librería, los ejecutables ya hechos dejan de funcionar).


Diferencias entre Librería Estática y Librería Dinámica

Las diferencias más relevantes de las librerías dinámicas respecto a las estáticas son fundamentalmente dos:

  •  Localización y Espacio: Las librerías estáticas quedan incluidas en el ejecutable, mientras las dinámicas son ficheros externos, con lo que el tamaño de la aplicación (nuestro ejecutable) es mayor en el primer caso que en el segundo. Esto puede ser de capital importancia en aplicaciones muy grandes, ya que el ejecutable debe ser cargado en memoria de una sola vez.
  •  Tamaño en Lib. Estática =  Código Binario + Espacio en Memoria.
  •  Reutilización de Código Binario: Las librerías dinámicas son ficheros independientes que pueden ser invocados desde cualquier ejecutable, de modo que su "funcionalidad" puede ser compartida por varios ejecutables. Esto significa que solo se necesita una copia de cada fichero de librería (DLL) en el Sistema. Esta característica constituye la razón principal de su utilización, y es también origen de algunos inconvenientes, principalmente en sistemas como Windows en los que existen centenares de ellas.

1 comentarios:

Anónimo dijo...

,mnkkj


Publicar un comentario

Enlazanos

Programas NetBlog

Categorias

Ultimas entradas