持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第26天,点击查看活动详情
请求分页存储管理方式
基本思想
在进程开始运行之前,不是装入全部页面,而是装入几个或零个页面,之后根据进程运行的需要,动态装入其他页面。
当内存空间已满,而又需要装入新的页面时,则根据某种算法淘汰某个页面,以便装入新的页面。
页表机制
- 状态位:表示该页是否装入内存
- 访问位:此页在一段时间被访问的次数,可用来决定淘汰哪页(由不同的算法决定)
- 修改位:查看此页是否在内存中被修改过
- 外存地址:该页在外存上的位置
缺页中断处理
- 在地址映射过程中,在页表中发现索要访问的页不在内存,则产生缺页中断
- 操作系统街道此中断信号后,就调出缺页中断处理程序,根据页表中给出的外存地址,准备将该页调入内存
- 此时应将缺页的进程挂起(调页完成唤醒)
- 如果内存中有空闲块,则分配一个块,将要调入的页装入该块,并修改页表中相应页表项的状态位及相应的内存块号
- 如果此时内存中没有空闲块,则要淘汰某页(如果被要淘汰页在内存期间没有被修改过,那么要将其写回外存)
缺页中断和一般中断的区别
缺页中断和一般中断都是中断,相同点如下:
- 保护现场,中断处理,恢复现场
不同点如下:
- 一般中断是一条指令完成后中断,缺页中断是一条指令执行期间中断
- 一条指令执行时可能产生多个缺页中断。如指令可能访问多个内存地址,这些地址在不同的页中
基于以上特征,请求分页系统中的硬件机构应该能保存多次中断时的状态,并保证最后能返回中断前产生缺页中断的指令处,继续执行。
地址变换机构
调入策略
调入策略确定在外存中页面的调入世纪,在页式虚拟管理中有两种常用策略。
- 请求调页:只调入发生缺页时所需的页面
- 优点:容易实现
- 缺点:对外存I/O次数多,开销较大
不知不觉学习过半了,接下来依旧不能松懈,要更加努力