gpt4 book ai didi

linux - 帧数=页数(linux)?

转载 作者:IT王子 更新时间:2023-10-29 00:47:13 26 4
gpt4 key购买 nike

我正在研究 linux 设备驱动程序,发现页数等于帧数。每个页面映射到每个框架。它说只要程序需要内存,它就会分配页面。

但是我发现在操作系统书籍中,虚拟地址分为页面,这些页面被加载到框架中。那么页面数如何等于框架?

以上哪个是正确的? linux 如何在页表中存储有关虚拟、页、帧映射的信息?

我完全糊涂了。

最佳答案

物理页面称为页面框架(您可以称它们为框架)。术语 page 是为虚拟内存中的页面保留的。

虚拟内存被内核分成大小相等的 block 。物理内存也分为大小相同的页(页框)。

例如,如果我们有 4GB 的 RAM,在 32 位架构上,这意味着:1048576 个大小为 4KB 的页框

我们继续,

内核为每个页框(物理页)维护一个结构struct page。这个结构定义在linux/mm_types.h(https://github.com/torvalds/linux/blob/master/include/linux/mm_types.h)中,这个结构包含一个名为mapping的成员(struct address_space *mapping)它指定页框所在的地址空间。还有一个名为 index 的成员,表示此映射中的偏移量。

所有结构页面都保存在全局 mem_map 数组中,内核使用该数组来了解虚拟内存和物理内存之间的所有关联。

最后,要将虚拟地址转换为物理地址,内核使用 asm-i386/page.h 中定义的宏 virt_to_page(),它指向 pfn_to_page( https://github.com/torvalds/linux/blob/master/include/asm-generic/memory_model.h ).

在举例之前,让我们先看看一个地址在32位架构中的布局

| 10 位 - 目录 | 10 位 - 页表 | 12 位 - 偏移 |

让我们看一个将内存虚拟地址转换为物理地址的示例:

http://img11.imageshack.us/img11/9426/pagingexample.png

希望这对您有所帮助。

问候。

关于linux - 帧数=页数(linux)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11783981/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com