专栏首页后端技术重定位 静态链接 动态链接 动态加载

重定位 静态链接 动态链接 动态加载


总结:并没有找到动态链接与动态加载的明显区别,但动态链接与静态链接的区别是明显的: 一个是编译时就链接进可执行文件,一个是执行时才链接。


静态重定位

  • 重定位时,取重定位项,加上重定位因子得到欲修改位置的实际地址。
  • 优点:无须硬件支持
  • 缺点:程序重定位以后就不能在内存中移动。要求程序的存储空间连续的,不能把程序存储到若干个不连续的区域中。

动态重定位

  • 当CPU取一条访问内存的指令时,地址变换硬件将指令中的相对地址重定位寄存器中的值 相加,再根据和值去访问该单元的数据。
  • 装配模块不加任何修改就装入内存
  • 需要硬件(重定位寄存器)的支持

静态链接、动态链接

  • 静态链接
  • 动态链接(dll)
    • 装入时链接
    • 运行时链接

装入时链接:

  • 用一个动态导入表保存需要使用的dll文件和dll中的函数。
  • 装入时检根据动态导入表依次装入每个动态库。

运行时链接:

  • 用API函数LoadLibrary或LoadLibraryEx函数来装入动态库(共享引用计数增加1)
  • 通过GetProcAddress函数来获得函数的地址,并且传递给函数相应的参数,调用这个函数。
  • 在动态库用完后,可通过FreeLibrary函数来释放动态库资源(共享引用计数减1)。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • java 并发模型

    根据阅读注释和跟踪父类Queue源码,我们得知,BlockingQueue的方法主要分三类:

    平凡的学生族
  • 超键、候选键和主键

    平凡的学生族
  • 原子操作 CAS CompareAndSwap

    使用AtomicInteger、AtomicBoolean等原子操作类可以完成原子操作。它的各种操作都是基于Unsafe类的,你可以看到函数的画风都是下面这样:

    平凡的学生族
  • 【学习】数据分析之Excel数据分组案例详解

    提示:使用EXCEL进行数据分组的案例详解,三种方法:IF函数,VLOOKUP函数,LOOKUP函数,回复给邮箱,友情赠送EXCEL文档实例,以后自己套用即可。...

    小莹莹
  • 5.2Python函数(二)

    py3study
  • Win32对话框程序(2)

    接着Win32对话框程序(1)来写 ,解决遗留的问题,即理解函数及其调用关系。文章中有些地方是自己的推断,因此肯定有叙述不准确甚至错误的地方,请指正,感谢~ 

    李拜六不开鑫
  • 玩转大数据系列之Apache Pig高级技能之函数编程(六)

    我是攻城师
  • C++之模板、IO流、异常

    泛型(Generic Programming),即是指具有在多种数据类型上皆可操作的含意。泛型编程的代表作品 STL 是一种高效、泛型、可交互操作的软件组件。泛...

    用户5426759
  • 西湖论剑回顾 | 网络安全创新成果分享之物联网安全创新

    2018年4月27日,“西湖论剑·网络安全大会”在杭州国际博览中心隆重举办。大会积极响应习近平总书记在全国网络安全和信息化工作会议上“敏锐抓住信息化发展历史机遇...

    安恒信息
  • Xcelsius(水晶易表)系列8——动态选择器高级用法

    今天继续跟大家分享关于水晶易表的动态选择器高级用法。 该案例所用到的函数和选择器工具还是我们之前用到的基本选择工具——单选按钮,组合框。 用到的思想与昨天讲到的...

    数据小磨坊

扫码关注云+社区

领取腾讯云代金券