装入时动态链接 运行时动态链接 静态链接
操作系统中程序的链接:装入时动态链接、运行时动态链接和静态链接都是什么意思?有什么区别?一、装入时动态链接(Load-TimeDynamiclinking):是在目标模块...
操作系统中程序的链接:装入时动态链接、运行时动态链接和静态链接都是什么意思?有什么区别?
一、装入时动态链接(Load-Time Dynamic linking):是在目标模块装入内存时,边装入边链接。即在装入一个目标模块时,若发现一个外部模块调用,即引起装入程序去找出相应的外部模块,并将它装入内存以及修改目标模块中的相对地址。
二、运行时动态链接(Run-Time Dynamic linking): 这种链接方式,可将某些目标模块的链接,推迟到执行时才进行。即在执行过程中,若发现一个被调用模块尚未装入内存时,由OS去找到该模块,将它装入内存,并把它链接到调用者模块上。
前述的动态装入方式,可将装入模块装入到内存的任何位置。但装入模块的结构是静态的,这里的静态是指:一,在进程的整个执行期间,模块是不改变的;二,每次运行时的装入模块都是相同的。而实际上,每次要运行的模块可能是不同的,但装入时只能将所有可能要运行的模块全部链接在一起,使每次执行时的装入模块是相同的。
这里没有说到静态链接,它和前两者的区别是什么?各有什么优缺点啊? 展开
一、装入时动态链接(Load-Time Dynamic linking):是在目标模块装入内存时,边装入边链接。即在装入一个目标模块时,若发现一个外部模块调用,即引起装入程序去找出相应的外部模块,并将它装入内存以及修改目标模块中的相对地址。
二、运行时动态链接(Run-Time Dynamic linking): 这种链接方式,可将某些目标模块的链接,推迟到执行时才进行。即在执行过程中,若发现一个被调用模块尚未装入内存时,由OS去找到该模块,将它装入内存,并把它链接到调用者模块上。
前述的动态装入方式,可将装入模块装入到内存的任何位置。但装入模块的结构是静态的,这里的静态是指:一,在进程的整个执行期间,模块是不改变的;二,每次运行时的装入模块都是相同的。而实际上,每次要运行的模块可能是不同的,但装入时只能将所有可能要运行的模块全部链接在一起,使每次执行时的装入模块是相同的。
这里没有说到静态链接,它和前两者的区别是什么?各有什么优缺点啊? 展开
1个回答
展开全部
静态链接是在生成可执行程序的时候就把库中的内容加入到程序中。
载入时动态链接是在将功能模块读入内存时把动态库中调用到的相关模块的内容载入内存。
运行时动态链接是在执行程序调用到模块内容时再将动态库中的相应模块载入到内存。
这里有两个时间问题。一是载入时间,二是执行时间。
静态链接由于是在一开始就把所有模块都加载进入内存,所以如果模块很多的话效率就会被大大拉低。
载入时动态链接是分别载入,当把一个模块载入内存时检查有调用关系的模块载入,比静态链接节省了许多开销。
运行时动态链接则是把当前模块调用的模块推迟到调用的时候再载入。
三者之间的关系就像是机枪,冲锋枪和手枪
机枪在一开始就把所有子弹装好,开枪的时候很快,但也很笨重。
冲锋枪则是将子弹分弹夹存好,轻便了许多,但是会有一段装填时间。
手枪就更加轻便了,但是弹夹容量更小,装填的频率又变高了。
载入时动态链接是在将功能模块读入内存时把动态库中调用到的相关模块的内容载入内存。
运行时动态链接是在执行程序调用到模块内容时再将动态库中的相应模块载入到内存。
这里有两个时间问题。一是载入时间,二是执行时间。
静态链接由于是在一开始就把所有模块都加载进入内存,所以如果模块很多的话效率就会被大大拉低。
载入时动态链接是分别载入,当把一个模块载入内存时检查有调用关系的模块载入,比静态链接节省了许多开销。
运行时动态链接则是把当前模块调用的模块推迟到调用的时候再载入。
三者之间的关系就像是机枪,冲锋枪和手枪
机枪在一开始就把所有子弹装好,开枪的时候很快,但也很笨重。
冲锋枪则是将子弹分弹夹存好,轻便了许多,但是会有一段装填时间。
手枪就更加轻便了,但是弹夹容量更小,装填的频率又变高了。
Storm代理
2023-07-25 广告
2023-07-25 广告
StormProxies是一家国内优质海外HTTP代理商,拥有一个庞大的IP资源池,覆盖200多个地区,IP数量大且匿名度高。其优点还包括超高并发、稳定高效、技术服务等特点,同时提供HTTP、HTTPS以及SOCKS5协议支持。此外,Sto...
点击进入详情页
本回答由Storm代理提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询