请求分页管理方式

请求分页管理方式

请求分页存储管理与基本分页存储管理的主要区别:
在程序执行过程中,当访问的信息不在内存中,由操作系统负责将所需信息从外存调入内存,然后继续执行程序。
(请求调页)
若内存空间不够,也由操作系统负责将内存中暂时不用的信息换出到外存。
(置换页面)
请求分页管理的具体方式:
1.页表机制
2.缺页中断机构
3.地址变换机构(可以思考与基本分页管理的区别)

1.页表机制

1.在基本分页的基础上增加了几个表项
2.状态位:表示页面是否在内存中
3.访问字段:记录最近被访问次数,或记录上次访问的时间,供置换算法选择出页面时参考
4.修改位:表示页面调入内存后是否被修改过,只有修改过的页面才需要在置换时写回外存
5.外存地址:页面在外存中存放位置

(一) 与基本分页管理相比,请求分页管理中,为了实现“请求调页”,操作系统需要知道每个页面是否已经调入内存;如果还没调入那么也需要知道该页面在外存中存放的位置。
(二) 当内存空间不够时,要实现“页面置换”,操作系统需要通过某些指标来决定到底换出哪个页面;有的页面没有被修改过,就不用再浪费时间写回内存中。有的页面修改过,就需要将外存中的旧数据覆盖,因此,操作系统也需要记录各个页面是否被修改的信息。

基本页表分配管理方式与请求分页的管理方式的页表区别如下:

在这里插入图片描述
请求页表的管理方式比基本页表方式的页表要多加四个字段:
1.状态位:是否已经调入内存
2.访问字段:可记录最近被访问过几次,或记录上次访问的时间,供置换算法选择换出页面时进行参考。
3.修改位:页面调入内存后是否被修改过
4.外存地址:页面在外存中的存放位置

2.缺页中断机构

1.找到页表项后检查页面是否已在内存,若没有在内存,产生缺页中断
2.缺页中断处理中,需要将项目页面调入内存,有必要时还要换出页面
3.缺页中断属于内中断,属于内中断的“故障”,即可能被系统修复的异常
4.一条指令在执行过程中可能产生多次缺页中断

在这里插入图片描述
假设此时访问的逻辑地址=(页号,页内偏移量)=(0,1024)
在请求分页系统中,每当要访问的页面不存在时,便产生一个缺页中断,然后由操作系统的缺页中断,让处理程序暂停
此时缺页的进程阻塞,放入阻塞队列,调页完成后再将其唤醒,放回就绪队列。

如果内存中有空闲块,则为进程分配一个空闲块,将所缺页面装入该块,并修改页表中相应的页表项。
如果内存中没有空闲块,则由页面置换算法选择一个页面淘汰,若该页面在内存期间被修改过,则需要将其写回外存。未修改过的页面不用写回外存。

缺页中断是因为当前的指令想要访问的目标页面未调入内存而产生的,因此属于内中断一条指令在执行期间,可能产生多次缺页中断。(如:copy a to b,即将逻辑地址a 中的数据复制到逻辑地址b,而a ,b属于不同页面,则由可能产生两次中断)
总之 缺页中断属于内存异常中的故障:由错误条件引起的,可能被故障修理程序修复
在这里插入图片描述

3.地址变换机构

1.找到页表项需要检查页面是否在内存中
2.若页面不在内存中,需要请求页面
3.若内存空间不够,还需换出页面
4.页面调入内存后,需要修改相应页表项

请求分页存储管理与基本分页存储管理的主要区别是:
1.在程序执行过程中,当所访问的信息不在内存时,由操作系统负责将所需信息从外存调入内存,然后继续执行程序。
(页面调度)
2.若内存空间不够,由操作系统负责将内存中暂时用不到的信息换出外存
(页面置换)
在这里插入图片描述
新增步骤1:请求调页(查到页表项时进行判断)
新增步骤2:页面置换(需要调入页面,但没有空闲内存块时进行)
新增步骤3:需要修改请求页表中新增的表项

0.给出逻辑地址
1.页号是否越界
2.如果不越界,查询快表,命中,则直接访问物理地址。
3.快表未命中,则查询慢表,找到对应的页表项后,发现未调入内存,则产生缺页中断,之后,又操作系统的缺页中断处理程序进行处理。

因为进程肯定在内存中,所以快表中的页表项肯定指的内存中的页面。
(快表中的页面一定是在内存中的,若某个页面被换出外存,则快表中相应的页表项也要删除,否则可能访问错误的页面)

在这里插入图片描述
1.程序请求访问一页(给出了逻辑地址(页号,页内偏移量))
2.页号<=页表长度,否则越界中断
3.CPU查询快表
4.快表命中,则修改访问位和修改位(修改位不一定要改),形成物理地址
(注意的是:只有"写指令”才需要修改“修改位”。并且,一般来说只需要修改快表中的数据,只有要将快表项删除时才需要写回内存中的慢表,这样可以减少访问次数,值得一说的是删除快表中的页表项,一般会发生在内存页表被换出内存时)
5.如果快表未命中,则访问慢表,命中,则修改访问位和修改位(注意),形成物理地址。
6.如果慢表未命中(状态位为0),则产生缺页中断,请求调页
7.保留CPU现场
8.从外存中找到缺页
9.此时判断内存满否?
10.满了,就选择一页换出,选择页面如果被修改过,就将该页面写回外存;如果没有修改过,就进行下一步
11.上诉步骤9中,如果内存未满,操作系统命令CPU从外存读缺页
12.启动I/O硬件(此操作需要启动慢速的I/O操作,可见换入换出操作太频繁,会有很大的开销)
13.将一页从外存换入内存
14.修改页表(页面调入内存后,需要修改慢表,同时也需要将表项复制到快表)

灵魂三问?
1.什么时候请求调页(状态为0,页面不在内存时)
2.什么时候进行页面置换(页表满了-》内存满了)
3.请求调页和页面置换后,需要对那些数据结构(慢表、快表、页表项)进行修改。

  • 6
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值