前言
此篇文章是我在B站学习时所做的笔记,大部分图片都是课件老师的PPT,方便复习用。此篇文章仅供学习参考。
提示:以下是本篇文章正文内容
知识总览
页表机制
缺页中断机构
通过页表项就可以知道这个页面在外存当中存放在什么地方。
如果说内存中有空闲块,如:a号块的话,那就可以把这个空闲块分配给此时缺页的进程,在把目标页面从外存放到内存当中,相应地,也需要修改页表项当中对应的数据。
如果此时内存中没有空闲块的话,需要由页面置换算法通过某种规则来选择要淘汰一个页面。比如说,页面置换算法要选中要淘汰2号页面,由于2号页面的内容是被修改过的,所以2号页面的内容是要从内存写回外存,把外存中的旧数据覆盖掉,这样的话,2号页面以前占有的c号块可以空出来,让0号页面使用,于是可以把0号页面从外存调入内存当中的c号块,相应地,我们也需要把换出外存的页面和换入内存的页面、相应的那些数据给更改。
- 缺页中断是因为当前执行的指令想要访问的目标页面未调入内存而产生的,因此属于内中断
- 一条指令在执行期间,可能产生多次缺页中断。(如: copy A to B,即将逻辑地址A中的数据复制到逻辑地址B,而A、B属于不同的页面,则有可能产生两次中断)
地址变换机构
在地址变换的时候,第一个事情,在查找到页面对应的页表项的时候,一定是需要对这个页面是否在内存这个状态进行一个判断,第二个事情,在地址变换的过程当中,如果说我们发现此时想要访问的页面,暂时没有调入内存,但此时内存当中又没有空闲的内存块的时候,那么在这个地址变化的过程当中,也需要进行页面置换的工作,换出某些页面来腾出内存空间,第三个与基本分页存储管理不同的就是,当页面调入或者调出或者页面被访问的时候,需要对与它对应的这些页表项进行一个数据的修改,所以我们在理解和记忆请求分页存储管理当中,地址变换过程的时候,需要重点关注这三件事情需要在什么时候进行。
在具有快表机构的请求分页系统中,访问一个逻辑地址时,若发生缺页,则地址变换步骤是:
查快表(未命中)―一查慢表(发现未调入内存)―一调页(调入的页面对应的表项会直接加入快表)――查快表(命中)—―访问目标内存单元