DLL - dynamically linked libraries or so - shared objects (Unix).
  Used to provide a common set of functions for a variety of applications.

  Provides a standardized interface and behavior.

  Designed to be loaded into any available address (dynamic).

  Updates to DLL immediately become available to all applications.

  Saves space in applications because dll is separate.

  If well designed, saves space in memory.
    - single copy of text portion of dll used by several applications.
    - stack and data space of each calling application used for variables.

Implicit linking
  Application provides a list of DLLs needed.

  System ensures that all DLLs needed are in memory with application starts.

  Resolves all link addresses before executing prgram.

    Requires an additional file listing the DLLs needed.

    Slows initial load of program.

    Uses more memory.
 
    But runs faster once started.

Explicit linking
  Application starts without any needed DLLs loaded.

  When access to a DLL occurs, OS fetches and links DLL.

  When application done with DLL, OS can unload DLL if no being used.
  
    Faster load of application.

    Uses less memory - only DLLs actually used are loaded.

    Slows execution during run - application must pause will DLL linked.