先来先服务算法
先来先服务算法是最简单的调度算法(FCFS),也叫先进先出算法(FIFO)
优点:易于理解并且易于程序中运用
缺点:一批任务的平均周转时间取决于各个任务到达的顺序,如果短任务位于长任务之后,那么将增大平均周转时间。
短作业优先算法
短作业优先算法,又分成可抢占式(最短剩余时间优先,shortest remaining time next, SRTF)和非抢占式(最短作业优先 shortest job first,SJF)算法。它们都使短作业获得了良好的服务。
轮转调度
每个进程被分配一个时间片,即允许进程在该时间段中运行。如果在时间片结束时该进程还在运行,则剥夺CPU分配给另一个进程。如果该进程在时间片结束前阻塞或结束,则CPU立即进行切换。此调度程序所要做的就是维护一张可以运行进程列表,如下图,当一个进程用完它的时间片后,就被移到队列的末尾
image.png
优点:公平性,各个就绪任务能得到相同的时间片;活动性,每个就绪任务能一直保持活动。
缺点:时间片的大小q要适当选取,如果选择不当,将会影响到系统的性能和效率。如果q太大,每个任务都在一个时间片内完成,这就退化为先来先服务算法了。如果q太小,每个任务需要更多的时间片才能运行结束,这就使任务之间的切换次数增加,从而增大了系统的管理开销,降低了CPU的使用效率。一般来说,q值选取在20ms~50ms比较合适。
优先级调度
基本思想:为每个进程设置一个优先级,在调度的时候,选取优先级最大的任务去执行。
优先级可以是静态赋予:创建任务的时候,就指定优先级大小,并且保持不变,直到任务结束。也可以是动态赋予:优先级在执行任务中动态改变。
为了防止高优先级进程无休止地运行下去,调度程序可以在每个时钟中断降低当前进程的优先级。
在平时中,我们可以把不同的任务划分为不同的优先级,然后在相同优先级的任务中使用时间片轮转法,如下图
image.png
网友评论