操作系统中有各种编程算法,其中一些适用于任务调度,一些编程算法适用于调度过程,一些编程算法适用。以下是几种常用的规划算法。
先到先得(FCFS)编程算法
FCFS编程算法是最简单的编程算法之一,可用于作业调度和进程调度。在任务调度,算法选择是你第一次进入排队长龙备份作业,装载到内存中的一个或多个任务,分配必要的资源,创造的过程,并放置在队列列表。
在这个过程中的调度中,调度算法FCFS选择首先从队列进入队列的过程中,分配处理器,投入运行,直到它完成或阻止由于某种原因释放处理器。
以下是说明FCFS编程算法性能的示例。假设系统中有4个作业,其发货时间分别为8,8.4,8.8和9。执行时间为2,1.5和0.2。系统使用FCFS编程算法。平均等待时间和这组操作的平均值。响应时间和平均响应时间如表2-3所示。
平均等待时间t=(0 + 1.6 + 2.2 + 2.5)/4=1.575
平均响应时间T=(2 + 2.6 + 2.7 + 2.7)/4=2.5
加权平均响应时间W=(1 + 2.6 + 5.Mus 13.5)/4=5.625
FCFS编程算法是一种不可分割的算法。从表面上看,这是公平的所有工作,但首先出现一个长期的系统工作,它会使许多短作业等待很长的时间,所以它不能被用来作为主要编程策略系统和分时度假系统实时。但它经常与其他编程策略一起使用。例如,在使用优先级作为编程策略的系统中,通常根据FCFS原则处理具有相同优先级的多个进程。
调度算法FCFS的特征在于简单的算法,但效率低,它是用于大型作业是有利的,但不利的是对于短的操作(关于SJF和高响应比)适用于CPU忙的操作和它不利于占用的I/O操作。
短作业优先(SJF)编程算法
优先级的调度算法短工作(处理)是指一种算法,优选短作品程序(过程)。调度算法短作业优先(SJF)选择与估计运行时间较短的尾部回,并放置在所述存储器操作的一个或多个作业。调度算法的优先级流程短(SPF)来选择一个过程估计的执行时间短的尾列表中,立即分配处理器和运行,直到完成或发生,并且锁的事件。机例如,考虑表2-3中提供的一组作业。如果系统使用短优先化算法的工作中,平均等待时间,平均响应时间和响应时间加权平均值在表2-4所示。
平均等待时间t=(0 + 2.3 + 1.4 + 1)/4=1.175
平均响应时间T=(2 + 3.3 + 1.9 + 1.2)/4=2.1
加权平均响应时间W=(1 + 3.3 + 3.8 + 6)/4=3.525
SJF规划算法也存在不容忽视的缺陷:
该算法不适合长时间工作。由于它是示于表2-3和表2-4中,对SJF调度算法增加长工作的响应时间。此外,如果有一个长期的工作进入排队系统备份,因为程序员总是优先考虑那些短期操作(即使你输入),这将造成长时间作业不安排在很长一段时间(的现象“饥饿“要注意区分”中性的。后者是备用系统,首先是规划战略的问题)。
该算法不考虑工作的紧迫性可言,因此不保证应急工作将及时进行处理。
由于工作的持续时间仅基于由用户所提供的执行时间估计,并且用户可以有意或无意地缩短工作的执行的估计时间,可能的是,该算法并没有真正实现了短的调度优先级工作。
请注意,SJF规划算法的平均等待时间和平均响应时间是最小的。
优先规划算法
优先级编程算法也称为优先级编程算法。该算法可用于作业调度和进程调度。算法中的优先级用于描述正在运行的任务的紧急程度。
在计划任务,调度算法优先选择与任务队列备份每次传送他们记忆的最高优先级的一个或多个任务,它分配必要的资源,创造的过程和放入队列列表。在编程过程中,优先级调度算法选择过程具有最高优先级队列列表中的每个时间,分配处理器并投入运行。
根据新的更高优先级的进程是否能够预见到实施过程中,调度算法可以分为:
编程算法的非剥夺优先级。当进程在处理器上运行时,即使更重要或紧急的进程进入队列,运行进程也会继续运行,直到它为了自己的目的而提交处理器(任务完成)或等待事件)将处理器分配给更重要或更紧急的过程。
私有优先级规划算法。当进程在处理器中运行时,如果更重要或紧急的进程进入队列,则立即暂停正在运行的进程,并将处理器分配给更重要或更紧急的进程。
根据创建流程后是否可以更改流程的优先级,流程的优先级可分为以下两种类型:静态优先级在创建进程时确定优先级,并保持整个过程的生命一样。用于确定所述静态优先级的主要依据是处理的种类,对资源和用户要求的工艺要求。
动态优先级该方法的执行过程中,优先级是根据在此过程中的变化动态地调整。用于动态调节的优先级的主要基地是时间的过程需要的CPU时间和等待CPU时间的过程持续时间的量。
高响应率优先级算法
用于优先高响应速率的算法主要用于作业调度,这是一个整体的平衡调度算法FCFS算法和SJF调度,考虑到等待时间和执行时间估计每一项工作。每当工作程序,首先计算在作业队列后面每个作业的响应速度和工作选择具有最高响应率。
响应关系的变化可以描述为:
根据公式,我们可以知道:
当超时工作是一样的,时间越短所需时间的服务,更高的响应速度,更短的工作。
当所需的服务时间是一样的,劳动的反应是由你的等待时间来确定。超时越高,响应速度高,所以实现该服务,先到先得。
对于长时间工作,工作响应关系可以随着时间的增加espera.Cuando等待时间足够长,响应率可以上升到一个较高的水平,这样你还可以得到处理器。克服饥饿状态并负责长期工作。
时间段旋转编程算法
时间片旋转编程算法主要应用于分时系统。在该算法中,该系统根据到达时间排队在一个队列中的所有准备的过程。进程调度程序总是选择第一个进程在队列列表中,即第一的原则来了,但你只能运行一个。折扣时间,如100毫秒。使用的时间间隔,即使该过程没有完成其操作必须释放(剥夺)处理器下一个准备过程,以及私营过程在队列准备结束返回到返回排队,等待再次后科尔
在用于编程时间段旋转的算法中,时间间隔的大小对系统的性能具有很大影响。如果时间间隔足够大以使所有进程可以在一个时间间隔内运行,则时隙旋转编程算法退化为一阶到达编程算法。如果时间间隔很小,处理器将在进程之间过于频繁地更改,这将增加处理器开销,并将减少实际执行用户进程所花费的时间。因此,应该适当选择时间部分的大小。
一段时间的持续时间通常由以下因素确定:系统的响应时间,等待队列中的进程数和系统的处理能力。
多级反馈队列编程算法(结合以前算法的优点)
用于编程多级反馈队列的算法是时间片旋转编程算法和优先级编程算法的综合和开发,如图2-5所示。通过动态调整过程优先级和时间段的大小,多级反馈队列编程算法可以平衡多个系统目标。例如,处理短流程以提高系统性能并缩短平均响应时间,处理I/O类型流程以获得更好的I/O设备利用率并缩短响应时间,并且无需事先估计该过程的执行时间。图2-5多级反馈队列编程算法
实施意见队列调度算法,多级反馈是:
1.您必须配置各种列表和队列每个队列应该接受不同的优先级:第一级队列具有最高优先级,第二级的尾部是第二等队列的优先级最低。
2.分配给每个队列过程段运行时的大小也不同。在具有较高优先级的订单,每个进程的运行时间段更小。例如,时间间隔队列级别2比级别队列1的时间间隔的两倍长,...的队列的时间间隔i + 1的两倍长于级别队列的时间间隔。
3.当一个新的进程进入存储器,首先放置在队列级别1的端部和被排队,用于根据FCFS的原理编程。当它是执行过程中的转动,如果它能够在时间间隔内完成,它已准备好排空系统中,如果不是在时间间隔结束时完成,则程序员将在队列级别的端部转移过程2.再次,根据FCFS原则等待预定执行;如果运行队列中的2级,放入队列级别3的相同方式的时间间隔后还没有完成......如此继续下去,当一个长传从第一处理后的尾巴依次较低级到第n级的尾巴,在队列级n中的旋转时隙运行。
4.调度器调度队列中的级别2上运行的过程中,只有当队列级别1是空的,则该队列水平计划I仅当所述第一队列级别(I-1)是空的。该过程正在运行。如果处理器正在执行的过程中线路的第i个,和一个新进程进入最高优先级队列(任何第一?第(i-1)),那么新的过程将前进到处理器上执行的过程中,即,程序员在复位第i行的结尾运行的进程,并分配所述处理器将所述新的更高优先级的进程。
上海IT外包服务网 链接:http://www.linemore.com