单道批处理系统作业调度算法主要有以下几种:
1. 先来先服务(FCFS,First-Come, First-Served)算法:这种算法是最简单的一种调度算法,它按照作业到达的顺序进行调度。如果一个作业在队列中等待的时间超过了它的执行时间,那么这个作业就会被丢弃。
2. 短作业优先(SJF,Shortest Job First)算法:这种算法认为在一个作业队列中,最短的作业应该优先执行。当有多个作业同时到达时,选择执行时间最短的那个。这种算法可以有效地减少作业的等待时间,但是可能会导致一些长时间运行的作业被丢弃。
3. 优先级调度(Priority Scheduling)算法:这种算法根据作业的重要性和紧急程度为其分配不同的优先级,优先级高的作业会优先执行。这种算法可以保证高优先级的作业得到及时的处理,但是可能会导致低优先级的作业被丢弃。
4. 多级反馈队列(Multilevel Feedback Queue,MFQ)算法:这种算法将作业分为不同等级,每个等级的作业都有对应的优先级。当有新的作业到达时,首先检查该作业是否属于当前等级,如果是,则按照优先级进行调度;如果不是,则将其放入相应的反馈队列中,等待下一个周期的到来。这种算法可以有效地平衡不同等级作业之间的调度顺序,但是计算复杂度较高。
5. 轮转法(Round Robin,RR)算法:这种算法将作业按照一定的顺序轮流执行,每次只执行一个作业。当所有作业都执行完毕后,再从第一个作业开始执行。这种算法可以保证每个作业都有机会执行,但是可能会导致某些作业长时间得不到处理。
6. 优先级调度与轮转法结合的算法:这种算法将优先级调度和轮转法结合起来,优先执行高优先级的作业,然后在剩余的作业中按照轮转法进行调度。这种算法可以兼顾不同优先级作业的需求,但是计算复杂度较高。
7. 优先级调度与多级反馈队列结合的算法:这种算法将优先级调度和多级反馈队列结合起来,优先执行高优先级的作业,然后在剩余的作业中按照多级反馈队列进行调度。这种算法可以更好地平衡不同优先级作业之间的调度顺序,但是计算复杂度较高。
8. 优先级调度与轮转法结合的改进算法:这种算法在轮转法的基础上增加了优先级调度,优先执行高优先级的作业,然后在剩余的作业中按照轮转法进行调度。这种算法可以更好地满足不同优先级作业的需求,但是计算复杂度较高。