概念
虚拟内存思想既有利于用户,又有利于系统;
虚拟内存的优点:
1、 地址空间大于物理空间,可以编写比内存大的程序;
2、程序的部分装入内存,内存中可以放更多的进程,并发度好,效率高,内存利用率高,持续开始执行、响应时间快;
改造页表,增加有效位,表示对应页是否在内存中;
请求调页:
虚拟内存页面置换算法
先进先出:FIFO
淘汰最早调入的页面
最优页面置换:OPT
选择未来最远将使用的页面进行置换; 是最优的方案,可以证明缺页次数最少,但是需要直到将来发生的事; 可以通过过去的历史预测将来;
最近最少使用页面置换:LRU
选择最近最长时间没有使用的页面进行置换;
计数器法
计数器可能溢出,并且每次置换都需要找到最小值的页面,开销大
页码栈法
最近刚用过的放到栈顶,栈底的就是需要置换的;
最近最少使用页面置换(近似实现):LRU
引用位法
时钟法
初始分配或替换之后指针要向前移动一位,因为这一页刚被访问过;
从开始未分配页面,到需要置换时,如果每次置换时所有页的引用位都是1,那么就退化为FIFO,因为初始指针是指向第一个调入的页的;
如果页命中了,引用位置1;查询指针不动;
改进:
空闲内存越少,清除R位频率越快;
其他相关技术
写时复制
子进程共享父进程的地址空间,只有对某些页面要写时才复制产生新页;
交换空间和工作集
是指页面置换后,换出的页面存放的地方;
工作集
页面置换范围的两种策略
全局置换:可以淘汰别的进程的页面,简单
局部置换:只能淘汰自己进程的页面
抖动/颠簸
刚换入的页面又要调出,刚调出的页面又要换入;
一个进程用在换页上的时间大于执行时间,则在颠簸;
发生的主要原因是进程频繁访问的页面数目高于可用的物理页帧数目,也就是系统给进程分配的页帧数;
工作集
Belady异常
王道考研
虚拟内存的特征:离散性、对换性和多次性,一次性是传统存储系统的特征;
虚拟存储技术基于程序的局部性;
可分配页帧数增加时,FIFO可能产生Belady异常,也可能不命中次数减少;
请求分页存储管理的主要特点是扩充了内存;
只有FIFO算法会导致Belady异常;
答案:C 固定分配,每个进程分配固定大小的页数,全局置换会破坏页数的固定;