73

问答题 73 /93

为什么要引入动态链接?

参考答案

引入动态链接的原因如下:(1)节约内存。在许多情况下,每次要运行的模块可能是不相同的,但由于事先无法知道本次要运行哪些模块,故只能是将所有可能要允运行到的模块,全部链接在一起,每次执行时全部装入。显然这是低效的。因为装入的某些模块在运行过程中,根本就不用。比较典型的例子时错误处理模块,入彀程序在整个运行过程中,都不出现错误,便不会用到该模块。动态链接的方式可以解决这个问题。(2)便于软件版本的修改和更新。采用装入时动态链接方式,要修改或更新各个目标模块非常容易。但对于经静态链接装配在一起的模块,要修改或更新其中的某个目标模块则要求重新打开装入模块。这不仅是低效的,而且对于普通用户也是不可能的。(3)便于实现目标模块共享和构建程序。若采用装入时动态链接方式,OS能够将一个目标模块链接到几个应用程序中去,即事项多个应用程序对该模块的共享。然而,采用静态链接方式时每个应用模块都必须含有该目标模块的拷贝,否则无法实现共享。