链接和加载是在程序执行中发挥重要作用的实用程序。链接获取汇编器生成的目标代码并将它们组合以生成可执行模块。另一方面,加载将这个可执行模块加载到主内存中执行。
加载
将程序从辅助存储器带到主存储器称为加载。
链接
建立程序的所有模块或所有功能之间的链接以继续执行程序称为链接。
链接和加载的区别:
- 链接和加载之间的主要区别在于链接生成程序的可执行文件,而加载将从链接获得的可执行文件加载到主内存中执行。
- 链接获取由汇编程序生成的程序的目标模块。但是,加载会吸收链接生成的可执行模块。
- 链接结合程序的所有目标模块以生成可执行模块,它还将目标模块中的库函数链接到高级编程语言的内置库。另一方面,加载将空间分配给主存储器中的可执行模块。
加载和链接进一步分为两种类型:
静态 | 动态 |
---|---|
在程序执行开始之前将整个程序加载到主存中称为静态加载。 | 将程序按需加载到主存中称为动态加载。 |
内存使用效率低下,因为无论是否需要,整个程序都被带入主内存。 | 有效利用内存。 |
程序执行会更快。 | 程序执行会更慢。 |
静态链接的程序每次加载到内存中执行时都会花费恒定的加载时间。 | 动态链接由操作系统在运行时执行。 |
如果使用静态加载,则相应地应用静态链接。 | 如果使用动态加载,则相应地应用动态链接。 |
静态链接由称为链接器的程序执行,作为编译程序的最后一步。链接器也称为链接编辑器。 | 在动态链接中,情况并非如此,并且可以更新和重新编译各个共享模块。这是动态链接提供的最大优势之一。 |
在静态链接中,如果任何外部程序已更改,则必须重新编译并再次重新链接它们,否则更改不会反映在现有的可执行文件中。 | 如果共享库代码已经存在于内存中,则动态链接加载时间可能会减少。 |
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/264455.html