- 博客(3)
- 收藏
- 关注
原创 【思维随笔】库需要具备什么样的特性才能在各个进程间实现真正共享?
问题:什么是真正的共享? 回答:一份代码放之四海皆可用;说人话就是一个SO的代码段被加载到内存中后,依赖该SO的进程只要把SO的代码对应的物理页映射到自己的虚拟地址空间中就可以直接访问使用了,也就是所有的进程都共享一份存放了SO代码的物理内存,而不是每个进程都有一份代码副本(太浪费物理内存) 问题:怎么情况下进程才需要单独拷贝一份SO的代码给自己用? 回答:SO在编译的时候,生成的指令代码中使用了绝对地址寻址模式,这种情况下符号只能放在这个绝对地址上才能被访问到(说人话举例子呢?),编译链接过程中我们
2022-10-01 02:36:37
114
原创 编译地址与加载地址与运行地址
来自虚拟化课2 建立了一个临时页表,因为xen加载的地址可能与编译时指定的地址是不一致的,这种情况下我们会建立一个页表,对他们进行偏移映射,达到虚拟地址与编译地址是一致的效果,这样我们就不用做一些relocation的动作了,紧接着就是将MMU使能与打开,到这里就结束了一些简单的初始化 链接脚本中指定的就是各个符号的编译链接地址(我们就简称为编译地址来方便理解吧) 镜像加载到内存某个地址上,这个地址就是这个镜像加载后的起始运行地址,如果这个加载的起始运行地址 与 镜像中的起始编译地址
2022-09-30 11:41:11
311
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人