操作系统算法总结(作业分配和页面替换)

OS算法总结

1. 分区分配操作(为作业分配寻找空白块)

1.1 首次适应算法

首次适应算法(First Fit):每个空白区按其在存储空 间中地址递增的顺序连在一起,在为作业分配存储区 域时,从这个空白区域链的始端开始查找,选择第一 个足以满足请求的空白块。

  • 特点

    优先利用内存低地址部分的空闲分区 。但由于低地址部分不断被划分,留下许多难以 利用的很小的空闲分区(碎片或零头) ,而每 次查找又都是从低地址部分开始,增加了查找可 用空闲分区的开销

1.2 下次适应算法

下次适应算法(Next Fit):把存储空间中空白区构成 一个循环链,每次为存储请求查找合适的分区时,总 是从上次查找结束的地方开始只要找到一个足够大 的空白区,就将它划分后分配出去。

  • 特点

    使存储空间的利用更加均衡,不致使 小的空闲区集中在存储区的一端,但这会导致缺 乏大的空闲分区

1.3 最佳适应算法

最佳适应算法(Best Fit):为一个作业选择分区时, 总是寻找其大小最接近于作业所要求的存储区域。

  • 特点

    若存在与作业大小一致的空闲分区,则它 必然被选中,若不存在与作业大小一致的空闲分区 ,则只划分比作业稍大的空闲分区,从而保留了大 的空闲分区。最佳适应算法往往使剩下的空闲区非 常小,从而在存储器中留下许多难以利用的小空闲 区(碎片)

1.4 最坏适应算法

最坏适应算法(Worst Fit):为作业选择存储区域时 ,总是寻找最大的空白区。

  • 特点

    总是挑选满足作业要求的最 大的分区分配给作业。这样使分给作业后剩下的空 闲分区也较大,可装下其它作业。由于最大的空闲 分区总是因首先分配而划分,当有大作业到来时, 其存储空间的申请往往会得不到满足。

1.5 快速适应算法

快速适应算法,又称为分类搜索法,把空闲分区按 容量大小进行分类,经常用到长度的空闲区设立单 独的空闲区链表。系统为多个空闲链表设立一张管理索引表

  • 特点

    查找效率高,仅需要根据程序的长度,寻找到能容纳它的最小空闲区链表,取下第一块进行分配即可。 该算法在分配时,不会对任何分区产生分割,所以能 保留大的分区,也不会产生内存碎片。

    在分区归还主存时算法复杂,系统开销较大。在分配 空闲分区时是以进程为单位,一个分区只属于一个进 程,存在一定的浪费。空间换时间

1.6 伙伴系统

在这里插入图片描述

2. 页面置换策略
2.1 最优置换

最优置换(Optimal):从主存中移出永远不再 需要的页面,如无这样的页面存在,则应选择 最长时间不需要访问的页面。

  • 特点:

    是所有页置换算法中页错误率最低的,但它 需要引用串的先验知识,因此无法被实现。它会将内存中的页 P 置换掉,页 P 满足:从 现在开始到未来某刻再次需要页 P,这段时 间最长。也就是 OPT 算法会 置换掉未来最 久不被使用的页 。OPT 算法通常用于比较研究,衡量其他页置 换算法的效果。

2.2 先进先出

最简单的页置换算法,操作系统记录 每个页被调入内存的时间,当必需置 换掉某页时,选择最旧的页换出。具 体实现如下:

新访问的页面插入FIFO队列尾部, 页面在FIFO队列中顺序移动;

淘汰FIFO队列头部的页面;

  • 特点:

    性能较差。较早调入的页往往是经常 被访问的页,这些页在FIFO算法下被 反复调入和调出。并且有Belady现象(分配的缺页增多,缺页率反而增加)

2.3 改进版先进先出 second chance

其思想是“如果被淘汰的数据之前被访问过,则给其第二次机会(Second Chance)”实现:

每个页面会增加一个访问标志位,用于标识此数据放入缓存队列后是否被再次访问过。

• A是FIFO队列中最旧的页面,且其放入队列后没有被再次访问,则A 被立刻淘汰;

否则如果放入队列后被访问过,则将A移到FIFO队列 头,并且将访问标志位清除

• 如果所有的页面都被访问过,则经过一次循环后就会按照FIFO的原 则淘汰。

2.4 改进版second chance- clock(NRU)

Clock是Second Chance的改进版,也称最近未使用算法 (NRU, Not Recently Used)。通过一个环形队列,避免将 数据在FIFO队列中移动。算法如下:

• 如果没有缺页错误,将相应的页面访问位置1,指针不动

• 产生缺页错误时,当前指针指向C,如果C被访问过,则 清除C的访问标志,并将指针指向D;

• 如果C没有被访问过,则将新页面放入到C的位置, 置访 问标志,并将指针指向D

在这里插入图片描述

2.5 最近最少使用(LRU)

根据历史访问记录来淘汰数据,核心思想是:““如果数据最近被访问过,那 么将来被访问的几率也更高”。

• 设置一个特殊的栈,保存当前使用的各个页面的页面号。

• 每当进程访问某页面时,便将该页面的页面号从栈中 移出,将它压入栈顶。栈底始终是最近最久未使用页面的页面号。

2.6 老化算法(AGING)

为每个页面设置一个移位寄存器,并设置一位访问位R, 每隔一段时间,所有寄存器右移1位,并将R值从左移入

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值