安排流程/工作以按时完成工作。
以下是关于流程的不同时间。
到达时间: 进程到达就绪队列的时间。 完成时间: 进程完成执行的时间。 突发时间: 进程执行CPU所需的时间。 周转时间: 完成时间和到达时间之间的时差。 周转时间=完成时间-到达时间
等待时间(W.T): 周转时间和突发时间之间的时差。 等待时间=周转时间–突发时间
为什么我们需要时间安排? 典型的过程包括I/O时间和CPU时间。在MS-DOS这样的单编程系统中,等待I/O的时间是浪费的,CPU在此期间是空闲的。在多编程系统中,一个进程可以使用CPU,而另一个进程正在等待I/O。这只有通过进程调度才能实现。
进程调度算法的目标
最大CPU利用率[使CPU尽可能繁忙] 公平分配CPU。 最大吞吐量[每时间单位内完成执行的进程数] 最小周转时间[流程完成执行所需的时间] 最小等待时间[进程在就绪队列中等待的时间] 最小响应时间[进程产生第一个响应的时间]
不同的调度算法
先到先得(FCFS) : 最简单的调度算法,根据进程的到达时间进行调度。先到先服务调度算法声明首先请求CPU的进程首先被分配CPU。它是通过使用FIFO队列来实现的。当一个进程进入就绪队列时,它的PCB被链接到队列的尾部。当CPU空闲时,它被分配给队列头部的进程。然后从队列中删除正在运行的进程。FCFS是一种非抢占式调度算法。
注: 先到先得 护送效应 .
最短工作优先(SJF) : 首先调度突发时间最短的进程。如果两道工序的爆破时间相同,则使用FCFS打破平局。它是一种非抢占式调度算法。
最长工作优先(LJF): 它类似于SJF调度算法。但是,在这种调度算法中,我们优先考虑具有最长突发时间的进程。这在本质上是非先发制人的,即当任何进程开始执行时,在完成执行之前不能被中断。
最短剩余时间优先(SRTF) : 这是SJF算法的抢占模式,根据最短剩余时间安排作业。
最长剩余时间优先(LRTF) : 这是LJF算法的抢占模式,其中我们优先考虑剩余突发时间最大的进程。
循环调度 : 每个进程以循环方式分配一个固定时间(时间量/时间片)。它是专门为分时系统设计的。就绪队列被视为循环队列。CPU调度器绕过就绪队列,将CPU分配给每个进程,时间间隔最多为1倍。为了实现循环调度,我们将就绪队列保持为进程的FIFO队列。新进程被添加到就绪队列的尾部。CPU调度器从就绪队列中选取第一个进程,设置一个计时器,使其在1次量程后中断,并分派该进程。然后会发生两件事中的一件。进程的CPU突发时间可能小于1倍量子。在这种情况下,进程本身将自动释放CPU。然后,调度程序将进入就绪队列中的下一个进程。否则,如果当前正在运行的进程的CPU突发时间超过1倍量程,计时器将关闭并导致操作系统中断。将执行一个上下文切换,并将进程置于就绪队列的尾部。然后,CPU调度程序将选择就绪队列中的下一个进程。
基于优先级的调度(非抢占) : 在这种调度中,进程根据其优先级进行调度,即优先级最高的进程优先调度。如果两个流程的优先级匹配,则根据到达时间进行安排。在这里,缺乏过程是可能的。
下一个最高响应比(HRRN) : 在此调度中,调度响应率最高的进程。这种算法避免了饥饿。
Response Ratio = (Waiting Time + Burst time) / Burst time
多级队列调度 : 根据进程的优先级,进程被放置在不同的队列中。通常,高优先级的进程被放置在顶级队列中。只有在顶级队列中的进程完成后,才会调度低级队列中的进程。它可能会挨饿。
多级反馈队列调度 : 它允许流程在队列之间移动。这个想法是根据进程的CPU突发特征来分离进程。如果一个进程占用了太多的CPU时间,它会被转移到一个优先级较低的队列。
有关调度算法的一些有用信息:
FCFS会导致等待时间过长,尤其是当第一个作业占用太多CPU时间时。
练习:
考虑一个需要40个单位时间的突发时间的系统。使用多级反馈队列调度,时间量为顶层队列的2个单位,在每个级别增加5个单位,那么进程将在哪个队列中终止执行?
Process Arrival time Burst Time P0 0 ms 9 ms P1 1 ms 4 ms P2 2 ms 9 ms
采用抢占式最短作业优先调度算法。调度仅在流程到达或完成时执行。这三个过程的平均等待时间是多少? (A) 5.0毫秒 (B) 4.33毫秒 (C) 6.33 (D) 7.33 解决方案: 答:–(A) 进程P0在0毫秒时分配给处理器,因为就绪队列中没有其他进程。当P1到达1ms时,P0在1ms后被抢占,P1的突发时间小于P0的剩余时间。P1运行4ms。P2到达2毫秒,但P1继续,因为P2的突发时间比P1长。P1完成后,由于P0的剩余时间小于P2的突发时间,因此再次调度P0。 P0等待4毫秒,P1等待0毫秒,P2等待11毫秒。因此平均等待时间为(0+4+11)/3=5。
Process Arrival Time Burst Time P1 0 5 P2 1 3 P3 2 3 P4 4 1
使用抢占式最短剩余处理时间优先(SRPT)算法的这些进程的平均周转时间是多少? (A) 5.50 (B) 5.75 (C) 6点 (D) 6.25 答复(A) 解决方案: 以下是执行甘特图
P1 | P2 | P4 | P3 | P1 |
1. | 4. | 5. | 8. | 12 |
周转时间=完成时间-到达时间 平均周转时间=(12+3+6+1)/4=5.50
Process Execution time Arrival time P1 20 0 P2 25 15 P3 10 30 P4 15 45
流程P2的总等待时间是多少? (A) 五, (B) 15 (C) 40 (D) 55 答复(B) 在时间0时,P1是唯一的进程,P1运行15个时间单位。 在时间15时,P2到达,但P1的剩余时间最短。所以P1再持续5个时间单位。 在时间20时,P2是唯一的进程。所以它运行10个时间单位 在时间30时,P3是剩余时间最短的过程。所以它运行10个时间单位 在时间40时,P2运行,因为它是唯一的进程。P2运行5个时间单位。 在时间45时,P3到达,但P2的剩余时间最短。所以P2再持续10个时间单位。 P2在时间55完成其执行
Total waiting time for P2 = Completion time - (Arrival time + Execution time) = 55 - (15 + 25) = 15
请参考 CPU调度测验 更多问题。
参考资料: http://www.cs.uic.edu/~jbell/CourseNotes/OperatingSystems/5_CPU_调度。html
http://codex.cs.yale.edu/avi/os-book/OS8/os8c/slide-dir/PDF-dir/ch5.pdf
如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请写评论