免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2605 | 回复: 0
打印 上一主题 下一主题

[内存管理] 用户态地址空间页目录表是如何建立的? [复制链接]

论坛徽章:
3
15-16赛季CBA联赛之山东
日期:2016-10-30 08:47:3015-16赛季CBA联赛之佛山
日期:2016-12-17 00:06:31CU十四周年纪念徽章
日期:2017-12-03 01:04:02
1 [报告]
发表于 2012-09-29 19:52 |显示全部楼层
嗯嗯...

斑竹就是斑竹啊。
再引申一下,

1. 所以当一个新进程建立时,只要分配一个页目录就可以了,映射关系可以暂时不用设置。
然后读取可执行文件,开始加载程序,这时就开始依赖缺页异常了。当加载完最初需要的代码段和数据段,程序可以执行了,操作系统将PC指向可执行程序的入口,设置好运行时栈起始点,开始执行。然后就是缺页异常不断发生,缺页异常不断被处理的过程......

2. 虚拟地址空间中的一段属性相同并且地址连续的区域称之为一个VMA(Virtual Memory Area, 注意不是Virtual Memory Address那个VMA, 当然它们确实都叫VMA...), 这个VMA当然是内核里面的一个管理概念, 体现为内核代码里的一个数据结构。一个VMA可能映射至一个或者多个物理Page. 代码段数据段会不会换出和进程的“静态存储 动态存储”概念几乎没什么关系,只要内核的换页对于进程是透明的(嗯,实际上它们就是透明的),换哪个区域都不会有影响 -- 换了又怎么样?只要内核想换或者认为需要换 -- 进程需要时还可以换回来。对于进程来说,把“静态存储区域”理解为是一段死的一直存在在虚拟内存空间中的指令/代码总是没有问题的 -- 因为换页是透明的。所以,所谓“静态/动态内存”是一个从进程的虚拟空间角度去考察的概念,主要是看内存区域会不会动态伸缩/增减,内核是不用管的。


以上。本人理解有限,如有误,砖轻拍,谢谢。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP