Python 程序实现最短作业优先 (SJF) CPU 调度2024 年 8 月 29 日 | 阅读 6 分钟 在 CPU 中,调度方法选择进程执行的顺序,从而管理等待时间。其中一种方法称为“最短作业优先”(SJF) 或“最短作业下一个”。此算法首先运行执行时间最短的进程。另一种称为最短作业下一个 (SJN) 的方法,通常用作 SJN,也可以使用。 SJF 调度的特点最短作业优先可以使用贪心算法实现。 此算法的优点在于,它拥有所有可用 CPU 调度算法中最低的平均等待时间。 然而,如果不断出现执行时间较短的进程,则可能导致饿死。可以通过实现老化概念来解决此特定问题。 由于操作系统无法了解突发时间,因此几乎不可能对其进行分类。尽管无法预测进程的完整执行时间,但可以通过各种技术来确定,例如计算先前执行时段的加权平均值。 在提供准确运行时间估计的专门设置中可以使用 SJF。 算法
周转时间 = 任何特定进程的完成时间 - 任何特定进程的到达时间。
等待时间 = 进程的周转时间 - 进程的突发时间 段树是一种数据结构,可用于构建非抢占式的最短作业优先方法。 在继续之前,需要牢记一个假设。假定到达时间为零,这意味着进程的周转时间和完成时间将相同。 在 Python 中实现 SJF 算法 代码 输出 Enter the number of processes: 10 Enter the Burst Time of the processes: P1: 4 P2: 3 P3: 7 P4: 9 P5: 1 P6: 10 P7: 14 P8: 11 P9: 5 P10: 16 P B_T W_T TA_T P5 1 0 1 P2 3 1 4 P1 4 4 8 P9 5 8 13 P3 7 13 20 P4 9 20 29 P6 10 29 39 P8 11 39 50 P7 14 50 64 P10 16 64 80 The average Waiting Time for the whole sequence of processes is = 22.8 The average Turn Around Time of the processes is = 30.8 时间复杂度:此 SJF 算法的时间复杂度为 O(n^2)。时间复杂度是非线性的,因为我们使用嵌套循环来排序突发时间和进程 ID。 辅助空间:此方法需要 O(n) 的额外内存空间。我们正在存储进程的数组。 最短作业优先算法的优点
最短作业优先算法的缺点
最短剩余时间优先 (SRTF)最短作业优先 (SJF) 算法的抢占版本称为最短剩余时间优先 (SRTF)。此算法将 CPU 分配给即将完成的任务。 此技术不能用于交互式系统,因为它需要对完成任务所需的 CPU 时间有深入的了解。然而,SRT 方法用于批处理系统,在这些系统中,优先处理小作业至关重要。 然而,SRT 比 SJN 具有额外的开销,因为它需要频繁的操作系统上下文切换,并且需要监视队列中进程的 CPU 时间。 对于相同的进程集,SRT 方法比 SJF 算法执行得更快。然而,在这种情况下,忽略了运行成本,即执行上下文切换所需的时间。所有被视为可抢占的任务的处理数据必须存储在其对应的 PCB 中,以便随时可以恢复,而其他进程(即操作系统正在切换到的进程)的数据则被写入通常称为寄存器的位置。这就是上下文切换的过程。 优点
缺点
|
本文将演示如何使用 PyQt5 构建倒计时计时器应用程序。使用计时器(一种用于测量特定时间间隔的特殊时钟)时,我们必须从给定时间倒计时直到它达到零。实现 GUI 的步骤...
5 分钟阅读
本教程演示了如何利用科学计算中常用的流行 Python 库来计算 Python 中具有实变量的连续有界实函数的积分。由于本网站专注于计算,因此此处使用的积分计算方法主要是数值方法;特定的分析...
阅读 15 分钟
Recaman's Sequence 是一个迷人的整数序列,它从一个单独的范围开始,并且每个后续的广泛数字都是通过减去当前项或添加它来获得的,这取决于结果是否为正且尚未出现在...中。
阅读 4 分钟
数据分区是 PySpark 中的一种技术,它将大数据分成更小、更易于管理的数据块,称为分区。数据分区使 Spark 能够并行处理数据,从而提高性能并减少处理时间。在本文中,我们将讨论数据...
阅读 4 分钟
PYTHON 网络项目 网络项目是提升学生和专业人士在此竞争环境中的形象的绝佳途径。我们的管理层以高度的动力启动,旨在以最专业的方式帮助学生完成他们的学业任务。我们专注于超现代...
阅读 4 分钟
在本教程中,我们将使用 Python 编程语言学习 KMP 算法。该算法主要用于以 O(n) 复杂度搜索模式或子字符串。该算法可能会在技术面试中被问到,以测试开发人员的能力。KMP 算法 KMP 代表 Knuth-Morris-Prat...
阅读 2 分钟
简介:Twitter API(应用程序编程接口)是一组工具,它支持开发人员应用程序与 Twitter 平台之间的程序化交互。通过使用 Twitter API,开发人员可以访问和检索数据、发布新推文、检索用户信息等等。这使得构建应用程序成为可能...
阅读 4 分钟
使用称为决策树的机器学习算法,我们可以表示决策以及这些决策的潜在后果,包括输出、输入成本和效用。监督学习方法组包括决策制定算法。它适用于分类和连续的输出参数。决策树...
阅读 3 分钟
在本文中,我们将了解噪声、各种类型的噪声、图像去噪、使用 OpenCV 进行图像去噪、OpenCV 中的非局部均值算法以及 OpenCV 中的 fastNlMeansDenoising 函数。fastNIMeansDenoising 是 OpenCV 模块的一种方法。它用于对图像进行去噪。取出噪声的过程……
阅读 6 分钟
什么是 Python 用户组?Python 用户组,也称为 PUG,是一个开放而非正式的协作空间,供程序员探索 Python 编程语言的中级和高级部分。开发人员可以分享他们对该语言的使用和新技巧...
7 分钟阅读
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India