操作系统进程调度的一些调度算法

1 先来先服务(FCFS)调度算法

算法:在作业调度中,该算法就是从后备作业队列中选择最先进入该队列作业进行调度;在进程调度中,该算法就是从就绪队列中选择最先进入该队列进程分配CPU。

性能分析:有利于长作业,不利于短作业。若短作业的到底时间较晚,则需要等待的时间过长,短作业的周转时间过长,不利于短作业。该算法有利于CPU繁忙型作业,不利于I/O繁忙型作业。

例子:假设有三个进程p1,p2,p3

FCFS算法示例
进程名称 到达时间 运行时间 开始运行时间 等待时间 周转时间
p1 0 10 0 0 10
p2 2 2 10 8 10
p3 4 2 12 8 10

在此示例当中,对于p2,p3两个短进程来说,周转时间远大于自身需要的运行时间,可以反应出此算法不利于短作业。

2 短作业(进程)优先(SFJ)调度算法

算法:在作业调度中,从后备作业队列选出预估运行时间最短的作业,将其调入内存;在进程调度中,从就绪队列选择预估时间最短的进程为其分配CPU。

优点:有利于短作业,与FCFS相比,可以有效缩短作业和进程的平均等待时间,提高系统吞吐量。

缺陷:不利于长作业,如果短作业过多,长作业可能一直无法得到调度;不能保证紧迫作业和进程的及时处理(该算法不考虑优先级);预估时间由用户估计,因此不一定能真正做到短作业(进程)优先。

3 优先权(PS)调度算法

算法:每一个进程都有一个与之关联的优先权。在进程调度中,以优先权的大小排序分配CPU。

优点:不会像上面两种算法偏袒于某一个,根据进程的优先级(用户设置)来进行调度。有利于紧迫型进程。

算法类型:(1)非抢占式:若有一个进程得到处理机,它将会一直运行下去,直到完成或由于发送某事件主动放弃处理机。即便有更高优先权进程到达也不会影响正在运行的进程。主要用于批处理系统。

(2)抢占式:如果新到达的进程优先权大于当前正在运行的进程,正在运行的进程的处理机会被剥夺分配给新到达的优先权更高的进程。

优先权类型:(1)静态优先权:在创建时确定并不发生改变。(2)动态优先权:随进程的推进或随其等待时间延长而改变。可以使系统获得更好的调度性能。

时间片调度算法与多级队列调度算法下期进行补充...

你可能感兴趣的:(linux,笔记)