请求分页存储管理与基本分页存储管理的主要区别:
请求调页:在程序执行的过程中,当所访问的信息不在内存时,由操作系统负责将所需信息从外存调入内存
页面置换:若空间不够,由操作系统将内存中暂时用不到的信息换出到外存
页表机制
为了实现请求调页,操作系统需要知道每个页面是否已经调入内存:如果还没调入,那么也必须知道该页面在内存存放的位置
为了实现页面置换必须通过一些指标来决定到底换出哪个页面:如果有些页面未被修改,就不再浪费时间写回外存,如果有些修改过,就需要将外存中的九数据覆盖,因此,操作系统也需要记录哥哥页面是否被修改过的信息
请求分页存储管理的页表
【内存块号|状态位|访问字段|修改位|外存地址】
状态位用来表示是否已经调入内存
访问字段可以记录最近被访问多少次
修改位页面调入内存后是否被修改过
这个也被称为请求页表
缺页中断机构
在请求分页系统中,每当要访问的页面不在内存时,就会产生一个缺页中断,然后由操作系统的缺页中断处理程序处理中断。
此时缺页的进程阻塞,放入阻塞队列,钓业完成后再将其唤醒,放回就绪队列
如果内存中有空闲块,则会分配一个空闲块,将所缺页面装入该块,并修改页表中相应的页表项
如果内存中没有空闲块,则会由页面置换算法选择一个页面淘汰,若该页面在内存期间被修改过,则要将其写回外存,微修改的页面不用写回外存
缺页中断由当前执行的指令想要访问的目标页面未调入内存而产生的,因此属于哪中断
一条指令在执行期间,可能产生多次缺页中断。
地址变换机构
1.请求调页(查到页表项时进行判断)
2.页面置换(需要调入页面,单没有空闲内存块时进行)
3.需要修改请求页表中新增的表项
注意:
1.只有写指令才需要修改“修改位”,并且,一般来说只需要修改快表中的数据,只有要将快表项删除时才需要写会内存中的慢表,这样可以减少访存次数。
2.和普通的中断处理一样,缺页中断处理依然需要保留cpu现场
3.需要通过页面置换算法来决定换出的页面
4.换入换出的页面都需要启动慢速的io操作,可见如果换入换出太频繁,会有很大的开销
5.页面调入内存后,需要修改慢表,同时也需要将表项复制到快表中。