反馈算法
A. 作业调度算法的多级反馈队列列算法
多级反馈队列算法(Round Robin with Multiple Feedback)是轮转算法和优先级算法的综合和发展。 设置多个就绪队列,分别赋予不同的优先级,如逐级降低,队列1的优先级最高。每个队列执行时间片的长度也不同,规定优先级越低则时间片越长,如逐级加倍。
新进程进入内存后,先投入队列1的末尾,按FCFS算法调度;若按队列1一个时间片未能执行完,则降低投入到队列2的末尾,同样按FCFS算法调度;如此下去,降低到最后的队列,则按“时间片轮转”算法调度直到完成。
仅当较高优先级的队列为空,才调度较低优先级的队列中的进程执行。如果进程执行时有新进程进入较高优先级的队列,则抢先执行新进程,并把被抢先的进程投入原队列的末尾。 为提高系统吞吐量和缩短平均周转时间而照顾短进程。
为获得较好的I/O设备利用率和缩短响应时间而照顾I/O型进程。
不必估计进程的执行时间,动态调节 I/O型进程:让其进入最高优先级队列,以及时响应I/O交互。通常执行一个小时间片,要求可处理完一次I/O请求的数据,然后转入到阻塞队列。
计算型进程:每次都执行完时间片,进入更低级队列。最终采用最大时间片来执行,减少调度次数。
I/O次数不多,而主要是CPU处理的进程。在I/O完成后,放回优先I/O请求时离开的队列,以免每次都回到最高优先级队列后再逐次下降。
为适应一个进程在不同时间段的运行特点,I/O完成时,提高优先级;时间片用完时,降低优先级。
B. 如何理解操作系统中的多级反馈队列(Multi-Level Feedback Queen)调度算法
操作系统中的多级反馈队列调度算法是一种通过多级队列和动态优先级调整,结合过去运行情况的反馈,来达到平衡各种进程需求的调度策略。以下是对该算法的具体理解:
1. 多级队列: MLFQ算法将进程分为多个优先级队列,每个队列代表不同的优先级。 高优先级的队列中的进程会优先得到调度执行。
2. 动态优先级调整: 新进入的进程会被放置在最高优先级的队列中。 进程在执行过程中,根据其行为动态调整其优先级。例如,如果一个进程在较高优先级队列中占用CPU时间过长,它可能会被移动到较低优先级的队列中。 通过这种动态调整,MLFQ算法能够确保资源不会被某个进程长时间独占,从而提高系统的整体响应速度和吞吐量。
3. 反馈机制: MLFQ算法利用反馈机制来调整进程的优先级。 如果一个进程在较低优先级队列中等待了很长时间而没有得到执行,它可能会被提升到较高的优先级队列中,以防止“饿死”现象的发生。 这种反馈机制使得MLFQ算法能够灵活地适应各种进程需求,提高系统的公平性和效率。
4. 限制和依赖: MLFQ算法的性能依赖于进程类型的比例。如果紧急和不紧急的进程比例失衡,可能会导致某些类型的进程得不到足够的执行时间。 为了避免这种情况,MLFQ算法通常会引入一些规则来调整优先级,如设置时间片上限和定期重置优先级等。
5. 持续优化: 尽管MLFQ算法在操作系统调度中表现出色,但它仍然需要持续优化和改进。 研究人员正在探索更佳的标签分配方法和参数设定,以提高MLFQ算法的性能和适应性。
综上所述,MLFQ调度算法通过多级队列、动态优先级调整和反馈机制等策略,实现了对进程需求的平衡和调度优化。然而,它也存在一些限制和依赖,需要持续优化和改进以适应不同的应用场景。