在墨迹一遍!
请求分页内存管理和基本分页内存管理的主要区别:
在程序执行过程中,当所访问的数据内存中时,由操作系统将所需要的数据从外存调入内存。(请求分页)
当内存空间不足时,由操作系统将内存中暂时用不到的信息换出到外存。(页面置换)
最佳置换算法
每次选择淘汰的页面都是以后不在使用或者是最长时间不再被访问的页面,这样可以保证最低的缺页率。
最佳置换算法可以保证最低的缺页率,但是在程序运行过程中,操作系统才能知道要访问哪个页面。操作系统无法提前预判页面访问序列。所以最佳置换算法是无法实现的。
先进先出置换算法
每次选择淘汰的页面的最早进入内存的页面。
实现方法:把调入内存的页面根据调入的先后顺序排成一个队列,需要换出页面时选择对头页面即可。(队列的最大长度取决于系统为进程分配了多少个内存块)
最近最久未使用置换算法
顾名思义,选择淘汰最近最久未使用的页面
实现方法:每个页面对应的页表项中,都有一个访问字段,用访问字段来标识自上次以来所经历的时间t,当需要淘汰一个页面时,选择现有页面中t值最大的。
缺点:该算法实现要专门的硬件支持,虽然性能好,但是实现困难,开销大。
时钟置换算法(最近未用算法)
选择最近未用的页面(所以也称最近未用算法)
实现方法:每一个页面项有一个访问字段,将内存中的页面通过链接指针将页面链接成一个循环队列。当页面被访问时,访问字段设置1。当要淘汰页面时,选择访问字段为0的页面,如果访问字段是1,在扫描过程中,就将其设置为0。如果第一轮扫描中所有页面都是1,那么第一轮扫描后,所有页面访问字段都是0,在进行第二轮扫描(一定会有访问字段为0的页面)。
改进型的时钟置换算法
思想:
时钟置换算法只考虑到一个页面有没有被访问过,事实上,如果被淘汰的页面没有被修改过的话,是不需要执行IO操作写会外存的。只有被淘汰的页面被修改过,才需要重新写回外存。
因为除了考虑一个页面最近有没有被访问过之外,还有考虑是否被修改过,在其他条件都相同时则应该优先淘汰没有被修改过的页面(避免了IO操作)。
算法规则:将所有可能被置换的页面排成一个循环队列。
第一轮:从当前位置开始扫描,寻找第一个未被访问且未被修改的页面,不修改任何标志位。
第二轮:若第一轮扫描失败,即找第一个未被访问但被修改过的页面,此轮访问字段为1的置为0。
第三轮:若第二轮扫描失败,即找第一个未被访问且未被修改的页面,不修改任何表示位。
第四轮:若第三轮扫描失败,即找第一个未被访问但被修改过的页面进行替换,一定可以找到。
第几优先级对应的是第几轮扫描,如果到了第三轮扫描,由于第三轮扫描是第二轮扫描过来的(),第二轮扫描扫描的是最近没访问但修改过的页面,如果第二轮扫描失败,到了第三轮,那么就说明所有的页面都是被访问过的,所以第三轮扫描对应的是最近访问过但没修改的页面,同理第四优先级。



803

被折叠的 条评论
为什么被折叠?



