首页 > 编程语言 >比较FCFS和SJF两种调度算法

比较FCFS和SJF两种调度算法

时间:2024-12-29 10:26:48浏览次数:8  
标签:P1 FCFS 调度 算法 等待时间 进程 时间 SJF

在操作系统中,进程调度是核心任务之一,用于决定在什么时候由哪个进程来占用CPU资源。两种常见的调度算法是先来先服务(FCFS)最短作业优先(SJF)。这篇博客将用详细的步骤和例子,帮助你理解这两种算法的工作原理及其优缺点。


一、先来先服务(FCFS)

工作原理

FCFS 是最简单的调度算法,按照进程到达的顺序进行调度,就像排队买票,先到的先服务。这里每个进程都需要等待当前正在运行的进程完成之后才能开始。

特点

  • 非抢占式:一旦一个进程开始执行,其他进程需要等它完成。
  • 简单易实现:只需要维护一个按照到达顺序排列的队列。

优缺点

优点:

  1. 简单直观,易于实现。
  2. 所有进程都能公平地获得资源,不会有饥饿问题。

缺点:

  1. 平均等待时间可能较长,特别是在进程大小差异较大时(称为“长进程阻塞短进程”问题)。
  2. 不灵活,无法动态调整优先级。

二、最短作业优先(SJF)

工作原理

SJF 优先调度那些预计运行时间最短的进程。它的目标是使系统的平均等待时间最小化。

特点

  • 可以是抢占式或非抢占式:
    • 非抢占式:一旦一个进程开始执行,其他进程不能打断。
    • 抢占式(又称最短剩余时间优先,SRTF):如果一个新的短作业到达,正在运行的长作业会被打断。

优缺点

优点:

  1. 平均等待时间通常是所有调度算法中最短的。
  2. 更适合批处理系统或对响应时间要求不高的场景。

缺点:

  1. 需要事先知道每个进程的运行时间(或作出准确的估计),这在实际中可能很难。
  2. 饥饿问题:如果短作业不断到来,长作业可能永远得不到执行。

三、示例对比

假设有以下四个进程需要调度:

  • P1: 到达时间=0,运行时间=8
  • P2: 到达时间=1,运行时间=4
  • P3: 到达时间=2,运行时间=9
  • P4: 到达时间=3,运行时间=5

1. FCFS 调度

按照到达顺序(P1 → P2 → P3 → P4):

  • P1 执行时间:0 到 8,等待时间=0
  • P2 执行时间:8 到 12,等待时间=8-1=7
  • P3 执行时间:12 到 21,等待时间=12-2=10
  • P4 执行时间:21 到 26,等待时间=21-3=18

平均等待时间 = (0 + 7 + 10 + 18) / 4 = 8.75

2. SJF 调度(非抢占式)

按照运行时间排序(P1 → P2 → P4 → P3):

  • P1 执行时间:0 到 8,等待时间=0
  • P2 执行时间:8 到 12,等待时间=8-1=7
  • P4 执行时间:12 到 17,等待时间=12-3=9
  • P3 执行时间:17 到 26,等待时间=17-2=15

平均等待时间 = (0 + 7 + 9 + 15) / 4 = 7.75

3. SJF 调度(抢占式)

如果是抢占式 SJF,每次新的短作业到达都会打断当前的长作业,调度过程如下:

  1. P1 开始运行,P2 到达,P2 比 P1 短,因此切换到 P2。
  2. P2 完成后,P4 到达,比剩余的 P1 短,因此执行 P4。
  3. P4 完成后继续执行剩余的 P1。
  4. 最后执行 P3。

经过计算,抢占式 SJF 的平均等待时间会进一步降低。


四、总结

特性FCFSSJF
调度原则到达顺序短作业优先
实现难度简单较复杂
平均等待时间较高较低
饥饿问题有(长作业可能被饿死)
适用场景适合公平性要求高的场景适合追求效率的场景

对于初学者来说,建议从 FCFS 入手,理解基本调度流程后再学习 SJF 的优点和实现细节。希望本文能帮助你轻松迈出学习操作系统调度算法的第一步!如果有疑问或需要更复杂的例子,欢迎留言讨论!

