免费注册 查看新帖 |

Chinaunix

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

求助:内核静态大数组在物理上连续吗 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-12-09 10:18 |只看该作者 |倒序浏览
比如 static char buffer[ 512 * 1024 * 1024 ];
不知道这个buffer是否物理连续。内核具体是如何分配空间的??

论坛徽章:
0
2 [报告]
发表于 2011-12-09 10:34 |只看该作者
回复 1# non-style


    没人回?抛砖引玉一下,错了,勿喷。。
   
   是不是需要区别情况呢?
如果在申请的时候,没有付初始值的话,可能在编译的时候不会给他分配空间的。那么在程序运行时,使用的时候才会分配空间。具体连续不连续就不清楚了。
如果赋初始值的话,在编译的时候会有静态空间的,虚拟地址上连续,又是在内核空间,应该在物理上也是连续的吧?

还是坐等高人吧,,回答完了,发现没有一条是我能确定的,哈哈

论坛徽章:
0
3 [报告]
发表于 2011-12-09 11:07 |只看该作者
回复 2# mihouge


    关于写时才真实分配内存,是可以肯定的。
逻辑上也是一定连续的啦。但是内核空间不一定都物理连续,比如vmalloc分配的内存。

论坛徽章:
1
拜羊年徽章
日期:2015-03-03 16:15:43
4 [报告]
发表于 2011-12-09 11:31 |只看该作者
回复  mihouge


    关于写时才真实分配内存,是可以肯定的。
逻辑上也是一定连续的啦。但是内核空间 ...
non-style 发表于 2011-12-09 11:07


512M, 太大了; 应该属于external fragment一类;buddy allocator不能应付;

论坛徽章:
22
丑牛
日期:2014-08-15 14:32:0015-16赛季CBA联赛之同曦
日期:2017-12-14 15:28:14黑曼巴
日期:2017-08-10 08:14:342017金鸡报晓
日期:2017-02-08 10:39:42黑曼巴
日期:2016-11-15 15:48:38CU十四周年纪念徽章
日期:2016-11-09 13:19:1015-16赛季CBA联赛之同曦
日期:2016-04-08 18:00:03平安夜徽章
日期:2015-12-26 00:06:30程序设计版块每日发帖之星
日期:2015-12-03 06:20:002015七夕节徽章
日期:2015-08-21 11:06:17IT运维版块每日发帖之星
日期:2015-08-09 06:20:002015亚冠之吉达阿赫利
日期:2015-07-03 08:39:42
5 [报告]
发表于 2011-12-09 16:56 |只看该作者
回复 4# linuxfellow

我认为
假设计算机的内存大小大于512MB
static int xx[SIZE];
内核空间返回一个地址vaddr,而它相应的物理地址就是vaddr-0xc0000000。而相应的页可能已经被用了,那么直接改写该页肯定发生错误。这样子就是不安全的。

普通进程分配一个static变量放的是.data段里面,如果页不够了就产生一个缺页中断。
但是内核空间呢。糊涂了。。大神求讲解下

论坛徽章:
0
6 [报告]
发表于 2011-12-09 17:26 |只看该作者
本帖最后由 npuazm 于 2011-12-09 17:34 编辑

假设计算机的内存大小大于512MB
static int xx[SIZE];

看了大家的回复,我晕乎了
这个是static变量,该地址不是在编译的时候就确定好了吗,另外地址空间也分配了吧?
该地址用到的空间范围好像和 memory manage 的空间没有重叠吧?
那个专家给讲讲

论坛徽章:
22
丑牛
日期:2014-08-15 14:32:0015-16赛季CBA联赛之同曦
日期:2017-12-14 15:28:14黑曼巴
日期:2017-08-10 08:14:342017金鸡报晓
日期:2017-02-08 10:39:42黑曼巴
日期:2016-11-15 15:48:38CU十四周年纪念徽章
日期:2016-11-09 13:19:1015-16赛季CBA联赛之同曦
日期:2016-04-08 18:00:03平安夜徽章
日期:2015-12-26 00:06:30程序设计版块每日发帖之星
日期:2015-12-03 06:20:002015七夕节徽章
日期:2015-08-21 11:06:17IT运维版块每日发帖之星
日期:2015-08-09 06:20:002015亚冠之吉达阿赫利
日期:2015-07-03 08:39:42
7 [报告]
发表于 2011-12-09 17:33 |只看该作者
本帖最后由 amarant 于 2011-12-09 17:35 编辑

回复 6# npuazm


    普通的进程.data段里的数据,在链接后是有确定的地址。那是虚拟地址,实际的物理地址还不知道
但在内核空间,ZONE_HIHGMEM意外的地址都是一个直接的映射关系。知道了虚拟地址就等于知道了物理地址。
我假设一下内存大小是为了简化下,我也不知道内存小于512MB,在内核声明一个512MB的静态变量会怎么样,vmalloc来分配吗?
而且如果没有高端内存的话,vmalloc实质上是干了什么呢?

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
8 [报告]
发表于 2011-12-09 17:34 |只看该作者
回复 4# linuxfellow

嗯,这么大的内存,你未必能分配得到

论坛徽章:
22
丑牛
日期:2014-08-15 14:32:0015-16赛季CBA联赛之同曦
日期:2017-12-14 15:28:14黑曼巴
日期:2017-08-10 08:14:342017金鸡报晓
日期:2017-02-08 10:39:42黑曼巴
日期:2016-11-15 15:48:38CU十四周年纪念徽章
日期:2016-11-09 13:19:1015-16赛季CBA联赛之同曦
日期:2016-04-08 18:00:03平安夜徽章
日期:2015-12-26 00:06:30程序设计版块每日发帖之星
日期:2015-12-03 06:20:002015七夕节徽章
日期:2015-08-21 11:06:17IT运维版块每日发帖之星
日期:2015-08-09 06:20:002015亚冠之吉达阿赫利
日期:2015-07-03 08:39:42
9 [报告]
发表于 2011-12-09 17:39 |只看该作者
回复 8# Godbach


    他是声明为static的,不是通过kmalloc/ get_free_page 来分配的。

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
10 [报告]
发表于 2011-12-09 17:41 |只看该作者
回复 9# amarant
谢谢提醒。

我这里并不是指动态分配,其实就是能否获取到这样的静态存储区域。

可以试一下 memset,是不是可以成功执行这么大一块内存。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP