免费注册 查看新帖 |

Chinaunix

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

[内存管理] 关于分页与映射的几个问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2017-04-01 23:02 |只看该作者 |倒序浏览
初学内存管理,看了CPU的保护模式和实模式。关于内核映射几个不明白的地方
1.32位CPU有4GB的地址空间,其中0XC0000000到0XFFFFFFFF是内核空间。我看书上这段地址是通过__pa()函数简单的减法映射到物理内存的开头,难道这段地址不需要经过分页转化成物理地址吗?
2.分页机制下是不是每个进程切换时都需要修改cr3为该进程的页目录起始物理地址?
3.内核空间的地址映射在进程的页目录怎么表示(这里意思是当进程要陷入内核时,进程是如何找到内核代码的地址的? )?
4.当内存小于896MB时则内存是全部被内核映射,这时候地址里没有用户空间的部分了吗?还是说当陷入内核时就会映射一次地址空间?

今天比较仔细看了分页机制,归结了五个问题。目前理解有很大偏差,有几个问题可能理解上就是错的。希望能得到大家的解答,非常感谢

论坛徽章:
13
15-16赛季CBA联赛之八一
日期:2016-07-08 21:00:1415-16赛季CBA联赛之同曦
日期:2017-02-15 14:26:1515-16赛季CBA联赛之佛山
日期:2017-02-20 14:19:2615-16赛季CBA联赛之青岛
日期:2017-05-07 16:49:1115-16赛季CBA联赛之广夏
日期:2017-07-30 09:13:1215-16赛季CBA联赛之广东
日期:2018-07-05 22:34:3615-16赛季CBA联赛之江苏
日期:2018-09-03 12:10:2115-16赛季CBA联赛之上海
日期:2018-09-25 03:49:2215-16赛季CBA联赛之广东
日期:2018-09-25 04:09:12
2 [报告]
发表于 2017-04-01 23:30 |只看该作者
本帖最后由 _nosay 于 2017-04-01 23:32 编辑

回复 1# 544430668

1. 都是A->..->B,不管A是用户地址还是内核地址,当中经历的页式映射过程(..)都是一样的,只不过如果A是内核地址,则安排的终点B,一定是A-3G;2. 是的;
3. 每个进程的映射表里都能记录着3-4G这个范围的虚拟地址的映射关系,但用户地址对应的目录项,指向的下一级页表,是进程独有的,内核地址对应的目录项,指向的下一级页表,所有进程指向同一份(想想变量和指针),这也是内核是所有进程公共空间的原因;
4. 内核地址(>3G的虚拟地址),必须映射到1G以下的物理地址,但1G以下的物理地址不一定非要映射给内核地址。

论坛徽章:
0
3 [报告]
发表于 2017-04-01 23:39 |只看该作者
回复 2# _nosay

非常感谢!刚整理完问题后发现自己搞混了映射,理解成了映射到虚拟地址。您回答的真好,一下子明白了,再次感谢

论坛徽章:
13
15-16赛季CBA联赛之八一
日期:2016-07-08 21:00:1415-16赛季CBA联赛之同曦
日期:2017-02-15 14:26:1515-16赛季CBA联赛之佛山
日期:2017-02-20 14:19:2615-16赛季CBA联赛之青岛
日期:2017-05-07 16:49:1115-16赛季CBA联赛之广夏
日期:2017-07-30 09:13:1215-16赛季CBA联赛之广东
日期:2018-07-05 22:34:3615-16赛季CBA联赛之江苏
日期:2018-09-03 12:10:2115-16赛季CBA联赛之上海
日期:2018-09-25 03:49:2215-16赛季CBA联赛之广东
日期:2018-09-25 04:09:12
4 [报告]
发表于 2017-04-01 23:39 |只看该作者
回复 2# _nosay

第4条,为了方便理解当前的问题才这样说,内核是可以访问高于1G的物理地址的,就是喂森么不是3-4G都按-3G映射为物理地址的原因。

论坛徽章:
0
5 [报告]
发表于 2017-04-02 00:06 |只看该作者
回复 4# _nosay

好的 这里还有两个问题想问1.如果执行一个程序,cpu的cs:ip是线性地址然后转换成物理地址读取指令的吗?然后一条指令执行完后是增加ip的值重复刚才的过程吗?
2.内存可以访问用户空间为什么还需要高端内核映射呢?


论坛徽章:
13
15-16赛季CBA联赛之八一
日期:2016-07-08 21:00:1415-16赛季CBA联赛之同曦
日期:2017-02-15 14:26:1515-16赛季CBA联赛之佛山
日期:2017-02-20 14:19:2615-16赛季CBA联赛之青岛
日期:2017-05-07 16:49:1115-16赛季CBA联赛之广夏
日期:2017-07-30 09:13:1215-16赛季CBA联赛之广东
日期:2018-07-05 22:34:3615-16赛季CBA联赛之江苏
日期:2018-09-03 12:10:2115-16赛季CBA联赛之上海
日期:2018-09-25 03:49:2215-16赛季CBA联赛之广东
日期:2018-09-25 04:09:12
6 [报告]
发表于 2017-04-02 00:39 |只看该作者
回复 5# 544430668

1. 是的,是的;2. 意义不一样,用户空间是进程独占的,如果内核想在>1G的物理内存分配一块所有进程的公共空间呢。。

论坛徽章:
0
7 [报告]
发表于 2017-04-02 20:10 |只看该作者
回复 6# _nosay

懂了懂了,感谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP