QNX手册学习笔记——Dynamic Linking
来源:互联网 发布:mac一键切换音频输出 编辑:程序博客网 时间:2024/06/05 03:15
原来链接也是操作系统的重要的组成部分,对于数据区和代码区的分配是链接所分配的。链接库,代码区和数据区等的存储位置是完全不同的
程序的链接分为静态链接和动态链接两种链接方式。静态链接相对于动态链接来讲,因为每一个program都会有自己一个单独的链接,而一个操作系统通常需要跑多个program(process),故占用内存较大,通常情况下较少使用。
对于动态链接,通常将program与library的融合从link time推迟到run time阶段。动态链接也可称之为部分链接,在链接阶段生成的可执行代码包含了库的信息,在runtime,program 开始前根据这些信息进行动态链接。进一步讲,可以在程序执行时进行链接。例如通用驱动可以根据访问不同的硬件设备加载不同的共享库。
共享对象究竟如何使用呢?QNX采用ELF格式。该格式有两种显示方式分别为linking view 和 execution view。后者与前者的不同是在进程创建阶段仅加载代码段和数据段(load segments),其余的调试信息和标识信息等则暂不链接。QNX的ELF采用的是execution view, 因此创建进程和加载速度更快。
文中给出了一个典型的x86的进程内存的存储方式,如下图所示。从此图可以对线程、进程和gurad page,数据区,代码区,堆区,程序栈区,共享内存和共享库一目了然。
程序管理需要报控制权交给runtime linker,让他进行链接处理。runtime linker 包含在C runtime library中。如果shared library尚未加载到memory中(此处不明白,没有在memory中,那放在哪了呢?应该是已经在memory中了,只是process的shared memory队列没有引用它而已吧),需要通过一定的查询方式找到它。此处有全局作用域概念,以及为提高速度的hash概念。对于全局作用域的概念,executables和libraries都适用;应该是针对不同进程之间都可以使用并可供其他的动态库(dynamiclibrary)使用。这与data仅供自己进程使用的概念是不一样的。
阅读全文
0 0
- QNX手册学习笔记——Dynamic Linking
- QNX手册学习笔记————IPC(2)
- QNX手册学习笔记————中断机制
- QNX手册学习笔记——IPC(3)
- QNX手册学习笔记——IPC(4)
- QNX手册学习————IPC(1)
- QNX学习笔记——IPC(5)
- QNX手册学习笔记------同优先级调度算法
- Dynamic Linking
- static linking and dynamic linking
- makefile dynamic linking
- QNX学习笔记之QNX Momentics IDE使用笔记
- QNX学习笔记之QNX Momentics IDE使用笔记
- Android Static Linking vs Dynamic Linking
- QNX学习笔记-Neutrino-QNX-boot启动流程分析
- QNX学习笔记-QNX下GDB的使用
- qnx学习笔记-QNX使用QT开发应用程序
- qnx学习笔记-QNX系统glib-2.44交叉编译
- wordpress优化小技巧之去除顶部工具条
- 问题 : 绩点计算
- 操作文件的类-----File
- N
- Android学习笔记——Service
- QNX手册学习笔记——Dynamic Linking
- Qt中QObject::sender()的用法
- ZooKeeper是什么?
- 计算器(按钮圆角型 点击变色)
- 【Linux】CentOS7.0网络开机不自启怎么配置
- iOS 内购流程整理
- window下配置cuda步骤
- 数据挖掘:Apriori(先验)算法
- 微信红包订单存储架构变迁的最佳实践