常用的调度算法(包含实例)|操作系统

article/2025/9/15 16:17:52

目录

    • 1.先来先服务调度算法(FCFS)
    • 2.优先级调度算法
    • 3.最短作业优先调度算法(SJF)
    • 4.最高响应比优先调度算法(HRRN)
    • 5.轮转调度算法(RR)
    • 6.多级反馈轮转调度算法
    • 7.实时系统的调度算法


1.先来先服务调度算法(FCFS)

原理: {\color{Violet}原理:} 原理:

∙ \bullet 先来先服务(First-Come-First-served)调度算法是最简单非抢占的调度算法。

∙ \bullet 它通过管理一个FIFO就绪队列来实现,从前到后按顺序将CPU分配给进程。

举例: {\color{Violet}举例:} 举例:

∙ \bullet 现在有如下一组进程:

进程执行时间
P130
P25
P32

所以执行顺序为 < P 1 、 P 2 、 P 3 > <P_{1}、P_{2}、P_{3}> <P1P2P3> ,我们画出它的甘特图来形象的理解:
在这里插入图片描述
下面的时刻表示该进程占用CPU的执行时间。(后面的几种调度方法也使用甘特图来帮助理解。)

所以可以计算求得三个进程的平均等待时间为:
0 + 30 + 35 3 ≈ 21.7 {\color{Red}\frac{0+30+35}{3}≈21.7} 30+30+3521.7

特点: {\color{Violet}特点:} 特点:

∙ \bullet FCFS调度算法对短进程不利,尤其当一个短进程跟在长进程后面时,它需要等待很长的时间。有时候会导致CPU和设备的利用率很低,在实际情况中,FCFS算法通常与其他算法结合使用。


2.优先级调度算法

原理: {\color{Violet}原理:} 原理:

∙ \bullet 由用户或者系统按照某种原则给进程一个优先级,系统总是调度优先级最高的那个进程运行。

∙ \bullet 优先级可以分为静态优先级动态优先级。静态优先级就是指优先级确定以后就不再改变,比如说按照它们的执行时间长短来确定等等;动态优先级会随着进程的不断执行而发生改变,比如说可以按照等待时间的长短划分优先级等等。

∙ \bullet 对优先级动态调整可以改善系统性能,但是动态优先级调度算法会增加系统开销。

举例: {\color{Violet}举例:} 举例:

∙ \bullet 现在有如下一组进程(采用静态优先级调度算法):

进程执行时间优先级
P195
P241
P323
P414

所以执行顺序为 < P 2 、 P 3 、 P 4 、 P 1 > <P_{2}、P_{3}、P_{4}、P_{1}> <P2P3P4P1>,我们画出它的甘特图如下:

在这里插入图片描述
所以可以计算求得四个进程的平均等待时间为:
0 + 4 + 6 + 7 4 = 4.25 {\color{Red}\frac{0+4+6+7}{4}=4.25} 40+4+6+7=4.25

特点: {\color{Violet}特点:} 特点:

∙ \bullet 可能会出现“饥饿”现象,就是优先级低的进程会一直等待CPU,未来避免这种问题的出现,我们可以采用“老化”的策略,就是按一定时间间隔提高等待进程的的优先级数值。

∙ \bullet 我们假设它们几乎同时到达,但是实际情况中总会有先后顺序,在支持抢占的系统中,当新进程进入就绪队列时,如果它的优先级高于当前运行进程的优先级,那么就会抢占CPU;在非抢占系统中,只是将新进程加入了就绪队列中。


3.最短作业优先调度算法(SJF)

原理: {\color{Violet}原理:} 原理:

∙ \bullet 最短作业优先(Shortest-Job First)调度算法克服了FCFS的对短进程不利的缺点,它在就绪队列中选择处理时间最短的进程,如果时间相同则可以按照FCFS准则来处理。

∙ \bullet 它提高了系统的吞吐量,但是反过来又对长进程不利。

∙ \bullet 它分为抢占式和非抢占式两种情况

举例: {\color{Violet}举例:} 举例:

∙ \bullet 现在有如下一组进程,假设它们同时到达(非抢占式):

进程执行时间
P15
P24
P39
P43

所以执行顺序为 < P 4 、 P 2 、 P 1 、 P 3 > <P_{4}、P_{2}、P_{1}、P_{3}> <P4P2P1P3>,我们画出它的甘特图如下:
在这里插入图片描述
所以可以计算求得三个进程的平均等待时间为:
0 + 3 + 7 + 12 4 = 5.5 {\color{Red}\frac{0+3+7+12}{4}=5.5} 40+3+7+12=5.5

