对页相关概念以及TLB中存放内容进行概念解释和区分
1. 基本概念及区别
a. 虚拟页面(虚页、逻辑页)
- 定义:虚拟页面是程序在其虚拟地址空间中使用的固定大小的内存块。每个进程都有自己的虚拟地址空间,虚拟页面是该空间中的基本单位。
- 特点:
- 逻辑存在:虚拟页面在物理内存中未必存在,可能存储在磁盘上(例如交换区或文件)。
- 地址独立:不同进程的虚拟页面可以有相同的虚拟页号,但它们映射到不同的物理页面。
b. 物理页面(实页、页框)
- 定义:物理页面是实际存在于物理内存(RAM)中的固定大小的内存块。物理内存被划分为若干个页框,每个页框与一个物理页面对应。
- 特点:
- 实际存在:物理页面是硬件内存的一部分,直接参与数据的读写操作。
- 有限资源:物理内存容量有限,页框数量固定。
c. 虚页号(Virtual Page Number, VPN)
- 定义:虚页号是虚拟地址中用于标识特定虚拟页面的部分。在虚拟地址中,地址通常被划分为页号和页内偏移量,页号即为虚页号。
- 用途:用于查找页表中对应的页表项,以确定该虚拟页面映射到哪个物理页面。
d. 实页号(Physical Page Number, PPN)
- 定义:实页号是物理地址中用于标识特定物理页面(页框)的部分。在物理地址中,同样划分为页号和页内偏移量,页号即为实页号。
- 用途:用于构造物理地址,指向具体的物理内存位置。
e. 页表(Page Table)
- 定义:页表是一个数据结构,用于存储虚拟页到物理页的映射关系。每个进程都有自己的页表。
- 组成:页表由多个页表项(Page Table Entry, PTE)组成,每个页表项对应一个虚拟页面。
f. 页表项(Page Table Entry, PTE)
- 定义:页表项是页表中的基本单元,包含了虚拟页面与物理页面之间的映射信息。
- 内容:
- 实页号(PPN):指示该虚拟页映射到哪个物理页。
- 有效位(Valid Bit):指示该映射是否有效。
- 权限信息:如读、写、执行权限。
- 其他控制位:如访问位、修改位等。
2. 虚拟页面与物理页面的关系
虚拟页面和物理页面通过页表进行映射。每当程序访问某个虚拟地址时,系统会执行以下步骤:
- 地址分割:将虚拟地址分割为虚页号(VPN)和页内偏移量。
- 页表查找:使用VPN在页表中查找对应的页表项(PTE)。
- 地址转换:
- 如果页表项有效,取出实页号(PPN)并与页内偏移量组合,形成物理地址。
- 如果页表项无效,触发页缺失异常,系统将从磁盘中加载相应的物理页面。
3. TLB(Translation Lookaside Buffer)中的内容
a. TLB是什么?
TLB是一种高速缓存,位于CPU内部,用于加速虚拟地址到物理地址的转换过程。它存储最近使用的页表项,以减少访问页表的时间开销。
b. TLB中存储的内容
- 页表项(PTE):TLB中的每一项基本上包含一个页表项的关键信息,通常包括虚页号(VPN)和对应的实页号(PPN),以及权限和状态位等。
- 映射关系:TLB存储的是虚拟页号到物理页号的映射关系,而不是整个虚拟页面或物理页面的数据。
c. TLB的工作原理
-
地址查找:
- 当CPU需要访问某个虚拟地址时,首先在TLB中查找对应的VPN。
- 如果找到(称为TLB命中),直接获取PPN,快速完成地址转换。
- 如果未找到(称为TLB未命中),则需要访问页表,找到相应的PTE,并将其加载到TLB中以备下次使用。
-
性能提升:
- 由于TLB的查找速度远快于内存中页表的查找,TLB的存在显著提高了虚拟地址转换的效率。
4. 总结各概念的关系
- 虚拟页面(虚页)是程序逻辑上使用的内存单位,通过虚页号(VPN)进行标识。
- 物理页面(实页、页框)是实际内存中的存储单位,通过实页号(PPN)进行标识。
- 页表记录了所有虚拟页面到物理页面的映射,每个映射由一个页表项(PTE)表示。
- TLB缓存了部分页表项,存储的是虚页号到实页号的映射关系,以加快地址转换速度。
5. 示例说明
假设有以下情景:
- 程序试图访问虚拟地址
0x1234
。 - 系统将
0x1234
分割为 VPN 和页内偏移量。例如,假设页大小为 4KB(即12位偏移),则 VPN =0x1
,偏移 =0x234
。 - 系统首先在 TLB 中查找 VPN
0x1
:- TLB命中:假设 PPN =
0x5
,则物理地址 =0x5234
。 - TLB未命中:系统查找页表,找到 PPN =
0x5
,将此映射加载到 TLB,然后形成物理地址0x5234
。
- TLB命中:假设 PPN =
通过这个示例,可以看到虚拟地址是如何通过 VPN 和页表映射到物理地址的,以及 TLB 在其中的加速作用。
6. 进一步理解
- 页表的层次结构:在实际系统中,页表可能采用多级结构(如两级页表、三级页表等)以节省内存空间。
- 共享页:不同进程可以共享某些物理页面,通过页表的适当映射实现。
- 页面置换算法:当物理内存不足时,系统需要决定哪些物理页面被换出到磁盘,这涉及到页面置换策略(如LRU、FIFO等)。