概念
- 中断(Interrupt):被外部事物中断,例如键盘,或者I/O
- 异常(Exception):内部出现错误,例如内存错误
虚拟内存
操作系统为每个进程提供一个独立的地址空间,称为虚拟内存(Virtual Memory)。每个进程认为自己拥有连续的内存地址,但实际上这些地址可能被映射到物理内存的不同位置。
这是为了保持进程之间的隔离,防止一个进程访问另一个进程的内存,从而提高系统的安全性和稳定性。
分页
物理内存和虚拟内存都被划分为固定大小的块,称为页(Page),每页通常为4KB。
虚拟地址被分为两部分:页号(Page Number)和页内偏移(Page Offset)。
物理内存对应的页框(Frame)也被划分为相同大小的块。
操作系统维护一个页表(Page Table),用于记录虚拟页与物理页框之间的映射关系。
多级页表
单级页表的一个问题在于页表空间可能占用非常大
应对:采用多级页表。
多级页表将页表分为多个层次,每层页表只存储部分虚拟地址空间的映射关系。
以图中两级列表为例,虚拟地址被分为三部分:一级页表索引(p1)、二级页表索引(p2)和页内偏移(offset)。
- 进程寄存器中存储一级页表的基地址
- 读取一级索引p1,在第一级页表中找到对应的二级页表的地址
- 读取二级索引p2,在第二级页表中找到对应的物理页框地址
- 最后将物理页框地址与页内偏移offset相加,得到最终的物理地址
下图是最后一级页表一行的结构,包含了物理页框地址和一些标志位,例如有效位(valid bit),读写权限位(read/write bit)等。

TLB
TLB(Translation Lookaside Buffer)是一个小型的高速缓存,用于存储最近使用的虚拟地址到物理地址的映射关系。
TLB通常是全相联的,即任何虚拟页都可以映射到TLB中的任何位置。
当CPU需要访问一个虚拟地址时,首先会检查TLB,如果TLB中有对应的映射关系(称为TLB命中),则直接使用该映射关系进行地址转换;如果TLB中没有对应的映射关系(称为TLB未命中),则需要访问页表来获取映射关系,并将其加载到TLB中。