∙ \bullet 现在有如下一组进程,假设它们不同时到达(抢占式):

进程到达时间执行时间
P108
P214
P329
P435

最初只有P1进程,那么执行P1进程;当时间1时P2到达,此时P1剩余执行时间为7,P2执行时间为4,那么执行P2进程;当时间2时,P3到达,此时最短执行时间仍然为P2;时间3时,P4到达,此时P2执行时间为2,P4也为2,所以先让P2执行完在让P4执行,然后再让P1执行,最后在让P3执行。

所以执行顺序为 KaTeX parse error: Expected 'EOF', got '}' at position 31: …{4}、P_{1}、P_{3}}̲>,我们画出它的甘特图如下:

在这里插入图片描述
所以可以计算求得三个进程的平均等待时间为:
( ( 10 − 1 ) + 0 + ( 17 − 2 ) + ( 5 − 3 ) ) 4 = 6.5 {\color{Red}\frac{((10-1)+0+(17-2)+(5-3))}{4}=6.5} 4((101)+0+(172)+(53))=6.5

分母上面的式子为每个进程开始执行的时间减去开始等待的时间之和。

特点: {\color{Violet}特点:} 特点:

∙ \bullet 对于非抢占的SJF调度算法,可以看作是优先级调度算法的一种特例。


4.最高响应比优先调度算法(HRRN)

原理: {\color{Violet}原理:} 原理:

∙ \bullet 最高响应比(Highest Response Ratio Next)调度算法集合了FCFS算法和非抢占SJF算法的优点,使用响应比R来表征,即:
R = W + S S ( W 为等待时间、 S 为预计执行时间 ) R = \frac{W+S}{S} \ (W为等待时间、S为预计执行时间) R=SW+S (W为等待时间、S为预计执行时间)

∙ \bullet 在该算法下,等待时间相同的时候短进程响应比高于长进程,短进程优先被调度;而随着等待时间增长,进程的响应比增加,长进程被调度的可能性也会增加。

举例: {\color{Violet}举例:} 举例:

∙ \bullet 现在有如下一组进程如下:

进程到达时间执行时间
P1010
P211
P322
P431
P545

∙ \bullet 0时刻P1运行,10时刻P1运行完毕,此时P2 ~ P5的响应比为:

P 2 : 1 + 9 1 = 10 ; P 3 : 2 + 8 2 = 5 ; P_{2}:\frac{1+9}{1}=10 ;\ \ \ P_{3}:\frac{2+8}{2}=5; P2:11+9=10;   P3:22+8=5;

P 3 : 1 + 7 1 = 8 ; P 4 : 5 + 6 2 = 5.5 ; P_{3}:\frac{1+7}{1}=8 ;\ \ \ P_{4}:\frac{5+6}{2}=5.5; P3:11+7=8;   P4:25+6=5.5;

∙ \bullet 所以P2运行,直到11时刻运行结束,此时P3 ~ P5的响应比为:

P 3 : 2 + 9 2 = 5.5 ; P 4 : 1 + 8 2 = 9 ; P 5 : 5 + 7 5 = 2.4 ; P_{3}:\frac{2+9}{2}=5.5 ;\ \ \ P_{4}:\frac{1+8}{2}=9; \ \ \ P_{5}:\frac{5+7}{5}=2.4; P3:22+9=5.5;   P4:21+8=9;   P5:55+7=2.4;

∙ \bullet 所以P4运行,直到12时刻运行结束,此时P3 和 P5的响应比为:

P 3 : 2 + 10 2 = 6 ; P 5 : 5 + 8 5 = 2.6 ; P_{3}:\frac{2+10}{2}=6 ;\ \ \ P_{5}:\frac{5+8}{5}=2.6; P3:22+10=6;   P5:55+8=2.6;

∙ \bullet 所以先执行P3,后执行P5

∙ \bullet 所以执行顺序为 KaTeX parse error: Expected 'EOF', got '}' at position 31: …{4}、P_{3}、P_{5}}̲>,我们画出它的甘特图如下:

在这里插入图片描述
所以可以计算求得五个进程的平均等待时间为:
( 0 + ( 10 − 1 ) + ( 11 − 2 ) + ( 12 − 3 ) + ( 14 − 4 ) ) 5 = 7.4 {\color{Red}\frac{(0+(10-1)+(11-2)+(12-3)+(14-4))}{5}=7.4} 5(0+(101)+(112)+(123)+(144))=7.4


5.轮转调度算法(RR)

原理: {\color{Violet}原理:} 原理:

∙ \bullet 轮转(Round Robin)调度算法是一种基于抢占的调度策略,在分时系统中,每个进程会被分配一个固定的时间片,就绪队列中的进程按顺序依此调度运行。

