挑战408——操作系统(22)——虚拟存储器的页式管理

页式虚拟存储器

以页为单位的虚拟存储器,称为页式虚拟存储器。它的虚拟空间跟主存空间都将被划分为相同大小的页。主存中的页,称为实页,虚存中的页,称为虚页。虚拟地址被分为两个字段,虚页号和页内偏移。为了对每个虚拟页的存放位置,存取位置,使用情况,修改情况等等进行等进行说明,操作系统在主存中给每个进程都生成一个页表。因此,每个虚拟页表都对应有一个页表项。页表是一张存放在主存中的,虚拟页与实页对照的映射表。其中存放位置字段用来建立虚拟页与实页之间的映射,进而进行地址转换。有效位用来表示对应页面是否存在。

指令操作过程

对于采用虚拟存储机制的系统,指令给出的是虚拟地址(即逻辑地址),因此CPU执行指令时,首先将虚拟地址转成主存物理地址,才能到主存中存取数据。地址转换由CPU的存储器管理部件完成。虚拟地址分成两个字段,高字段为虚页号,低字段为页内偏移地址。同样,物理地址也这样划分:
在这里插入图片描述
左边的是虚拟地址,右边的是物理地址的地址格式。由于两种的页面大小是一样的,因此页内的偏移地址一样(也就是为什么在进行地址转换的时候,我们说页式存储管理的地址是一维的)。

请求页式存储管理

与基本分页系统的联系:请求页式存储管理系统基于分页系统,但在其基础上,增加了请求调页功能与页面置换功能,是目前最常用的一种方式。

工作原理

只要求将当前需要的一部分页面装入内存,便可以启动作业运行,倘若在执行的过程中,出现要访问的页面不在内存中,那么就通过页面调入功能将其调入,同时还可以将暂时不用的页面换出到辅存,以腾出空间。因为页是根据请求调入的,故称为请求页式存储管理

硬件的支持

请求页式存储管理机制的实现,除了需要内外存以外,还需要页表机制,地址变换机构,缺页中断等等一些硬件。请求页式存储管理机制需要解决两个问题:如何发现和处理访问页面不存在主存的情况?
为此,我们增加了以下字段:
在这里插入图片描述
后面的四个字段是新增的
状态位P:用于记录该页是否已经调入内存
访问字段:记录该页多久没有被访问了
修改位:标识该页调入内存后是否被修改过
外存地址:指出该页在内存外的地址,供调入该页的时候使用。

那么当该页的状态位为0,即不在内存的时候,便会产生缺页中断请求操作系统将所缺的页数调入内存中。我们之前提到过中断,这里比较一下缺页中断与其他一般中断的区别:

  1. 缺页中断,在指令执行期间(即访存),产生和处理中断信号,因此它属于内部中断。通常CPU外部中断是在每条指令执行之后。
  2. 一条指令的执行期间可能有多次缺页中断。
快表(TLB)

依据程序的局部性原理,一段时间内,进程总是经常访问某些页,如果把这些页放在Cache中而不是主存中,那么显然可以提高访问效率。所以我们把存放在Cache中的页表称为快表(TLB)。相应的存放在主存中的页表称为慢表(page)。类似于Cache与主存的关系,TLB是Page的一个副本,存放了Page很少的一部分。
在查找的时候,TLB与page同时进行,而快表可以根据内容来指定地址(一般采用相联存储器)。若快表中有此逻辑页号,则能很快的找到对应的物理页号,然后送入主存地址寄存器中,同时终止page的查询。
因此在同时具有虚拟存储系统跟Cache的系统中,地址访问的顺序应该是:

TLB -> 页表 -> Cache ->主存

为什么?
我们思考一下。CPU发出访存指令(即逻辑地址),于是先查找快表跟慢表,再查询相应的Cache块(这里注意区分,我们要找的是地址而不是表,所以还要去Cache中看看有没有这个地址)。若Cache命中,那么说明所需的页面已经调入了主存,也就是page必然命中,但是TLB不一定命中。(因为Cache是主存的一小部分副本,Cache命中了,说明主存中一定有该内容,而TLB是page的一个副本且是很少的一部分,所以page命中,不一定就是TLB命中)。
反之,若Cache不命中,也不能说明所需要的页就一定没有调入内存(Cache是主存的一小部分副本,Cache里面没有不代表主存里面没有),并且和快表跟慢表是否命中都无关。如果是Page未曾命中,那么当然是Cache跟主存都不会命中(因为page在主存,所以page不命中推出主存不命中,从而推出Cahe也一定不会命中)。这种情况就是我们所谓的需要的页不在主存中,产生了一种叫做缺页的现象,此时需要执行页面的置换策略。也就是下一篇要讨论的内容。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值