操作系统——第五章

第五章和第四章是紧密相关的,都是在讲存储器管理,尤其是“分页”机制。在第四章中讲到的是基本的分页机制,第五章中为了实现虚拟内存,在原来的基本分页机制之上,增加了一些表的内容。第五章的重中之重是掌握页面置换算法,通常需要计算页面置换情况和页面置换次数。
1、虚拟内存是基于局部性原理:时间局部性(一条指令或数据刚访问过,一段时间内可能被再次访问)、空间局部性(一条指令或数据刚被访问过,下一条在未来时间也可能被访问,描述的就是程序的顺序执行)。
2、在原来的页表中,增加了状态位(是否在内存?)、访问字段(一段时间内的访问次数,后边的页面置换算法会用到)、修改为(是否被修改,所有的逻辑内容在外存都是有备份,如果修改了再换出时就需要更新外存中的内容,如果没有修改换出时不用换出,直接覆盖就可以)、外存地址(在外存中备份的位置,方便换出)
3、有一个名词叫做“最小物理块数”,这个是指程序能跑起来需要的最少的物理块。如果分配的物理块过少的话,很可能会引起抖动(频繁的发生缺页现象,频繁的换入换出)
4、物理块的分配策略:固定分配局部置换、可变分配全局置换、可变分配局部置换。
固定分配局部置换:每个进程分配的内存空间一定,整个运行期间不变。这时发生缺页只能从自己的内存空间中换出一页再换入,完成对换。问题在于事先并不知道进程大小,所以无法确定要分配多大内存空间合适。
可变分配全局置换:每个进程分配的内存空间不固定,先分配一定数目的物理块,OS还会留有一批剩余的空闲物理块。进程缺页时,从空闲队列里摘下一个给到进程,空闲队列空了,再从内存中(全局,换谁的不一定)选出一个换出换入。
可变分配局部置换:每个进程分配的内存空间不固定,先分配一定数目的物理块,OS还会留有一批剩余的空闲物理块。进程缺页时,先从自己的内存空间中换出换入,如果缺页频繁,OS在分配空间物理块,如果缺页率比较低,适当减少物理块的分配。
5、物理块分配算法:平均分配、按比例分配、按优先权分配。(不是特别重要,也不是很难理解,看看书就会)
6、页面置换算法:
a、最佳置换算法:淘汰最长时间不使用或者永不使用的页面。通俗来说,就是淘汰下一次使用时间间隔最长的页面。最好,但是由于不能“未卜先知”,不能实现。
b、先进先出(FIFO):最先进入内存的,最先被淘汰掉。
c、最近最久未使用(LRU):距离上一次使用,间隔最长的优先被淘汰掉。
d、最少使用(LFU):一段时间内,使用频率最低的优先被淘汰掉。注意,LRU算的是时间,LFU算的是频率。课本中有提到,这两种算法需要硬件支持,可以用移位寄存器、栈实现,具体内容参考课本。
e、简单clock算法(最近未用NRU):核心思想:把所有的块用链表串起来,第一轮(依次)先看访问位,第一个为0的倍淘汰。如果不为0,改为1,准备第二轮。如果所有的块初始访问位都为1,经过第一轮,就都变为了0,和第一轮同样,找第一个位0的,淘汰。
f、升级版的clock算法:考虑修改位,如果修改过,换出时开销较大,没有修改过,开销较小(都不用换出,直接覆盖)

原文地址:https://www.cnblogs.com/lgwdx/p/14785625.html