操作系统笔记
作者:互联网
Belady现象和抖动现象
要了解Belady现象(跟缺页中断有关),得先了解什么是请求页式管理,
请求页式管理
属于动态页式管理,还有预调入页式管理
,它两都不把作业或进程的程序段和数据段一次性装入内存,而只装入被认为是经常反复执行和调用的工作区部分。
请求页式管理的调入方式是,当发现内存中没有所需要的数据或指令时,将从外存中调入内存。
预调入页式管理的调入方式是,将外存中的数据和指令按照执行和被访问的顺序排序,然后依序调入内存。
很明显,动态页式管理不可避免会碰到虚页不在内存中的时候(发生缺页中断
),我们要清楚怎么发现这些页以及如何处理这种情况。
关于如何知道该页是否在内存中,我们可以扩充页表,增加中断位以判断是否在内存中,和该页在外存中的起始地址。
而对于怎么处理这种情况,我们自然需要从外存调入了,这就要考虑调入的算法以及如果没有空闲页面时该淘汰哪一页。一句话说就是置换。那被置换的页的下场如何呢?自然是看情况了,如果它没有被修改过,那么它在外存中的副本让它直接被淘汰;如果它被修改过,就得写回外存了。
接下来接得说请求页式的置换算法
了,如果置换不当,会造成页面调入,调出,又调入,又调出的尴尬现象,称为抖动
现象。
这自然不是我们希望看到的。
置换算法,理应置换那些被访问率低的页。
比较常用的置换算法有以下几种:
- 随机淘汰算法
- 轮转法和先进先出算法
- 最近最久未使用算法
- 理想型淘汰算法
这里只聊聊先进先出算法(FIFO)。FIFO总是将驻留内存最久的一页淘汰置换,它认为这种类型的页不被访问的频率最高。毫无疑问,在座各位肯定会想到这种说法不成立。驻留最久,也可能访问率最高。
话说,一般来讲,给一个作业和进程分配的页面数越多,发生缺页的次数越少。但在FIFO算法下,并不然。它会出现分配页面数越多,缺页数反而增加的诡异现象,称为Belady
现象。
好了,点到为止。
覆盖与交换技术
覆盖和交换技术是在多道环境下扩充内存的两种方法。
覆盖技术没得交换技术牛*,它主要用在早期的操作系统中,而交换技术在现代操作系统中仍具有较强的生命力。
覆盖
覆盖的思想是,一个程序并不需要一开始就全部装入内存执行,可以让那些不会同时执行的程序段共享同一块内存区。看起来是内存变大了。但是,这种技术不就需要我们设计一个好的覆盖方案嘛,所以这种技术局限于对OS的虚空间和内部结构很了解的人。
交换
在多道程序环境或分时系统中,同时执行好几个作业或进程,但是会有作业处于就绪和等待状态。颇有占着茅坑不**的意思。这能忍吗?这当然不能忍,必须给踢出去,避免浪费空间。让其他进程或作业进来。
区别
覆盖主要在同一个进程或作业内进行。
交换主要在进程或作业之间进行。
标签:操作系统,置换,作业,调入,算法,笔记,外存,内存 来源: https://www.cnblogs.com/Carl-lc/p/15643134.html