您的位置:首页 > 运维架构 > Linux

Linux进程(一)常见进程调度算法

2018-03-17 13:48 316 查看

一、先来先服务(FCFS)调度算法原理:

系统将按照作业到达的先后次序进行作业调度工作。或者说它是优先考虑在系统中等待时间最长的作业,不管作业执行所需时间长短

二、短作业优先(SJF)调度算法原理:

SJF算法是以作业执行所需时间长短来计算优先级的,作业执行时间越短,那么他的优先级就会越高

三、优先级调度算法原理:

3.1非抢占式优先级调度算法:一旦把处理及分配给就绪队列中优先级最高的进程后,该进程就会一直执行下去直至完成。或者中途发生某件事二放弃处理机制是,系统方可将处理机制重新分配给另一个优先级最高的进程。
3.2抢占式优先级调度算法:把处理及分配给优先级最高的进程,使之执行。但在其执行期间,只要出现另一个优先级更高的进程,调度程序就将处理机制分配给新的优先级更高的进程。因此采用这种调度算法时,每当系统中出现一个新的就绪的进程i  时就会将其优先级pi与正在执行的进程pj进行比较,pi<=pj时原进程继续。反之则进程切换。

四、响应比优先调度算法:

在系统调度算法中,算作业优先算法是一种比较好的算法,其主要不足之处是长作业运行得不到保证。这样存在不公平性。在这种情况下我们就会有响应比优先调度算法。我们为每一个作业都引入动态优先权,并且使作业的优先级随着等待的时间增加,所以在一定时间后就会使这个长作业被处理。
响应比就可以这样表示:(等待时间+要求服务时间)/要求服务时间,随着等待时间的增加,响应比就会增大,然后他的优先级就会增加。

五、轮转调度算法原理:

在RR调度算法中,系统根据FCFS策略,将所有的就绪进程排成一个就绪队列,并设置一定的时间间隔,激活系统中进程调度程序,完成一次调度,将CPU分配给首进程。令其执行。当该进程的时间片耗尽或运行完毕,系统将CPU分配给新的队首进程,所以可以保证就绪队列中所有进程在一个确定的时间段里都能够获得一次CPU执行。

六、多级反馈队列算法:

前面介绍的进程调度算法都有一些不足,而且必须要进程执行的长短即需要知道进程执行的时间,但是多级反馈队列算法是目前公认的一种较好的进程调度算法。
1.设置多个就绪队列,并未各个队列赋予不同的优先级。第一个队列的优先级最高,第二个队列次之,其余各队列的优先权逐个降低。该算法赋予各个队列中进程执行时间片的大小也各不相同,在优先权愈高的队列中,为每个进程所规定的执行时间片就愈小。例如,第二个队列的时间片要比第一个队列的时间片长一倍,……,第i+1个队列的时间片要比第i个队列的时间片长一倍。
2.当一个新进程进入内存后,首先将它放入第一队列的末尾,按FCFS原则排队等待调度。当轮到该进程执行时,如它能在该时间片内完成,便可准备撤离系统;如果它在一个时间片结束时尚未完成,调度程序便将该进程转入第二队列的末尾,再同样地按FCFS原则等待调度执行;如果它在第二队列中运行一个时间片后仍未完成,再依次将它放入第三队列,……,如此下去,当一个长作业(进程)从第一队列依次降到第n队列后,在第n 队列便采取按时间片轮转的方式运行。
3. 仅当第一队列空闲时,调度程序才调度第二队列中的进程运行;仅当第1~(i-1)队列均空时,才会调度第i队列中的进程运行。如果处理机正在第i队列中为某进程服务时,又有新进程进入优先权较高的队列(第1~(i-1)中的任何一个队列),则此时新进程将抢占正在运行进程的处理机,即由调度程序把正在运行的进程放回到第i队列的末尾,把处理机分配给新到的高优先权进程。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: