基本原理
允许作业存放在若干个不相邻的分区中,既可免去移动内存信息而产生的工作量,又可充分利用主存空间,尽量减少主存碎片。
基本概念
-
页框:主存空间按物理地址分成多个大小相等区,每个区称为块(又称页框page frame)
-
页面:程序(作业)按逻辑地址分成多个大小相等的区,每个区称为一个页面(page),大小与页框大小相等
-
页表:页表是记录逻辑空间(虚拟内存)中每一页在内存中对应的物理块号。但并非每一页逻辑空间都会实际对应着一个物理块,只有实际驻留在物理内存空间中的页才会对应着物理块。
页表是需要一直驻留在物理内存中的(多级页表除外),另外页表的起址和长度存放在 PCB(Process Control Block)进程控制结构体中。 -
逻辑地址形式:页号和单元号
-
页表、作业表和地址转换
逻辑地址 = 页号 * 页长 + 单元号 【通过页号查找页表】
物理地址 = 页框号(块号) * 块长 + 单元号
地址转换
- 进程访问某个逻辑地址时,分页地址机构自动将逻辑地址分为页号和页内地址
- 页号大于页表长度,越界错误
- 页表项的地址 p = 页表起始地址 F + 页号 P * 表项大小 S,从而得到对应的物理块号 B
- 页和物理块的大小是一致的,所以 页内地址=块内地址
- 然后 物理地址 = 物理块号 B * 页大小 L + 页内地址
- 根据物理地址读取数据
相联存储器和快表
- 通常页表存放在主存中,因此按逻辑地址访问某个主存地址内容时,需要涉及二次主存访问,效率较低
- 相联存储器,一个专用的高速缓冲存储器,用于存放最近被访问的部分页表,是分页式存储管理的重要组成部分。
- 快表,存放在相联存储器中的部分页表内容
快表是为了加快虚拟地址到物理地址这个转换过程而存在的。页式存储管理的快表一般存放在 CPU 内部的高速缓冲存储器 Cache。快表与页表的功能类似,其实就是将一部分页表存到 CPU 内部的高速缓冲存储器 Cache。CPU 寻址时先到快表查询相应的页表项形成物理地址,如果查询不到,则到内存中查询,并将对应页表项调入到快表中。但,如果快表的存储空间已满,则需要通过算法找到一个暂时不再需要的页表项,将它换出内存。因为高速缓冲存储器的访问速度要比内存的访问速度快很多,因此使用可以大大加快虚拟地址转换成物理地址。根据统计,快表的命中率可以达到 90%以上。
解决页表规模过大
其他
- 存储空间的分配和去配
- 主存分配以块为单位
- 可采用位示图记录主存分配情况(0/1)
- 或采用链表方式记录主存分配情况
- 页面共享
- 代码共享,由于代码中包含指令或数据地址,需要确定统一的页号
- 页面保护
- 标志位法,在页表中增加标志位信息
- 存储保护键法
下一篇:分段式存储管理