免费注册 查看新帖 |

Chinaunix

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

请教一个内核内存管理的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-09-27 09:00 |只看该作者 |倒序浏览
内核空间中,从3G到vmalloc_start这段地址是物理内存映射区域(该区域中包含了内核镜像、物理页框表mem_map等等)
比如我们使用的VMware虚拟系统内存是160M,那么3G~3G+160M这片内存就应该映射物理内存。在物理内存映射区之后,就是vmalloc区域。
对于160M的系统而言,vmalloc_start位置应在3G+160M附近(在物理内存映射区与vmalloc_start期间还存在一个8M的gap来防止跃界),vmalloc_end的位置接近4G(最后位置系统会保留一片128k大小的区域用于专用页面映射)

请问: 如果在上述160M的虚拟机中,用vmalloc申请一块内存,那此内存块的首地址将是在3G+160M~4G之间,也就是说这块地址将不对应实际的物理内存;这样的话如果我往此内存块中存一个字符串,那字符串实际存在于什么地方呢?(既然地址不与物理内存对应,那肯定不会在某物理内存中咯)
难道是存在与虚拟内存中的?虚拟内存好象一般对应的是硬盘空间来的,这样可以解释存储问题,但是如果那样的话,对vmalloc出来的“内存”块操作将比kmalloc出的内存块要慢,因为读取操作不同嘛

不知道我的理解是否正确,请大家指教下~~

论坛徽章:
0
2 [报告]
发表于 2008-09-27 09:33 |只看该作者
彻底把vmalloc中什么是虚拟地址,什么是物理地址混淆了。
vmalloc_start是虚拟地址

论坛徽章:
0
3 [报告]
发表于 2008-09-27 09:49 |只看该作者

回复 #2 zx_wing 的帖子

我说的地址都是虚拟地址啊,vmalloc和kmalloc分配的不都是虚拟地址吗?
想想在160M的机器上,一个3G+160M左右的地址难道会是物理地址吗???

LS的大哥,我混淆了虚拟地址和物理地址么?不懂你什么意思。

论坛徽章:
0
4 [报告]
发表于 2008-09-27 10:04 |只看该作者
原帖由 cloudice 于 2008-9-27 09:49 发表
我说的地址都是虚拟地址啊,vmalloc和kmalloc分配的不都是虚拟地址吗?
想想在160M的机器上,一个3G+160M左右的地址难道会是物理地址吗???

LS的大哥,我混淆了虚拟地址和物理地址么?不懂你什么意思。

既然你知道是虚拟地址了,那应该能想到虚拟地址映射到什么物理地址取决于页表如何设定。
vmalloc分配到的虚拟地址同样映射到了160M以内的物理地址。3G+160M映射了物理地址是指内核最初建页表时会在页表的3G~4G部分映射所有低端内存(小于896M),这并不妨碍页表的其它部分映射相同内存的物理地址。

此外,即使你只有4M内存,3G+4M也可能是物理地址,当然这个和你这个问题没有关系。

论坛徽章:
0
5 [报告]
发表于 2008-09-27 10:32 |只看该作者
我大概知道你意思了,就是说分配到的虚拟地址在被映射到实际物理地址之前是没有什么实际意义的,在实际存储的时候会将此虚拟地址映射到某物理地址,进行读写等操作。
所以虚拟地址其实只对程序有意义,对内核来说它是靠不断地映射和调出内存页来达到管理目的。
可以说虚拟内存实际上是内核的内存管理策略带给程序的一种错觉而已了。
对么?

但是还有个疑问:你说的“3G+4M也可能是物理地址”是什么意思呢,如果你只有4M内存,那你的物理地址不就是0~4M吗?(3G+4M)这样的地址肯定不应该称为物理地址吧,它是物理地址加上了OFFSET的嘛,实际上就是所说的一开始就被映射了的啊。

论坛徽章:
0
6 [报告]
发表于 2008-09-27 10:41 |只看该作者
原帖由 cloudice 于 2008-9-27 10:32 发表
我大概知道你意思了,就是说分配到的虚拟地址在被映射到实际物理地址之前是没有什么实际意义的,在实际存储的时候会将此虚拟地址映射到某物理地址,进行读写等操作。
所以虚拟地址其实只对程序有意义,对内核来 ...

是的。可以看看http://linux.chinaunix.net/bbs/v ... p%3Bfilter%3Ddigest加强一下理解

物理地址可能对应的是设备的寄存器和设备内存,它可能占用固定的物理地址,不受你机器上有多少RAM的限制。

论坛徽章:
0
7 [报告]
发表于 2008-09-27 10:56 |只看该作者
哦,多谢大虾,我去看看那文章~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP