【0515】虚拟内存

    技术2022-07-10  182

    虚拟内存

    操作系统软件

    什么时候将虚拟内存加载进去物理内存?

    读取策略

    请求分页式,需要用的时候就加载,存在缺页中断

    预约分页式,提前将可能用的虚拟内存加载入物理内存,应用局部原理

    放置策略

    段式管理有外部碎片,页式管理有内部碎片

    段页式两者都有

    置换策略

    应该把将来最不可能被访问的部分置换掉

    帧锁定:内存中一部分页帧是被锁定的

    算法1:将来最迟被访问的页被置换[难以实现]OPT

    算法2:上一次的使用距当前最久的页被置换LRU

    算法3:最先进来的页被替换FIFO

    算法4:CLOCK 第一次查到的使用位为0的页被替换,一个页被加载进来时使用位是1,当页被使用时使用位再置为1,当搜索置换页时将所有使用位置为0。**新加载进一页的话,访问指针移动到新加载页的后面一步位置,只有这个时候指针会移动!**只有查找要替换的页时,才算是被访问,使用位才需要变化。

    注意:置为1:刚被载入,或者被使用

    ​ 置为0:被搜索过一次但没被取代就置为0

    比较:OPT > LRU >CLOCK >FIFO

    页缓冲:包括两张表:空闲表和修改表

    驻留集大小对性能影响:固定分配/动态分配【太大浪费,太小经常发生缺页分配】

    局部置换/全局置换:

    局部置换:动态调整驻留集,当发生页面错误时,从本进程的驻留集调出一页来置换

    全局置换:发生缺页中断时,可以把所有进程的空闲驻留集拿来置换

    清除策略

    请求式清除:

    预约式清除:等待一批量一起清除,批量式清除

    置换时,要看修改页标志是否为1,修改过的话应该把页面写回磁盘,否则不需要

    加载控制:进程太少,进程会可能被阻塞,发生空转

    ​ 进程太多发生页面抖动,频繁发生缺页中断

    进程挂起:

    1.最低优先级进程

    2.页错误进程

    3.最后被激活的进程

    4.驻留集最小的进程

    5.占用空间最大的进程

    6.具有最大剩余执行窗口的进程

    小结

    Processed: 0.013, SQL: 9