∙ \bullet 时间片过短会使进程切换过于频繁,增加系统开销;时间片过长会使进程响应时间增加。

举例: {\color{Violet}举例:} 举例:

∙ \bullet 现在有如下一组进程如下:

进程执行时间
P124
P23
P33

这里时间片我们选择为4,按照原理可得甘特图如下:
在这里插入图片描述
所以可以计算求得三个进程的平均等待时间为:
6 + 4 + 7 3 ≈ 5.67 {\color{Red}\frac{6+4+7}{3}≈5.67} 36+4+75.67


6.多级反馈轮转调度算法

原理: {\color{Violet}原理:} 原理:

∙ \bullet 是对简单轮转调度算法的改进,它把新就绪的进程和被抢占后回到就绪队列的进程加以区分,将它们放入不同优先级的就绪队列中;

∙ \bullet 被抢占后放回就绪队列的进程优先级会降低,但是运行的时间片长度会增加。


7.实时系统的调度算法

原理: {\color{Violet}原理:} 原理:

∙ \bullet 在实时系统中会给出一个最后期限,最后期限指定任务开始或结束的时间,任务必须严格按照最后期限执行。


http://chatgpt.dhexx.cn/article/byfdioKu.shtml

相关文章

几种常见的调度算法

文章目录 1.先来先服务算法&#xff08;FCFS,First Come First Service&#xff09;2.短作业优先算法&#xff08;SJF,Short Job First&#xff09;3.高响应比优先算法4.时间片轮转算法5.优先级调度算法6.多级反馈队列算法 1.先来先服务算法&#xff08;FCFS,First Come First …

videojs播放m3u8格式视频

videojs 是不支持m3u8格式&#xff0c;需要配合videojs-contrib-hls插件 npm install --save video.js npm install --save videojs-contrib-hls 不加muted 刷新时不会自动播放&#xff0c;但是加上就会没有声音了&#xff0c;因为业务不需要声音所以没有影响

一个可以在线播放解析m3u8,mp4的网站 m3u8player.lantianye3.top

自己写的一个可以在线播放m3u8的网页&#xff0c;在这里分享一下。借助m3u8 player网页播放器&#xff0c;只需将您的M3U8文件地址或者mp4链接复制粘贴到播放器地址栏中然后点击播放即可。 网站 http://m3u8player.lantianye3.top/ 如有不足&#xff0c;多多指教。 首页截图&am…

视频工具下载(m3u8、MP4)

下载视频m3u8工具 FFmpeg 转 ts 格式 笔记有点乱 都是一笔带过&#xff08;有链接&#xff09;&#xff0c;可以参考别人教程 1、下载m3u8工具&#xff08;支持win和liunx&#xff09; 下载链接 20201019 &#xff08;都是2020年的&#xff0c;还是可以用&#xff09; 使用…

前端如何播放m3u8格式的视频

m3u8格式的视频是将文件分成一小段一小段的ts文件&#xff0c;播放完一个在播放下一个&#xff0c;由于每次请求的ts文件都很小&#xff0c;所以基本可以做到无延时播放。目前WEB上主流的直播方案主要是HLS和RTMP&#xff0c;移动端主要是HLS&#xff0c;PC端主要是RTMP。 HLS…

如何下载m3u8格式视频

小编记得以前手机流量少的时候&#xff0c;电脑上下课程或电影再存到手机上看还是很容易的 现在虽然这种需求比较少&#xff0c;但还是有一些视频想下载下来&#xff0c;不过却发现下不了了因为很多的视频都不提供下载地址或下载的是加密的视频格式 即使我们能通过工具采集到…

Android m3u8网络视频播放

最近在做 m3u8网络视频播放&#xff0c;踩了不少坑&#xff0c;也试了不少的 框架&#xff0c;特别记录一下其中用的比较多的三种 第一种&#xff1a;media:ijkplayer media:ijkplayer 是由 bilbil 提供的开源的视频 框架&#xff0c;但是由过之后感觉不太好用&#xff1a; …

网页在线视频下载教程(m3u8格式介绍及下载教程)

简介&#xff1a; m3u8文件是苹果公司使用的HTTP Live Streaming&#xff08;HLS&#xff09;协议格式的基础。HLS是新一代流媒体传输协议&#xff0c;其基本实现原理为将一个大的媒体文件进行分片&#xff0c;将该分片文件资源路径记录与m3u8文件&#xff08;即playlist&…

什么是m3u8?

