免费注册 查看新帖 |

Chinaunix

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

Linux里进程间虚拟地址是如何完全隔离开的呢? [复制链接]

论坛徽章:
2
亥猪
日期:2014-03-19 16:36:35午马
日期:2014-11-23 23:48:46
11 [报告]
发表于 2006-11-10 22:32 |只看该作者
原帖由 cuinantrue 于 2006-11-10 18:09 发表
今天查了下ARM9200的手册,他也是用协处理器CP15上的PID寄存器来做虚拟、物理地址映射的。这个寄存器里最多可以有128个进程,然后CP15用这128个PID(这个PID应该不是操作系统给他分配的进程号,而是与之对应的索引 ...


这个是 ARM ARM 上讲的fast context switch extension吧?
一般情况下改cp15 r2就可以了

论坛徽章:
0
12 [报告]
发表于 2006-11-11 01:24 |只看该作者
x86_64 的 virtual address 到物理地址转换的大致图







在64位模式下virtual address 是平坦64位线性地址(Liner address),经过分页机制处理后,得出52位的物理地址
保护模式下,virutal address 经过分段机制后转换为 Liner address,再经过分页机制处理后,得31位的物理地址



大致讲讲 protected mode 下的分页机制

1、x86 支持两种形式的转换:
    带扩展的物理地址转换(physical-address extensions)-- PAE 形式、 不带扩展的物理地址转换形式,即 Normal 形式。

    当CR4寄存器的 PAE 位置1时,处于 PAE 模式,物理地址可以支持到52位,PAE为0时,位于Normal模式,物理地址最多可以到40位。

                                          
2、根据页的大小和扩展模式可以组合为2级或3级转换,甚至只有一级转换:
     页的大小可以为:4K、2M 或者 4M。
     有几个表项为:Page Table(PTE):这个表项指向物理页面,2M和4M页大小的情况下无效
                          Page Directory(PDE):页表目录里指向PTE结构,2M和4M页大小情况下指向物理页
                          Page-Directory Pointer(PPDE):这个表项指向PDE,仅当PAE模式有效时才有效
   
3、CR3 寄存器:
     存在最上级的表页基地址 base-address,要么是PDE,要么是PPDE。
     当PAE模式时,bit5 - bit31 是 PPDE 的 base-address
     当Normal模式时,bit12- bit31 是PDE 的 base-address

以下是页为4K时的 Normal 模式的分页机制图


[ 本帖最后由 mik 于 2006-11-11 01:27 编辑 ]

论坛徽章:
0
13 [报告]
发表于 2006-11-13 13:21 |只看该作者
原帖由 cuinantrue 于 2006-11-10 12:14 发表


操作系统针对不同的进程,建立不同的页表?


是的~ linux中每个进程都有自己的页表

PS:LZ的问题是linux进程间虚拟地址的隔离问题 这个跟硬件平台关系并不太大
无论X86也好 ARM9也好 只要支持MMU的CPU都支持虚拟内存的
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP