CPU调度的几种算法

1. 先进先出算法FIFO((First In First Out)
按照进程就绪的先后顺序来使用CPU,处理器被分配给最先进入就绪队列的进程,进程一单分到CPU的使用权,就一直执行到晋城结束或阻塞时才结束。这种进程按照时间顺序来使用,非抢占内存的方式,公平公正,实现起来也相对简单;但是算法的实际效果不佳,比如在长进程后的短进程,必须等到长进程执行完毕后才能执行,不利于有效的提升用户体验。再形象化一点,有3个进程p1,p2,p3,执行期分别为30,20,10,当他们分别进入就绪队列时,对于p1,p2,p3的周转时间分别为30,50,60,平均的周转时间是46.7,可见效率确实不高。

2.最短作业优先(SJF)

调度算法将每个进程与其下次 CPU 执行的长度关联起来。当 CPU 变为空闲时,它会被赋给具有最短 CPU 执行的进程。如果两个进程具有同样长度的 CPU 执行,那么可以由 FCFS 来处理。

3. 轮询法(Round Robin)
分配给调度上CPU的进程,确定了允许该进程运行的时间长度。每个进程会被分配一个时间片,在这个时间片的时间段内,允许进程运行;如果在时间片结束时该进程还在运行,就会剥夺该进程得而CPU并分配给另一个进程;如果该进程在时间片结束前终止或者阻塞,则CPU会立即完成任务并进行切换。这种算法有利于交互式计算,响应的速度快,但是由于进程的切换,时间片轮转法要花费较多的内存开销,而且对于彼此进程间相差较大的有利,而对于进程大小相似或相同的则不利。

 

 

 

posted on 2022-10-30 11:07  20221311方有超  阅读(135)  评论(0编辑  收藏  举报