Dynamic Link library
Dynamic Link library or DLL in short are the extensions of applications. We often have common code between many applications and thus we put this common section of the code in an extension executable called DLL. The term DLL is very popular in Windows. However they are also present in Linux and Unix and known as Shared Libraries. Shared Libraries often come with extensions like.so or .ko. System side DLLs are also present along with Operating System kernel in the form of device drivers. They are the extensions of Operating Systems works in the same principle.
Static linking and disadvantages
In the past when Microsoft Disk Operating System (MS DOS) was used as operating system, executables were the only binary running in the memory and any common code like C library were linked as static code. The main disadvantages were:
- Additional executable code adds executable storage size as well as runtime memory requirement,
- Executable uses C library code which is available at the time of build or compilation. There is no way to use latest C library during execution. It needs to be rebuild/recompile with latest C runtime every time a new C library version released,
- In multitasking system where more than one task is running, there is no concept of using one instance of common executable while using static linking. It does not ensure only one version of C library is running in the system. Also it overloads memory requirement of each running task.
Dynamic linking and advantages
Dynamic linking resolves all the shortcomings of static linking. They come with the following advantages:
- No additional requirement of memory at runtime or disk storage as a common binary file will be there,
- All the application or clients will be using one single version of the common code provided by the DLL,
- Operating system loads only one instance of the DLL when the first application/client loads it then for the every subsequent application it shares the memory pages of the DLL with their process address space. Thus there is no unnecessary memory overload in the system.
About our authors: Team EQA
You have viewed 1 page out of 27. Your DLL learning is 0.00% complete. Login to check your learning progress.