标签:P1,FCFS,调度,算法,等待时间,进程,时间,SJF
From: https://blog.csdn.net/B5201234/article/details/144801174

相关文章

  • 头歌实训数据结构与算法-二叉树及其应用(第7关:由前序和中序遍历序列构造二叉树)
    任务描述本关任务要求采用前序遍历序列和中序遍历序列构造二叉树。相关知识给定一棵二叉树的前序遍历序列和中序遍历序列可以构造出这棵二叉树。例如前序序列是ABDECFG,中序序列是DBEAFCG,那么这颗二叉树的结构如图1所示。树结点结构定义为:structBTNode{    c......
  • 基于PSO粒子群优化的CNN-GRU-SAM网络时间序列回归预测算法matlab仿真
    1.算法运行效果图预览(完整程序运行后无水印) PSO优化过程:  PSO优化前后,模型训练对比:    数据预测对比:    误差回归对比:   2.算法运行软件版本matlab2022a 3.部分核心程序(完整版代码包含详细中文注释和操作步骤视频)LR......
  • 数据结构与算法Python版 图
    文章目录一、图二、抽象数据类型图三、图的实现-邻接列表法一、图表示图的英文单词painting:用画刷画的油画drawing:用硬笔画的素描/线条画picture:真实形象所反映的画,如照片等,如takepictureimage:由印象而来的画,遥感影像做image,因是经过传感器印象而来figure:轮廓图的......
  • 最小生成树---普里姆算法
    6-1最小生成树(普里姆算法)试实现普里姆最小生成树算法。函数接口定义:voidPrim(AMGraphG,charu);其中G是基于邻接矩阵存储表示的无向图,u表示起点裁判测试程序样例:#include<iostream>#defineMVNum10#defineMaxInt32767 usingnamespacestd;structedg......
  • c++使用深度优先算法和广度优先算法解决迷宫问题
    求从迷宫左上角(0,0)到右下角(M-1,N-1)的路径。MxN的迷宫如下:O代表可通行,X代表不可通行。每次只能往上下左右四个方向走一步。{'O','X','X','X','X','X','X','X''O','O','O','O','O'......
  • 【机器学习 | 数据挖掘】智能推荐算法
    【作者主页】FrancekChen【专栏介绍】⌈⌈⌈智能大数据分析⌋......
  • yolov3算法及其改进
    yolov3算法及其改进1、yolov3简介2、yolov3的改进2.1、backbone的改进2.1.1、darknet19相对于vgg16有更少的参数,同时具有更快的速度和更高的精度2.1.2、resnet101和darknet53,同样具有残差结构,精度也类似,但是darknet具有更高的速度2.2、FPN2.3、anchor-base与grid-cell3......
  • yolov4算法及其改进
    yolov4算法及其改进1、yolov4介绍2、mosaic与mish激活函数2.1、mosaic数据增强2.2、Mish激活函数3、backbone网络框架的改进4、PAN-FPN的介绍5、样本匹配和损失函数5.1、样本匹配5.2、YOLOV4损失函数5.2.1、GIOUloss5.2.2、DIOUloss5.2.3、CIOULoss1、yolov4介......
  • yolov5及其算法改进
    yolov5及其算法改进1、YOLOV5目标检测简介2、前处理2.1、自适应Anchor计算2.2、自适应计算Anchor的流程如下:2.3、图像自适应3、YOLOV4与YOLOV5的架构区别3.1、SiLU激活函数3.2、CSPBlock结构图3.3、yolov5的spp改进4、正负样本匹配与损失函数4.1、坐标表示4.2、正......
  • 强化学习算法:soft actor-critic (SAC)—— SAC中的alpha_losse是什么?
    官方实现地址:https://openi.pcl.ac.cn/devilmaycry812839668/softlearning在SAC算法的官方实现中有一个论文中没有介绍的部分,这就是SAC中的alpha_losse,在SAC论文中alpha是以超参数的形式存在的,但是在论文作者发布的具体实现的代码中关于这个alpha却给出了一种计算方法,该方法可......