我正在学习linux设备驱动程序,发现页数等于帧数。 每个页面映射到每个frame.It说像每当程序需要内存将分配页面。
但在 *** 作系统的书籍中,我发现像虚拟地址分成页面,这些页面被加载到框架中。那么页面的数量如何可以等于框架?
以上哪一项是正确的? 如何在页表中存储关于虚拟,页面,框架映射的信息?
我完全困惑。
在linux内核中的PTE结构
一个大于2GB的PE文件
我怎么能告诉linux保持一个页面,而不是驱逐它?
虚拟内存:处理一个和系统的一个
什么是PML4的简称?
为什么物理地址在运行中是相同的?
页面表总是在内存中? 页表会被换出吗?
VirtualqueryEx和ReadProcessMemory之间的关系
用日历和分页htaccess获得价值
找出一个进程在linux上使用多less内存页面
物理页面被称为page frames (你可以称之为框架)。 术语page是为虚拟内存中的 page保留的。
虚拟内存被内核分成大小相等的块。 物理内存也被分成相同大小的页面(页面框架)。
例如,如果我们有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 )的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)?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)