部分操作系统算法


前言

该文章是学习时做的一个随笔记录,推荐看哈工大李治军老师的视频学习

https://www.bilibili.com/video/BV1d4411v7u7?p=1

本文章内容大多来自该视频


一、CPU调度算法

CPU调度算法的指标
吞吐量:单位时间内完成的作业量
周转时间:作业完成时间-作业提交时间
响应时间:用户提交请求到首次产生响应所用时间
等待时间:进程等待分配CPU资源的总时间

不同的进程看重不同指标,前台进程例如PPT更加关注响应时间(按下鼠标希望立刻得到反应),后台进程例如g++更加关注周转时间(尽快完成编译)

1.FCFS先到先服务

假设a,b,c,d四个作业依次到达(间隔时间非常小,可以忽略)
在这里插入图片描述

总等待时间:20+(20+10)+(20+10+5)
缺点:等待时间可能会很高

SJF短作业优先

仍然是上一个例子,这次优先调度短作业
在这里插入图片描述
总等待时间:20+(20+5)+(20+5+10)
因此,短作业优先调度的平均等待时间短,但是存在问题
(1) 如何知道任务将来会执行多长时间?
(2) 导致执行时间长的作业造成饥饿

3.RR时间片轮转

给每个进程一个时间片,若时间片用完进程仍未完成,则进入就绪态。优点是非常公平,简单。
缺点:若时间片大,则响应时间长,若时间片小,则用于切换上下文的系统内耗大,吞吐量小。而上文中提到不同任务关注的指标不同,该调度算法不能对不同任务需求进行一个综合

4.Linux 0.11的调度算法

该算法中存在变量counter,既表示优先级,也表示时间片。
方法:找就绪队列中counter值最大的进程执行,若所有进程counter都为0,则对所有就绪态以及阻塞态的counter重新赋值为当前counter右移一位+counter初始值。
这样使得IO约束型进程(前台进程的特征)的优先级增加,从而降低响应时间,综合了时间片轮转以及短作业优先的优点。

5.多级反馈队列调度算法

设置多个队列,从上往下优先级逐渐降低,时间片逐渐增长。新进程进入内存后,放入第一级队列的末尾,若在第一级规定时间片内未运行完成,将转入第二级队列末尾。同一级队列按照FCFS进行调度,只有在高优先级队列为空时,才会调度低优先级队列。若低优先级队列进程运行时有新进程进入高优先级队列,则停止当前进程并移入原队列末尾,接着调度高优先级进程。

二、缺页中断置换算法

页面置换算法的指标
缺页次数

1.FIFO

选择先到的页进行换出

2.MIN

最优方案,选择将来最远使用的页进行换出
问题:无法知道将来访问页的序列,因此无法实现

3.LRU

最近最少使用(Least recently used),选择最近最长时间没有使用的页进行换出,用历史预测未来。
实现方式
(1)记录每个页的时间戳
(2)维护一个页码栈,每次地址访问都需要修改栈
问题:该方法代价过大,访存次数过多,难以实现

4.Clock算法

在这里插入图片描述

每个页加一个引用位,每次访问时,将该位置为1。
缺页中断时,指针移动扫描该位,若为1清0,并继续扫描;若为0,换出该页

问题:当记录了太长的历史信息(缺页中断少),导致所有位都为1时,指针会扫描一圈并换出当前位置,退化为了FIFO

改进:增加一个扫描指针,放在时钟中断中,定时清除引用位(移动速度快)

三、磁盘调度算法

在这里插入图片描述
磁头head:每个盘面对应一个磁头。
柱面cyl:所有的磁头都是连在同一个磁臂上的,因此所有磁头只能“共进退”。所有盘面中相对位置相同的磁道组成柱面。
扇区sec:每个扇区大小512Byte。

性能指标
请求队列的磁头移动磁道的距离

1.FCFS

缺点:磁头移动远,速度慢

2.SSTF

短寻道优先(Shortest-seek-time First),优先服务最近的请求。
缺点:磁头总是在中间移动,造成两端的请求饥饿

3.SCAN

在短寻道优先基础上中途不回折
在这里插入图片描述
缺点:
(1)在向一侧扫描时,最开始的区域往往没有请求,因为在上一次扫描的短时间内,已经访问过该区域了;
(2)两端的请求往往比中间的请求响应的慢。

4.C-SCAN(电梯算法)

在SCAN的基础上,直接将磁头移到另一端
在这里插入图片描述

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值