免费注册 查看新帖 |

Chinaunix

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

“虚拟地址不存在直接的物理映射”怎么理解?? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-05-30 15:31 |只看该作者 |倒序浏览
大家好,请教一个书《linux设备驱动程序》第三版中的一个问题。
书410页第5行有语“ 举个例子,vmalloc分配的内存具有一个虚拟地址(但并不存在直接的物理映射) 。”  ,这句话没看明白,不存在直接的物理映射,那就没有映射到物理内存上了吗? 不映射到物理内存上的话,那比如对这个虚拟地址赋值又写到哪里去了呢???

谢谢了先!!

论坛徽章:
0
2 [报告]
发表于 2010-05-30 21:10 |只看该作者
vmalloc分配的是虚拟地址空间,在你使用该空间之前,是不会与物理内存发生映射关系的,而当你读写这段地址时,会发生缺页异常,从而进行物理内存的分配。

论坛徽章:
0
3 [报告]
发表于 2010-05-31 14:33 |只看该作者
基本明白了,非常感谢!!

晚上回去再翻翻书,再看看 vmalloc 和 kmalloc 的部分。

论坛徽章:
0
4 [报告]
发表于 2010-05-31 17:49 |只看该作者
本帖最后由 蓝豆 于 2010-05-31 17:51 编辑

这个就相当于我在我家对你说:一会儿跟我去超市,我想买个锅,你丫借我100块钱吧?你说:行。当我跟你说完这句话时你并没真正拿出100借给我,而是当我在收银台交钱时借了我100块。

论坛徽章:
0
5 [报告]
发表于 2010-06-01 15:51 |只看该作者
回复 2# yoyocall


    错了吧兄弟。kernel态运行的代码除了在COPY_FROM_USER那里可能会发生page fault以外没有任何地方可以发生缺页。vmalloc返回时page table已经建立好了。
    我理解楼主说的“直接”二字是关键,就是说vmalloc出来的virtual address不是固定地映射到phsycal address上去的,主要和get_free_pages,kmalloc等区分,它们都是用的固定映射。

论坛徽章:
0
6 [报告]
发表于 2010-06-01 23:36 |只看该作者
同意LS 蜗牛老兄的。老兄你越来越厉害了啊。。。

论坛徽章:
0
7 [报告]
发表于 2010-06-04 21:31 |只看该作者
哈哈  同意,   我也理解了

论坛徽章:
0
8 [报告]
发表于 2010-06-10 11:25 |只看该作者
就是vmalloc分配的地址,不能线性的映射物理地址。需要进行页表转换才能得到物理地址。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP