*** 作系统中程序的链接:装入时动态链接、运行时动态链接和静态链接都是什么意思?有什么区别?

 *** 作系统中程序的链接:装入时动态链接、运行时动态链接和静态链接都是什么意思?有什么区别?,第1张

静态链接是在生成可执行程序的时候就把库中的内容加入到程序中。

载入时动态链接是在将功能模块读入内存时把动态库中调用到的相关模块的内容载入内存。

运行时动态链接是在执行程序调用到模块内容时再将动态库中的相应模块载入到内存。

这里有两个时间问题。一是载入时间,二是执行时间。

静态链接由于是在一开始就把所有模块都加载进入内存,所以如果模块很多的话效率就会被大大拉低。

载入时动态链接是分别载入,当把一个模块载入内存时检查有调用关系的模块载入,比静态链接节省了许多开销。

运行时动态链接则是把当前模块调用的模块推迟到调用的时候再载入。

三者之间的关系就像是机q,冲锋q和手q

机q在一开始就把所有子d装好,开q的时候很快,但也很笨重。

冲锋q则是将子d分d夹存好,轻便了许多,但是会有一段装填时间。

手q就更加轻便了,但是d夹容量更小,装填的频率又变高了。

标准的答案!这个实现有点难度吧,按你的意思这个只在服务端运行,运行时是可以加载库的,但运行中这个库怎么切换到新的库,切换过程中怎么保护。而且动态链接库的加载时刻是什么时候,这个和动态库的实现、编译动态库时的选项以及 *** 作系统对动态库的处理都有关系。例如程序中用到的符号是在动态库加载时一次解析还是执行时用到再解析?动态库有没有初始化函数? *** 作系统是直接将动态库拷贝到内存(若需要)还是做memorymapping后通过virtualmemory系统按需调入?这样考虑下来,加载时间是什么是相当不明确的事情。建议看下《程序员的自我修养-链接,装载与库一书》,讲解的还是不错的。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/11059324.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-13
下一篇2023-05-13

发表评论

登录后才能评论

评论列表(0条)

    保存