是帧数=页数(Linux)?

我正在学习Linux设备驱动程序,发现页数等于帧数。 每个页面映射到每个frame.It说像每当程序需要内存将分配页面。

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

以上哪一项是正确的? 如何在页表中存储关于虚拟,页面,框架映射的信息?

我完全困惑。

Solutions Collecting From Web of "是帧数=页数(Linux)?"

物理页面被称为page frames (你可以称之为框架)。 术语page是为虚拟内存中的 page保留的。

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

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

让我们继续,

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

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

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

在举例之前,我们来看看32位体系结构中的地址布局

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

我们来看一个将内存虚拟地址翻译成物理地址的例子:

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

希望这个帮助。

问候。