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

发布于 2022-09-20 05:14:38 字数 196 浏览 22 评论 7

大家好,请教一个书《linux设备驱动程序》第三版中的一个问题。
书410页第5行有语“ 举个例子,vmalloc分配的内存具有一个虚拟地址(但并不存在直接的物理映射) 。”  ,这句话没看明白,不存在直接的物理映射,那就没有映射到物理内存上了吗? 不映射到物理内存上的话,那比如对这个虚拟地址赋值又写到哪里去了呢???

谢谢了先!!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(7

絕版丫頭 2022-09-20 06:48:02

哈哈  同意,   我也理解了

时常饿 2022-09-20 06:48:02

就是vmalloc分配的地址,不能线性的映射物理地址。需要进行页表转换才能得到物理地址。

2022-09-20 06:48:01

同意LS 蜗牛老兄的。老兄你越来越厉害了啊。。。

困倦 2022-09-20 06:47:59

本帖最后由 蓝豆 于 2010-05-31 17:51 编辑

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

可可 2022-09-20 06:47:59

回复 2# yoyocall

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

╰◇生如夏花灿烂 2022-09-20 06:34:40

基本明白了,非常感谢!!

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

你是年少的欢喜 2022-09-20 06:33:01

vmalloc分配的是虚拟地址空间,在你使用该空间之前,是不会与物理内存发生映射关系的,而当你读写这段地址时,会发生缺页异常,从而进行物理内存的分配。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文