V
有效,如果此位置位,表明此PTE有效
FOE
“执行时失效”,无论合时只要执行包含在此页面中的指令,处理器都将报告页面错误并将控制传递
FOW
“写时失效”, 除了页面错误发生在对此页面的写时,其他与上相同 。
FOR
“读时失效”,除了页面错误发生在对此页面的读时,其他与上相同 。
ASM
地址空间匹配 。被操作系统用于清洗转换缓冲中的某些入口 。
KRE
运行在核心模式下的代码可以读此页面 。
URE
运行在用户模式下的代码可以读此页面 。
GH
将整个块映射到单个而不是多个转换缓冲时的隐含粒度 。
KWE
运行在核心模式下的代码可以写此页面 。
UWE
运行在用户模式下的代码可以写此页面 。
page frame number
对于V位置位的PTE,此域包含了对应此PTE的物理页面框号;对于无效PTE,此域不为0,它包含了页面在交换文件中位置的信息 。
以下两位由Linux定义并使用 。
_PAGE_DIRTY
如果置位,此页面要被写入交换文件 。
_PAGE_ACCESSED
Linux用它表示页面已经被访问过 。
3.2高速缓冲
如果用上述理论模型来实现一个系统,它可能可以工作,但效率不会高 。操作系统设计者和处理器设计者都在努力以提高系统的性能 。除了制造更快的CPU和内存外,最好的办法是在高速缓冲中维护有用信息和数据以加快某些操作 。Linux使用了许多与高速缓冲相关的内存管理策略 。
Buffer Cache
这个buffer cache中包含了被块设备驱动使用的数据缓冲 。
这些缓冲的单元的大小一般固定(例如说512字节)并且包含从块设备读出或者写入的信息块 。块设备是仅能够以固定大小块进行读写操作的设备 。所有的硬盘都是块设备 。
利用设备标志符和所需块号作索引可以在buffer cache中迅速地找到数据 。块设备只能够通过buffer cache来存取 。如果数据在buffer cache中可以找到则无需从物理块设备(如硬盘)中读取,这样可以加速访问 。
Page Cache
用来加速硬盘上可执行映象文件与数据文件的存取 。
它每次缓冲一个页面的文件内容 。页面从磁盘上读入内存后缓存在page cache中 。
Swap Cache
只有修改过的页面存储在交换文件中 。
只要这些页面在写入到交换文件后没有被修改,则下次此页面被交换出内存时,就不必再进行更新写操作,这些页面都可以简单的丢弃 。在交换频繁发生的系统中,Swap Cache可以省下很多不必要且耗时的磁盘操作 。
Hardware Caches
一个常见的hardware cache是处理器中的页表入口cache 。处理器不总是直接读取页表而是在需要时缓存页面的转换 。这种cache又叫做转换旁视缓冲(Translation Look-aside Buffers),它包含系统中一个或多个处理器的页表入口的缓冲拷贝 。
当发出对虚拟地址的引用时,处理器试图找到相匹配的TLB入口 。如果找到则直接将虚拟地址转换成物理地址并对数据进行处理 。如果没有找到则向操作系统寻求帮助 。处理器将向操作系统发出TLB失配信号,它使用一个特定的系统机制来将此异常通知操作系统 。操作系统则为此地址匹配对产生新的TLB入口 。当操作系统清除此异常时,处理器将再次进行虚拟地址转换 。由于此时在TLB中已经有相应的入口,这次操作将成功 。
使用高速缓存的缺点在于Linux必须消耗更多的时间和空间来维护这些缓存,并且当缓存系统崩溃时系统也将崩溃 。
3.3Linux 页表
图3.3 Linux的三级页表结构
Linux总是假定处理器有三级页表 。每个页表通过所包含的下级页表的页面框号来访问 。图3.3给出了虚拟地址是如何分割成多个域的,每个域提供了某个指定页表的偏移 。为了将虚拟地址转换成物理地址,处理器必须得到每个域的值 。这个过程将持续三次直到对应于虚拟地址的物理页面框号被找到 。最后再使用虚拟地址中的最后一个域,得到了页面中数据的地址 。
推荐阅读
- 以Linux做路由器的问题
- Linux 核心--1.前言
- 红豆糖水的功效与作用 红豆糖水的功效与作用禁忌
- Linux 核心--3.软件基础
- 认识Linux操作系统下三大便利开源防火墙
- 如何在Linux中设置磁盘限额?
- Linux下的各种备份方法汇总
- Linux 内核解读入门
- linux使用经验点滴
- 安装 Linux 无盘工作站
