当前位置: 首页 > news >正文

网站建设方案书的内容管理制度网站建设百科

网站建设方案书的内容管理制度,网站建设百科,开发网站的过程,聊城建网站服务动态库加载的底层原理 1. 动态库加载策略 动态库有两种绑定策略,延迟绑定(Lazy Binding)和立即绑定(Eager Binding)。这两种绑定方式在程序编译时确定,决定程序在运行时如何加载动态库。 1.1 延迟绑定 …

动态库加载的底层原理

1. 动态库加载策略

动态库有两种绑定策略,延迟绑定(Lazy Binding)立即绑定(Eager Binding)。这两种绑定方式在程序编译时确定,决定程序在运行时如何加载动态库。

1.1 延迟绑定

延迟绑定为程序运行过程中,首次调用库函数时再解析符号,进行动态库加载。延迟绑定是 gcc 的默认动态库绑定策略:

gcc -o main main.c -Wl,-z,lazy

-Wl 表示将选项传递给链接器,-z,lazy 表示选择延迟绑定策略。

1.2 立即绑定

立即绑定为在程序启动时,完成所有符号解析,即在程序启动时加载动态库。

gcc -o main main.c -Wl,-z,now

-Wl 表示将选项传递给链接器,-z,now 表示选择立即绑定策略。

1.3 绑定选择策略

立即绑定更适合在程序处于调试阶段中使用,立即绑定在程序启动时对所有符号解析,可以快速检查出库和符号错误,即时修改 BUG。由于一个程序不一定会用到其包含的所有动态库,如果 release 程序也使用立即绑定,程序的启动速度可能就会很慢。所以会使用延迟绑定让库按需加载来提升程序运行速度

2. 动态库的底层

当进程被加载到内存时,其依赖的动态库并不会立即加载进内存,而是由操作系统的动态链接器(如 Linux 下的 ld.so)按需加载。当进程首次调用动态库中的函数或访问其中的符号时,动态链接器会将动态库映射到进程的虚拟地址空间中。动态库的加载主要通过内存映射(mmap)机制实现,这样可以在需要时加载动态库的内容,节省内存资源

在进程的虚拟地址空间中,动态库的代码和数据被映射到特定区域。动态库的代码段通常是只读且可执行的,因此多个进程可以共享相同的物理内存页。而数据段则是私有的,每个进程有自己独立的数据副本。相比之下,静态库在编译时被直接链接进可执行文件,成为程序代码的一部分,加载时与程序一起进入内存。

当其他进程需要使用已加载的动态库时,操作系统会通过内存映射技术共享动态库的物理页,避免重复加载。内核在映射动态库时会检测是否已有相同的文件映射,若存在,则直接共享已加载的物理页,进一步优化内存使用

由于动态库可以被加载到虚拟地址空间的任意位置,为了保证代码的可执行性,动态库通常被编译为位置无关代码PIC,Position Independent Code)。这样,无论动态库被加载到虚拟地址空间的哪个位置,都能正确访问其内部的函数和数据。

PIC 通过相对寻址方式访问数据和函数,主要依赖全局偏移表(GOT,Global Offset Table)和过程链接表(PLT,Procedure Linkage Table)来实现符号解析和函数调用。

http://www.dtcms.com/a/550309.html

相关文章:

  • C++ Vector嵌套完全指南:从基础到高阶应用
  • 建设三类人员报考网站做特产的网站开张怎么宣传
  • 【代码随想录算法训练营——Day52】图论——101.孤岛的总面积、102.沉没孤岛、103.水流问题、104.建造最大岛屿
  • 设计最好的网站云企网站
  • 3网站建设wordpress设置版权信息
  • Vue + TSX 中使用 class 报错 解决方法
  • React 项目Source-Map-Explorer打包优化 CDN配置加快页面访问速度 包可视化 项目体积优化
  • 文昌网站 做炸饺子网络培训心得体会500字
  • 漳州做网站设计做网站网页需要什么软件
  • 义乌网站建设工作室网站建设前台后台设计
  • 网站搭建软件做门户网站需要什么条件
  • 开发网站做什么萨龙wordpress
  • 函数的嵌套调用求最大值
  • 2v1带您实战12nm高级数字后端
  • Linux之文本处理小工具+shell从入门到精通
  • 怎样提高自己网站排名nginx 网站建设
  • 基于node网站毕设代做广告设计与制作是干什么的
  • [论文笔记] windows wsl快乐试用cursor
  • 购物网站建设策划报告东莞松山湖邮编
  • 【科研】想学习的琐碎知识点-不断更新
  • (根号分治、sosdp)洛谷 P10408 Apple / P7842 探险者笔记 III 题解
  • SCADA软件GENESIS64:基于Web的集中式工程管理平台
  • 专注江苏网站建设五华网站建设 优帮云
  • 如何查询网站域名备案重庆微信网站建设多少钱
  • Apache Doris 4.0 版本正式发布:全面升级 AI 与搜索能力,强化离线计算
  • 苏州网站建设工作室主要的网站开发技术
  • 实现 “先排除数组中对象的 showTiltle: true 字段,再判断两个数组的对象内容是否完全相同(不考虑顺序、只关注对象值和增删和值的变化)”
  • 织梦cms做好的网站怎样上传到服务器做企业网站的步骤
  • 个人备案网站改企业备案网上卡片制作
  • h5游戏免费下载:打喷嚏的喷火龙