目录
内存与进程的分割
基本分页存储管理将内存空间和进程分割成大小相等的区域,这些区域分别称为页框(或页帧、内存块、物理块、物理页面)和页。操作系统以页框为单位为进程分配内存空间,每个进程的页面分别放入一个页框中,形成一一对应的关系。
关键名词解释
- 内存空间分区:页框、页帧、内存块、物理块、物理页面均指内存中的固定大小区域。页框号、页帧号、内存块号、物理块号、物理页号用来唯一标识这些区域。
- 进程逻辑分区:页或页面是指进程逻辑地址空间中的分区,页号用于标识这些逻辑页面。
页表的作用
为了跟踪进程的每个页面在内存中的位置,操作系统为每个进程建立一张页表。页表通常存储在进程控制块(PCB)中,包含页号和块号的映射关系。
逻辑地址到物理地址的转换
逻辑地址转换为物理地址的过程如下:
-
计算页号和页内偏移量:
- 页号 = 逻辑地址 / 页面长度(取整数部分)
- 页内偏移量 = 逻辑地址 % 页面长度(取余数部分)
-
查找页表:通过页号在页表中找到对应的页表项,获取内存块号。
-
计算物理地址:物理地址 = 块号 * 块大小 + 页内偏移量
由于页面大小是2的整数幂,计算机硬件可以快速计算页号和页内偏移量,无需进行除法运算。
基本地址变换机构
地址变换机构包括页表寄存器(PTR),它存储页表的起始地址和长度。地址转换步骤如下:
- 从逻辑地址中提取页号和页内偏移量。
- 检查页号的合法性。
- 若页号合法,通过页表找到对应的内存块号。
- 计算物理地址并访问内存单元。
如果页号不合法或页表项不存在,系统会产生越界中断或缺页中断。
引入快表
快表(TLB)是一种高速缓存,用于存储最近访问的页表项。在查询页表前,先访问快表,若快表命中,则可跳过页表查询,从而提高地址转换速度。
引入二级页表
当页表变得很大时,可以使用二级页表来减少内存占用。二级页表将页表分页并离散存储,通过页目录表来管理这些页表。二级页表的地址转换步骤如下:
- 将逻辑地址拆分为页目录号、页号和页内偏移量。
- 查找页目录表以获得二级页表的位置。
- 查找二级页表以获得内存块号。
- 结合页内偏移量计算物理地址。
虚拟存储技术
通过在页表项中增加标志位,可以实现在需要时才将页面调入内存的虚拟存储技术。如果访问的页面不在内存中,系统会产生缺页中断,并将页面从外存调入内存。