📜  OS中不同CPU调度算法的比较

📅  最后修改于: 2022-05-13 01:56:11.826000             🧑  作者: Mango

OS中不同CPU调度算法的比较

调度算法用于估计分配给进程和线程所需的 CPU 时间。任何 CPU 调度算法的主要目标都是使 CPU 尽可能保持忙碌,以提高 CPU 利用率。

调度算法

1.先到先服务(FCFS) :顾名思义,作业是在先到先服务的基础上执行的。这是一种基于先进先出的简单算法。就绪队列中最先出现的进程可以先访问 CPU。如果到达时间较短,则该进程将很快获得 CPU。如果第一个进程的突发时间是所有作业中最长的,它可能会受到护航效应的影响。

2.最短作业优先(SJF) :也称为最短作业优先或最短作业后接,是一种非抢占式算法,在批处理系统中易于实现,并且最能减少等待时间。它遵循选择执行时间最短的进程进行下一次执行的策略。

3.最长作业优先调度(LJF) :最长作业优先(LJF)是非抢占式版本。该算法也基于进程的突发时间。进程根据突发时间被放入就绪队列,突发时间最长的进程首先被处理。

4.Longest Remaining Time First Scheduling (LRTF) :LJF的抢先版是LRTF。这里会先考虑剩余 CPU 时间最大的进程,然后再处理。并且在某个时间间隔之后,它将检查另一个具有更多 Burst Time 的进程是否到达该时间。如果任何其他进程有更多的剩余突发时间,那么正在运行的进程将被该进程抢占。

5.最短剩余时间优先(SRTF) :该算法基于SJF,是SJF的抢占式。在这种调度算法中,剩余突发时间最少的进程首先被执行,它可能会被一个执行时间较短的新作业抢占。

6. Round Robin(RR) :这是一种抢占式调度算法,其中每个进程都有一个固定的时间,称为quantum来执行。此时允许一个进程执行一个量程,然后抢占,然后执行另一个进程。这样,进程之间就存在上下文切换,以保存这些被抢占进程的状态。

7.优先级调度:它是一种在批处理系统中工作的非抢占式算法,每个进程都被分配一个优先级,优先级最高的进程首先执行。这可能导致其他进程的饥饿。

8.多级队列调度:在这种调度中,多个队列有自己的调度算法,并与具有相同特征的进程一起维护。为此,将优先级分配给要执行的作业的每个队列。

9. Multilevel-Feedback-Queue Scheduler :它定义了几个队列和每个队列的调度算法。该算法用于确定何时升级进程何时降级进程,以及确定进程将进入的队列以及该进程何时需要服务。

注意: SJF 调度算法是假设的且不可实现的,因为如果不运行任何进程就不可能确定它的突发时间。 SJF 是一种基准算法,因为它提供的等待时间比任何其他调度算法都短

不同CPU调度算法对比分析

以下是不同 CPU 调度算法之间的简要比较:

AlgorithmAllocation is Complexity Average waiting time (AWT) Preemption Starvation Performance
FCFS According to the arrival time of the processes, the CPU is allocated. Not complex Large. No No Slow performance
SJF Based on the lowest CPU burst time  (BT). More complex than FCFS Smaller than FCFS No Yes Minimum Average Waiting Time
LJFS Based on the highest CPU burst time (BT)More complex than FCFSDepending on some measures e.g., arrival time, process size, etc. NoYes  Big turn-around time
LRTFSame as LJFS the allocation of the CPU is based on the highest CPU  burst time (BT). But it is preemptive  More complex than FCFS Depending on some measures e.g., arrival time, process size, etc. Yes Yes The preference is given to the longer jobs
SRTFSame as SJF the allocation of the CPU is based on the lowest CPU burst time (BT). But it is preemptive.More complex than FCFS   Depending on some measures e.g., arrival time, process size, etcYesYes The preference is given to the short jobs
RRAccording to the order of the process arrives with fixed time quantum  (TQ)  The complexity depends on TQ  size Large as compared to SJF and Priority scheduling. No No Each process has given a fairly fixed time
Priority Pre-emptive According to the priority. The bigger priority task executes first This type is less complex Smaller than FCFSYes  YesWell performance but contain a starvation problem
Priority non-preemptive According to the priority. with monitoring the new incoming higher  priority jobsThis type is less complex than Priority preemptivepreemptive Smaller than FCFS No Yes Most beneficial with batch systems
MLQ According to the process that resides in the bigger queue priority More complex than the priority scheduling algorithmsSmaller than FCFS  No Yes Good performance but contain a starvation problem
MFLQ According to the process of a bigger priority queue. It is the most Complex but its complexity rate depends on the TQ size Smaller than all scheduling types in many cases No No Good performance