2.3.4.时钟置换算法(CLOCK)
1.访问位的实质是反应该内存块最近是否被用过
2.实现方法:访问队列:1、3、4、2、5、6、3、4、7, 内存块为五个
①当访问到6时,无空闲内存块,需要使用CLOCK算法选择淘汰页,此时内存块队列为(1、3、4、2、5),并且它们的访问位都为1(扫描指针此时指向对首1)
②从队首开始向后扫描,每扫描到一个内存块,若访问位1,则改为0;若访问位为0,则将其淘汰:第一轮扫描,将(1、3、4、2、5)的访问位按顺序更改为0(第一轮扫描后,扫描指针转一圈后重新指向1)
③若第一轮扫描没有找到淘汰页面,则采用同样规则进行第二轮扫描:此时扫描到1的访问位为0,即选择1淘汰,并将6装入之前1占有的内存块中,并将6的访问位改为1(第二轮扫描,扫描指针扫描到1就结束扫描,扫描指针指向下一个内存块,即3)
④访问3,将3的访问位改为1
⑤访问4,将4的访问位改为1
⑥访问7,此时再次出现缺页并且无空闲内存块的情况,需要进行缺页处理:扫描指针从3号开始扫描,3号访问位为1,将其改为0,并使扫描指针指向下一个,即4号;扫描4号,4号访问位为1,将其改为0,并使扫描指针指向下一个,即2号;扫描2号,2号扫描位为0,选择2号淘汰,并将7号装入之前2号占有的内存块中,并将7号的访问位改为1,并使扫描指针指向下一个,即5号
2.3.5.改进型的时钟置换算法
第一轮:找没访问、没修改的页面
第二轮:找没访问、有修改的页面
第三轮:找有访问、没修改的页面
第四轮:找有访问、有修改的页面
2.4.页面分配策略、抖动、工作集
1.驻留集:请求分页管理方式中给进程分配的物理块的集合
驻留集过小,将会导致频繁的缺页;驻留集过大,多道程序并发度下降(没法同时容纳多个进程的数据),资源利用率降低(不能充分发挥多道程序并发执行的条件下,CPU和I/O设备能够并行工作的特点)
2.固定分配(驻留集大小不变):系统为每个进程分配一组固定数量的物理块,进程执行期间不改变
可变分配(驻留集大小可变):系统先为进程分配一定数量的物理块,在运行期间对这些物理块进行适当的增加或者减少
3.局部置换:发生缺页时只能选进程自己的物理块进行置换
全局置换:缺页进程可以使用系统保留的空闲物理块,也可以使用其他进程的物理块
4.不存在固定分配和全局置换的搭配(固定分配下驻留集大小不能改变,而全局置换将会导致驻留集大小改变)
5.调入页面的时机:
6.从何处调入页面:
7.抖动现象:刚换出外存的页面马上又要换入内存
产生抖动的原因:进程频繁访问的页面数高于可用物理块数(进程物理块不够用)
工作集:某个时间间隔例,进程实际访问页面的集合
根据工作集大小决定驻留集大小
2.5.内存映射文件
1.传统的文件访问方式:open→seek→read→write
2.内存映射文件的访问方式:mmap系统调用会给程序员返回一个指向映射区域起始地址的指针
①以访问内存的方式访问文件数据:可以通过指针加上地址偏移量访问该指针后面的区域
②文件数据的读入、写出由操作系统自动完成:在mmap系统调用的初始状态下,文件数据还没有被读入内存中,只是建立了内存地址空间和外存中文件数据的映射关系,在程序员通过指针访问该地址空间时,实际上是缺页状态;发生这种缺页时,操作系统将会把该地址空间映射的文件数据调入内存,而不需要程序员使用read系统调用
③进程关闭文件时,操作系统自动将文件被修改的数据写回磁盘
3.内存映射文件可以实现文件共享