免费注册 查看新帖 |

Chinaunix

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

[内核入门] 请教关于内核把页划分为不同的区的问题? [复制链接]

论坛徽章:
1
15-16赛季CBA联赛之辽宁
日期:2016-07-06 16:53:09
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-07-04 15:38 |只看该作者 |倒序浏览


1:怎么ZONE_DMA,ZONE_NORMAL区的物理内存小于896MB呢,不是说内核地址空间在高3G-4G之间吗?

2:ZONE_HIGHMEM这个区的页怎么不能映射到内核地址空间呢?

3:如果在内核kmalloc申请内存,是在哪个区申请呢,如果按照书上说的,ZONE_HIGHMEM这个区不能映射到内核地址空间,那能分配的内存不是很小?小于896MB。

4:如果用户空间申请内存,又是在哪个区申请呢?

论坛徽章:
46
2015小元宵徽章
日期:2015-03-06 15:58:18羊年新春福章
日期:2015-04-14 10:37:422015年亚洲杯之阿曼
日期:2015-04-14 10:41:50NBA常规赛纪念章
日期:2015-05-04 22:32:03NBA季后赛大富翁
日期:2015-05-04 22:34:11菠菜明灯
日期:2015-05-04 22:35:49新奥尔良黄蜂
日期:2015-05-04 22:49:2315-16赛季CBA联赛之广夏
日期:2015-12-11 15:02:342015年亚洲杯之巴勒斯坦
日期:2015-03-04 19:56:562015年亚洲杯之阿联酋
日期:2015-03-04 11:19:04休斯顿火箭
日期:2015-03-02 16:32:11纽约尼克斯
日期:2015-03-02 16:09:04
2 [报告]
发表于 2014-07-04 16:37 |只看该作者
1:怎么ZONE_DMA,ZONE_NORMAL区的物理内存小于896MB呢,不是说内核地址空间在高3G-4G之间吗?
这里的896M是从物理内存上说的,3-4G指的是线性地址来说的
2:ZONE_HIGHMEM这个区的页怎么不能映射到内核地址空间呢?
linux只有1G的内核空间,如果你有大于1G的内存的时候,肯定不能都做好映射,所以内核采取的方法是,留出一部分线性空间(3G+896M - 4G,大约120M左右),用于做高端映射,这部分空间比较灵活
3:如果在内核kmalloc申请内存,是在哪个区申请呢,如果按照书上说的,ZONE_HIGHMEM这个区不能映射到内核地址空间,那能分配的内存不是很小?小于896MB。
这个好像是取决于你调用时候传的参数
4:如果用户空间申请内存,又是在哪个区申请呢?
这里好像是优先从高端内存中分

论坛徽章:
15
射手座
日期:2014-02-26 13:45:082015年迎新春徽章
日期:2015-03-04 09:54:452015年辞旧岁徽章
日期:2015-03-03 16:54:15羊年新春福章
日期:2015-02-26 08:47:552015年亚洲杯之卡塔尔
日期:2015-02-03 08:33:45射手座
日期:2014-12-31 08:36:51水瓶座
日期:2014-06-04 08:33:52天蝎座
日期:2014-05-14 14:30:41天秤座
日期:2014-04-21 08:37:08处女座
日期:2014-04-18 16:57:05戌狗
日期:2014-04-04 12:21:33技术图书徽章
日期:2014-03-25 09:00:29
3 [报告]
发表于 2014-07-05 13:34 |只看该作者
1、概念不同,这里区是指物理内存,你说的3-4G是虚拟地址空间。

2、ZONE_HIGHMEM可以映射到内核地址空间中,通过vmalloc或其它方式。但通常情况下,内核使用低端内存。

3、kmalloc取决于传入的flag,不同的flag,内存的分配策略不一样。

4、用户空间申请内存,通常标记为GFP_USER,默认先从高端内存中分配。

论坛徽章:
1
15-16赛季CBA联赛之辽宁
日期:2016-07-06 16:53:09
4 [报告]
发表于 2014-07-06 08:04 |只看该作者
回复 2# super皮波


    留出一部分线性空间(3G+896M - 4G,大约120M左右),用于做高端映射,这部分空间比较灵活
////////////////////////////////////////////////////////////////////////////////////////////
留出的128M内核线性空间用于高端内存映射,是不是能映射的高端内存也只有128M???

论坛徽章:
15
射手座
日期:2014-02-26 13:45:082015年迎新春徽章
日期:2015-03-04 09:54:452015年辞旧岁徽章
日期:2015-03-03 16:54:15羊年新春福章
日期:2015-02-26 08:47:552015年亚洲杯之卡塔尔
日期:2015-02-03 08:33:45射手座
日期:2014-12-31 08:36:51水瓶座
日期:2014-06-04 08:33:52天蝎座
日期:2014-05-14 14:30:41天秤座
日期:2014-04-21 08:37:08处女座
日期:2014-04-18 16:57:05戌狗
日期:2014-04-04 12:21:33技术图书徽章
日期:2014-03-25 09:00:29
5 [报告]
发表于 2014-07-06 10:04 |只看该作者
daxiguagg 发表于 2014-07-06 08:04
回复 2# super皮波

是的,能映射高端内存的内核地址空间只有128M,从896M-1024M。
但这仅对于32位的情况,64位情况不同。。。

论坛徽章:
1
15-16赛季CBA联赛之辽宁
日期:2016-07-06 16:53:09
6 [报告]
发表于 2014-07-06 11:18 |只看该作者
还有个问题,linux内核内存不分页,也就是不会交换到磁盘。那如果机器物理内存是512MB,在3-4G内核虚拟地址上,又怎么映射呢?

论坛徽章:
46
2015小元宵徽章
日期:2015-03-06 15:58:18羊年新春福章
日期:2015-04-14 10:37:422015年亚洲杯之阿曼
日期:2015-04-14 10:41:50NBA常规赛纪念章
日期:2015-05-04 22:32:03NBA季后赛大富翁
日期:2015-05-04 22:34:11菠菜明灯
日期:2015-05-04 22:35:49新奥尔良黄蜂
日期:2015-05-04 22:49:2315-16赛季CBA联赛之广夏
日期:2015-12-11 15:02:342015年亚洲杯之巴勒斯坦
日期:2015-03-04 19:56:562015年亚洲杯之阿联酋
日期:2015-03-04 11:19:04休斯顿火箭
日期:2015-03-02 16:32:11纽约尼克斯
日期:2015-03-02 16:09:04
7 [报告]
发表于 2014-07-06 11:38 |只看该作者
实际有不到120M的空间,128M的空间中有一些空洞,这部分就是高端内存
回复 4# daxiguagg


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

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP