虚拟内存
操作系统软件
什么时候将虚拟内存加载进去物理内存?
读取策略
请求分页式,需要用的时候就加载,存在缺页中断
预约分页式,提前将可能用的虚拟内存加载入物理内存,应用局部原理
放置策略
段式管理有外部碎片,页式管理有内部碎片
段页式两者都有
置换策略
应该把将来最不可能被访问的部分置换掉
帧锁定:内存中一部分页帧是被锁定的
算法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.具有最大剩余执行窗口的进程