什么是m3u8? ​  m3u8是苹果公司推出的视频播放标准&#xff0c;是m3u8的一种&#xff0c;只是编码格式采用的是UTF-8。 m3u8准确来说是一种索引文件&#xff0c;使用m3u8文件实际上是通过它来解析对应的放在服务器上的视频网络地址&#xff0c;从而实现在线播放。使用m3u8…

M3U8是什么

m3u8是苹果公司推出的视频播放标准&#xff0c;是m3u8的一种&#xff0c;只是编码格式采用的是UTF-8。   m3u8准确来说是一种索引文件&#xff0c;使用m3u8文件实际上是通过它来解析对应的放在服务器上的视频网络地址&#xff0c;从而实现在线播放。使用m3u8格式文件主要因为…

video.js播放m3u8视频

m3u8 是一种基于HTTP Live Streaming&#xff08;HLS&#xff09;文件视频格式&#xff0c;它主要是存放整个视频的基本信息和分片(Segment)组成。目前 由 Apple.inc 率先提出的 HLS 协议在 Mac 的 Safari 上原生支持。 video.js是H5视频播放器&#xff0c;支持播放m3u8视频。这…

下载 .m3u8视频文件

简介 M3U8 是 Unicode 版本的 M3U&#xff0c;用 UTF-8 编码。"M3U" 和 "M3U8" 文件都是苹果公司使用的 HTTP Live Streaming&#xff08;HLS&#xff09; 协议格式的基础&#xff0c;这种协议格式可以在 iPhone 和 Macbook 等设备播放。 上述文字定义来自…

前端播放m3u8格式视频

m3u8是苹果公司推出的视频播放标准&#xff0c;是m3u的一种&#xff0c;只是编码格式采用的是UTF-8。m3u8准确来说是一种索引文件&#xff0c;使用m3u8文件实际上是通过它来解析对应的放在服务器上的视频网络地址&#xff0c;从而实现在线播放。 m3u8格式的视频是将文件分成一小…

使用videojs播放m3u8视频

vue3使用videojs 播放m3u8格式视频 videojs是一个播放视频的js库&#xff0c;可以通过videojs结合videojs-contrib-hls实播放m3u8格式视频。流媒体传输协议(hls)定义了用来控制播放的m3u8文件 m3u8是一个文本文件(播放列表文件)&#xff0c;里面的内容就是被播放的音视频文件路…

网页播放 .m3u8 视频文件

1,使用 dplayer,官网上有例子 <link href"https://cdn.bootcss.com/dplayer/1.25.0/DPlayer.min.css" rel"stylesheet"> <script src"https://cdn.jsdelivr.net/npm/hls.jslatest"></script> <script src"https://cd…

m3u8

1.什么是m3u8&#xff1f; 要想知道什么是m3u8最直接最粗暴的方式是找几个m3u8文件拔出来看看就知道。(话说是驴子是马出来溜溜就知道…) 下面我给出了2个m3u8连接&#xff1a; 1.http://cache.utovr.com/201508270528174780.m3u8 2.http://devimages.apple.com/iphone/sam…

M3U8在线MP4格式

MP4 格式是目前来说较为通用的格式一般的播放器都支持播放&#xff0c;兼容性十分友好。 不过可能会在网站在线播放的时候接触到 m3u8 文件&#xff0c;这种文件格式无法直接下载播放&#xff0c;如果想要在电脑上播放这种视频&#xff0c;则需要把 m3u8 文件转换成mp4格式。 介…

M3U8在线播放

M3U8在线播放 前言一、思路二、代码框架1. 移动端适配2. 改变M3U8地址3. 设置videojs参数4. 增加快进等功能 写在最后 前言 当我们在网上愉快观影的时候&#xff0c;难免会遇到“M3U8格式”的视频。聪明的你应该也发现了&#xff0c;它是没办法直接播放的。它其实只是一个索引…

M3U8文件简介及在线播放器

m3u8文件格式 M3U8是Unicode版本的M3U&#xff0c;用UTF-8编码。“M3U” 和 “M3U8” 文件都是苹果公司使用的 HTTP Live Streaming&#xff08;HLS&#xff09; 协议格式的基础&#xff0c;这种协议格式可以在 iPhone 和 Macbook 等设备播放。m3u8文件其实是 HTTP Live Strea…

m3u8 播放视频

使用m3u8 播放视频&#xff1a; m3u8在线播放 只需放视频链接即可 链接 http://tool.liumingye.cn/m3u8/index.php 下载 m3u8 js css 链接&#xff1a;https://pan.baidu.com/s/1dTAX_1B6hrF50O92a6GxuQ 提取码&#xff1a;yyds 引入到 vue 在index.html里面或者npm 下载 引…