0
最短作业优先算法
以下是最短作业优先算法
最短作业优先调度算法是对预计执行时间短的作业(进程)优先分派处理机,通常后来的短作业不抢先正在执行的作业。这种算法称为这种算法会根据作业长短,也就是作业服务时间的多少来调度作业,服务时间短的会被优先调度执行。
这种算法的优点是比FCFS改善平均周转时间和平均带权周转时间,缩短作业的等待时间;提高系统的吞吐量。
算法的缺点在于对比较长的作业可能长期得不到调度,对长作业不利;还有就是作业的服务时间是用户向系统提交作业时设定好的,难免有些用户为了让自己的岩配帆作业先调度,会把服务时间缩短,也就是有人为的因素在里面。
在典型的设计中,一个任务有以下三种状态:正在运行(Running,正在CPU中执行)待命(Ready,等待执行)阻塞(Blocked,任务暂停,等待一个事件的发生,例如接收一组数据)
由于CPU在某个时间只能执行一个任务,大部分任务,在大部分时间,处于阻塞或待命状态。可能会有大量项目在待粗雹命列表里等待执行,这取决于系统所需的任务数量以及调度器的类型。
通常情况下,对于简单的时间触发式调度器来说,待命任务列表的数据结构的设计要尽可能缩短最坏卖嫌情况下,程序在调度器关键部分的执行时间,以防止其他任务一直在待命列表中,无法及时执行。
因此,在这种调度器中,应尽可能避免抢占式任务,甚至应该关闭调度器之外的所有中断。当然,待命任务列表的数据结构也应根据这个系统需要的最大任务数量做进一步的优化。
处理机的三种调度算法的基本原理
在早期的计算机系统中,对cpu的管理是十分简单的,因为那是它和其他系统资源一样,为一个作业所独占,不存在处理机分配和调度的问题。但随着多道程序设计技术的出现,系统在调度作业执行时,必须考虑到每个作业用户得到处理机的均等性,而在实时系统中,首先要考虑的是处理机的响应时间。由此可见,操作系统的要求不同,处理机的调度策略是不同的。而常用的调度算法有先来先服务算法、轮转法、优先级法、最短作业优先法、最高响应比优先法。其中先来先服务算法就类似于排队打饭是一样的,排在前面的先打到饭。轮转法是将cpu的处理时间分成固定大小的时间片,如果一个进程在调度过程中用完了分配给自己的时间片,虽然该进程没有执行完,但它仍会释放自己所占用的处理机,等下次轮转到自己的时间片时,再次占用处理机。优先级法是每一个进程都有自己的优先级,优先级越高,则越早执行。最短作业优先法是选择那些估计需要执行时间最短的作业投入执行,这样可以使系统在同一时间内处理作业个数最多,但可能会使那些长作业永远得不到调度执行的机会。最高响应比优先法则同时考虑每个作业的等待时间长短和估计需要的执行时间窗段,从中选择响应比最高的作业投入执行。
希望我的答案能让你满意。
什么是最短作业优先调度算法?这种作业调度算法的不公平之处表现在哪里?
这种算法会根据作业长短,也就是作业服务时间的多少来调度作业,服务时间短的会被优先调度执行。算法的缺点在于对比较长的作业可能长期得不到调度,对长作业不利;还有就是作业的服务时间是用户向系统提交作业时设定好的,难免有些用户为了让自己的作业先调度,会把服务时间缩短,也就是有人为的因素在里面。