参考:https://mp.weixin.qq.com/s/JWj6_BF9Xc84kQcyx6Nf_g
进程调度算法也就是cpu调度算法。调度算法影响的是等待时间(进程在就绪队列中等待调度的时间总和),而不能影响进程真在使用CPU的时间和I/O时间。
当CPU空闲时,操作系统就选择内存中某个就绪状态的进程,并给其分配CPU。
常见的调度算法:
2.最短作业优先调度算法
3.高响应比优先调度算法
4.时间片轮转调度算法
5.最高优先级调度算法
6.多级反馈队列调度算法
:每次从就绪队列选择最先进入队列的进程,然后一直运行,直到进程退出或者被阻塞,才会继续从队列中选择第一个进程接着运行。
缺点:FCFS对长作业有利,但是当一个长作业先运行了,那么后面的短作业等待的时间就会很长,不利于短作业。
:它会优先选择运行时间最短的进程来运行。
缺点:这显然对长作业不利,很容易造成一种极端现象。比如某个就绪队列中存在很多短作业,那么长作业就会不断的往后移得不到时间片。
:高响应比调度算法权衡了短作业和长作业。
响应比 = (等待时间 + 要求服务时间)/ 要求服务时间
每次进行进程调度时,先计算响应比优先级,然后把响应比优先级最高的进程投入运行。
:每个进程被分配一个时间段,即允许该进程在该时间段中运行。
缺点:时间片长度难以选择。太短会导致过多的进程上下文切换,降低了CPU效率。如果设得太长又可能对短作业进程的响应时间变长。
:时间片轮转调度算法中认为所有的进程同等重要。但是在实际中,我们往往希望调度是有优先级的。那么希望调度程序能从就绪队列中选择最高优先级的进程进行运行,这称为最高优先级调度算法。
缺点:可能会导致低优先级的进程永远不会运行
:是时间片轮转算法和最高优先级算法的综合和发展。
多级:表示有多个队列,每个队列的优先级从高到低,同时优先级越高时间片越短。
反馈:表示如果有新的进程加入优先级高的队列时,立刻停止当前正在运行的进程,转而去运行优先级高的队列。
缺点:会有饥饿问题。如果系统有“太多”交互型工作,就会不断占用CPU,导致长工作永远无法得到CPU。并且进程在时间片用完之前,调用一个I/O操作(比如访问一个无关的文件),从而主动释放CPU。如此便可以保持在高优先级,占用更多的CPU时间。做得好时(比如,每运行99%的时间片时间就主动放弃一次CPU),工作可以几乎独占CPU。