免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: chenzhanyiczy
打印 上一主题 下一主题

虚拟地址问题求助!!高手进!! [复制链接]

论坛徽章:
0
41 [报告]
发表于 2009-11-09 16:07 |只看该作者

回复 #1 chenzhanyiczy 的帖子

linux使用页,实际上并不真正使用段的功能,每个进程的段设置的线性地址相同。但不同进程的页影射不同,这样不同进程就分开了。在一开始分配时code和data区不可能重叠,而其code是只读的,至于变化的数据区bss涉及一个brk变量,就是数据空间的顶,他的每次增减是都要检查,以避免和栈区重叠,所以不用担心。

论坛徽章:
0
42 [报告]
发表于 2009-11-09 20:29 |只看该作者
楼上的是对的,段是16位时代的产物,目的是把16位地址变为20位。到了I386,32位操作系统出来以后,段纯粹是为了兼容为保留的。

32位操作系统根本无需那么复杂的概念,所以直接把所有段的基地址设置为相同。这就相当于没有段了。

在linux下(Windows好象也是如此),所有进程的代码段都是从一个固定的线性地址开始,在编译器生成目标文件以后,各个段都只有相对地址,所以连接器能够从容布局所有的段。

论坛徽章:
0
43 [报告]
发表于 2009-11-09 21:13 |只看该作者

回复 #42 billypeng 的帖子

windows下也是如此。
intel IA32架构关于这一块一直是个“累赘”,应该所有主流OS都是只用了分页而没有用分段

论坛徽章:
0
44 [报告]
发表于 2009-11-10 09:48 |只看该作者
对于一个进程来说,代码段(text),数据段位于同一个虚拟空间中(0-3G用户空间)。现在还没有一个进程能够占用这么大的虚址空间,其实他们只用很小一部分。如果很大的进程,可以使用64位机。所有的进程用户空间虚址都是0-3G,为何不会混乱呢,关键在于真正存储这些进程数据的物理页框是不一样的。如果两个进程共享同一物理页框,那么他们就可以利用这个页框交换数据信息。呵呵

论坛徽章:
0
45 [报告]
发表于 2009-11-10 09:53 |只看该作者
其实,text,bss,.....这些称谓和机器没有关系,他们只是编译器的术语,是编译器对不同数据段的分类,便于合并。和x86的地址分段毫无关系。分段机制基本上退出历史舞台,但他的贡献不可磨灭,x86中他仍在影响着

论坛徽章:
0
46 [报告]
发表于 2009-11-10 15:16 |只看该作者
原帖由 chenzhanyiczy 于 2009-11-8 23:20 发表



但问题就在于偏移有可能相同。如果相同的话,那不是就乱套了吗?




  不同的段怎么会是同样的地址呢?反汇编一个ELF就知道了啊

论坛徽章:
0
47 [报告]
发表于 2009-11-10 17:51 |只看该作者
这是链接器的工作,具体的工作过程推荐两本书,尤其是后一本,这个问题说得非常清楚
《深入理解计算机系统》
《程序员的自我修养-链接、装载和库》

论坛徽章:
2
程序设计版块每日发帖之星
日期:2016-08-10 06:20:00每日论坛发贴之星
日期:2016-08-10 06:20:00
48 [报告]
发表于 2009-11-10 18:40 |只看该作者
我认为链接器会在链接阶段会把一个程序中的不同段映射到不同的虚拟地址,这个程序以某个进程运行时,这个进程里面不同的虚拟地址映射到不同的线性地址,不同的线性地址再映射到不同的物理地址上。

论坛徽章:
0
49 [报告]
发表于 2009-11-11 09:28 |只看该作者
原帖由 ytsmtipe 于 2009-11-10 18:40 发表
我认为链接器会在链接阶段会把一个程序中的不同段映射到不同的虚拟地址,这个程序以某个进程运行时,这个进程里面不同的虚拟地址映射到不同的线性地址,不同的线性地址再映射到不同的物理地址上。

程序在文件中是浮动的地址,载入内存中运行时,重新定位地址。

论坛徽章:
0
50 [报告]
发表于 2009-11-11 22:39 |只看该作者
谁说主流的 OS 没使用分段的???

占有 98% 市场份额的 windows 属不属主流的 OS


典型的使用 fs 寄存器来管理 tls
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP