1. 先来先服务调度算法(作业调度、进程调度)
先来先服务调度算法(FCFS)是一种最简单的调度算法,可以用于作业调度与进程调度。
重要的基本思想说三遍。
其基本思想是按照进程进入就绪队列的先后次序来分配处理器。
其基本思想是按照进程进入就绪队列的先后次序来分配处理器。
其基本思想是按照进程进入就绪队列的先后次序来分配处理器。
重要的基本思想说三遍。
先来先服务调度算法采用非抢占的调度方式, 即一旦一个进程(或作业)占有处理器, 它就一直运行下去, 直到该进程(或作业)完成其工作或因等待某一事件而不能继续执行时才释放处理器。
从表面上看, 先来先服务调度算法对于所有进程(或作业) 是公平的, 即按照它们到来的先后次序进行服务。但假设有等数量的长进程(十t) 和短进程(t),因为数量相等, 所以谁先到的概率也相等。当长进程先来时,短进程的等待时间为十t, 而当短进程先来时,长进程的等待时间仅为t。所以说先来先服务调度算法有利于长进程(作业),不利于短进程(作业)。
现在,先来先服务调度算法已经很少作为主要的调度策略, 尤其是不能作为分时系统和实时系统的主要调度策略, 但它常被结合在其他调度策略中使用。
现在,先来先服务调度算法已经很少作为主要的调度策略, 尤其是不能作为分时系统和实时系统的主要调度策略, 但它常被结合在其他调度策略中使用。
现在,先来先服务调度算法已经很少作为主要的调度策略, 尤其是不能作为分时系统和实时系统的主要调度策略, 但它常被结合在其他调度策略中使用。
例如, 在使用优先级作为调度策略的系统中,往往对多个具有相同优先级的进程或作业按照先来先服务原则进行处理。
2. 短作业优先调度算法(作业调度、进程调度)
2. 短作业优先调度算法(作业调度、 进程调度)
短作业优先(SJF)调度算法用千进程调度时被称为短进程优先调度算法,该算法既可以用千作业调度, 也可以用于进程调度。
短作业(或进程)优先调度算法的基本思想就是把处理器分配给最快完成的作业(或进程)。
在作业调度中,短作业优先调度算法每次从后备作业队列中选择估计运行时间最短的一 个或几个作业调入内存, 分配资源, 创建进程并放入就绪队列。
在进程调度中,短进程优先调度算法每次从就绪队列中选择估计运行时间最短的进程, 将处理器分配给它,使该进程运行并直到完成或因某种原因阻塞才释放处理器。
可以证明,在所有作业同时到达时, SJF调度算法是最佳算法,平均周转时间最短(如果短进程先执行,长进程等待时间较长进程先执行的清况要短很多, 因此平均等待时间最短, 而进程运行时间是确定不变的)。但该算法很显然对长作业不利,当有很多短作业不断进入就绪队列时,长作业会因长期得不到调度而产生 ”饥饿 “ 现象("饥饿“ 现象是指在一段时间内, 进程得不到调度执行或得不到所需资源)。