免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: arm-linux-gcc

[内存管理] 问个ARM的页表问题,进程切换时内核页表如何处理的 [复制链接]

论坛徽章:
0
发表于 2013-04-22 16:04 |显示全部楼层
哈哈 你不是对内存管理不了解,最主要的是你没理解好内核的初始化。内核在初始化时会建立一个pid为1的进程,这个进程就包含了内核空间的一级和二级页表了,因为linux里面的所有的以后的进程都是直接或者间接地通过1号进程fork或clone的,所以它们全面继承了1号进程的内核空间,也就是说1号进程是linux系统中所有的进程的祖先。这个是linux2.6版本之前的处理。3.0我没研究过,希望没有误导楼主。另外提一下,楼主对进程的切换还是可以的,哈哈看来基础不差!

论坛徽章:
0
发表于 2013-04-22 16:06 |显示全部楼层
我晕,看了你的题目就回答了你的问题,原来有人已经回答了!

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:58:11
发表于 2013-04-22 16:33 |显示全部楼层
回复 11# uliux


内存管理,进程管理这些,我没系统的研究过代码,只是看了点书再加上自己的一些理解,
由于没看过代码,如果遇到一些深层次的问题的话,自己的那些理解可能就难以自圆其说了


论坛徽章:
0
发表于 2013-09-17 10:45 |显示全部楼层
你的说还不够准确,我的理解是:每个进程都有自己的第一级页表,其中内核地址范围内的二级页表,即ptetable是所有进程都是公共的,因为所有进程的一级页表都是通过引用的方式,来引用到同一个二级页表,但各个进程的一级页表都有自己的备份,这个备份是怎么跟内核部分的一级页表的内核部分的地址进行同步的,在哪些地方同步的?回复 10# junnyg


   

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:58:11
发表于 2013-09-18 15:58 |显示全部楼层
本帖最后由 arm-linux-gcc 于 2013-09-18 22:34 编辑

回复 14# xiaojsj

内核一级页表放在0xc0004000~0xc0008000,其中low memory区域的映射一直会保持,这部分不需要同步,因为不会变
需要同步只是vmalloc,kmap,kmap_atomic三个区域

用一个场景来说明:
1,
进程A ioremap映射了一个设备,内核对这个映射关系使用的是二级页表,一级页表项只是指向这个二级页表的一个索引,一般只需耗费二级页表中一个项就能够映射这个设备。
要注意这里写的一级页表项不是进程A的,而是写的内核主页表(0xc0004000),所以进程A去读写这个设备时会发生会发生段错误,
然后进入异常处理流程,最后会在函数do_translation_fault中去处理,在这个函数中就会填充进程A的相应一级页表项(直接从内核主页表中拷贝相应的entry过来),然后异常返回去重新执行引发异常的那条指令(就是读写设备的那条指令)。

2,进程B也要访问这个设备,他也去用上述ioremap的返回值,也会发生段错误,处理流程和1一样

假如将来iounmap,内核仅仅是将二级页表项设置为无效,即使这个二级页表中所有的项都设置无效了,也不会去释放这个二级页表,也就是说内核主页表将会一直指向这个二级页表。
然后如果进程B想继续访问这个设备,这个进程B通过自己的一级页表项找到了二级页表,但是二级页表中的内容已经被清零了,所以此时又发生段错误,那么这次在函数do_translation_fault处理时,就会真正报错了,内核会crash。

将来如果又要映射一个别的设备,那么可以直接使用上面说的二级页表,就无需去分配新的内存来作为二级页表了,所以二级页表即使不释放也不会浪费多少内存。




   

论坛徽章:
0
发表于 2013-09-18 17:57 |显示全部楼层
你的理解跟我的理解是一样的,你表述的很清晰。佩服一个
回复 15# arm-linux-gcc


   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP