There are two types of linking: static and dynamic. Static linking enables a program's code and data to be contained in a single executable file, enabling the system to load it all into memory at once. Dynamic linking permits several applications to use a single copy of an executable module, since the executable module is completely separate from the applications that use it.
The advantages of dynamic linking are:
OS/2 provides two types of dynamic linking: load-time and run-time. In load-time dynamic linking, an application is linked with a library file that contains a record that describes where the routine can be found instead of a file that contains the code for the routine. The DLL can be loaded as soon as a process accesses the DLL or when needed. In run-time dynamic linking, the EXE for an application does not contain a record describing where the external routines can be found. Instead, the application explicitly tells OS/2 when to load and free the dynamic link module.
DLL data can be shared or not shared by all processes that use it.