进程调度算法
先来先服务FCFS:按照作业/进程到达的先后顺序进行服务,事实上就是等待时间越久的越优先得到服务,非抢占式算法,不会导致饥饿,缺点:排在长作业(进程)后面的短作业需要等待很长时间,带权周转时间很大,对短作业来说用户体验不好,即FCFS算法对长作业有利,对短作业不利
最短作业优先SJF:最短的作业/进程优先得到服务(所谓最短是指要求服务时间最短),每次调度时选择当前已到达的且运行时间最短的作业/进程,缺点:不公平,对短作业有利,对长作业不利。作业/进程的运行时间是由用户提供的,并不一定真实,不一定能做到真正的短作业优先,可能产生饥饿现象,如果源源不断的有短作业/进程到来,可能使长作业/进程长时间得不到服务,产生饥饿现象,如果一直得不到服务,则称为饿死【最短剩余时间优先:最短作业优先的抢占式版本】
最高响应比优先HRRN:(等待时间+要求服务时间)/ 要求服务时间,非抢占式的算法
时间片轮转RR:将所有就绪进程按 FCFS 的原则排成一个队列,每次调度时,把 CPU 时间分配给队首进程,该进程可以执行一个时间片。当时间片用完时,由计时器发出时钟中断,调度程序便停止该进程的执行,并将它送往就绪队列的末尾,同时继续把 CPU 时间分配给队首的进程。不会导致饥饿,缺点:由于高频率的进程切换,因此有一定的开销;不区分任务的紧急程度
优先级调度:为每个进程分配一个优先级,按优先级进行调度。为了防止低优先级的进程永远等不到调度,可以随着时间的推移增加等待进程的优先级。缺点:若源源不断的有高优先级进程到来,则可能导致饥饿