“虚拟地址不存在直接的物理映射”怎么理解??
大家好,请教一个书《linux设备驱动程序》第三版中的一个问题。
书410页第5行有语“ 举个例子,vmalloc分配的内存具有一个虚拟地址(但并不存在直接的物理映射) 。” ,这句话没看明白,不存在直接的物理映射,那就没有映射到物理内存上了吗? 不映射到物理内存上的话,那比如对这个虚拟地址赋值又写到哪里去了呢???
谢谢了先!!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
哈哈 同意, 我也理解了
就是vmalloc分配的地址,不能线性的映射物理地址。需要进行页表转换才能得到物理地址。
同意LS 蜗牛老兄的。老兄你越来越厉害了啊。。。
本帖最后由 蓝豆 于 2010-05-31 17:51 编辑
这个就相当于我在我家对你说:一会儿跟我去超市,我想买个锅,你丫借我100块钱吧?你说:行。当我跟你说完这句话时你并没真正拿出100借给我,而是当我在收银台交钱时借了我100块。
回复 2# yoyocall
错了吧兄弟。kernel态运行的代码除了在COPY_FROM_USER那里可能会发生page fault以外没有任何地方可以发生缺页。vmalloc返回时page table已经建立好了。
我理解楼主说的“直接”二字是关键,就是说vmalloc出来的virtual address不是固定地映射到phsycal address上去的,主要和get_free_pages,kmalloc等区分,它们都是用的固定映射。
基本明白了,非常感谢!!
晚上回去再翻翻书,再看看 vmalloc 和 kmalloc 的部分。
vmalloc分配的是虚拟地址空间,在你使用该空间之前,是不会与物理内存发生映射关系的,而当你读写这段地址时,会发生缺页异常,从而进行物理内存的分配。