批处理系统中采用的调度算法
重要指标(吞吐量,周转时间,CPU利用率,公平平衡)
非抢占式的先来先服务算法(FCFS):按照进程就绪的先后顺序使用CPU
特点:公平,实现简单,但是长进程后面的短进程需要等待很长时间,不利于用户体验。
非抢占式的最短作业优先(SJF):具有最短完成时间的进程优先执行
最短剩余时间优先(SRTN):SJF抢占式版本,即当一个新就绪的进程比当前运行进程具有更短完成时间时,系统抢占当前进程,选择新就绪的进程执行。
短作业优先调度算法特点:改善短作业的周转时间,但如果源源不断有短任务到来,可能使长的任务长时间得不到运行,产生饥饿现象。
最高相应比优先算法(HRRN):是一个综合算法,调度时,首先计算每个进程的响应比R,之后总是选择R最高的进程执行。
响应比R=(等待时间+处理时间)/处理时间
交互系统中采用的调度算法
重要指标(响应时间,公平平衡)
时间片轮转调度算法: 每个进程被分配一个时间片,允许该进程在该时间段运行,如果在时间片结束时该进程还在运行,则剥夺CPU并分配给另一个进程,如果该进程在时间片结束前阻塞或结束,则CPU立即进行切换。
当时间片选择太长,其降级为先来先服务算法,引起对短的交互请求响应时间长
当时间片选择太短,会导致频繁的进程切换,浪费CPU时间。
通常选择为20ms~50ms.
对进程表中不同进程的大小差异较大的有利,而对进程都是相同大小的不利。
虚拟轮转法:主要基于时间片轮转法进行改进,解决在CPU调度中对于I/O密集型进程的不友好。其设置了一个辅助队列,对于I/O型进程执行完一个时间片之后,则进入辅助队列,CPU调度时总是先检查辅助队列是否为空,如果不为空总是优先调度辅助队列里的进程,直到为空,才调度就绪队列的进程。
最高优先级调度算法:选择优先级最高的进程优先执行。
优先级可以静态不变,也可以动态调整
优先数决定优先级
就绪队列可以按照优先级组织
实现简单,但不公平,可能导致优先级低的进程产生饥饿现象。
可能产生优先级反转问题(基于优先级的抢占式算法),即一个低优先级进程持有一个高优先级进程所需要的资源,使得高优先级进程等待低优先级进程运行。
多级反馈队列调度算法:
设置多个就绪队列,并为各个队列赋予不同的优先级。第一个队列的优先级最高,依次递减优先级。
对于各个队列进程执行时间片的大小也不同,优先级越高的队列,分配到的时间片越少。
当第一级队列为空时,再第二级队列进行调度,依次类推,各级队列按照时间片轮转方式进行调度。
当一个新进程创建后,首先把它放入第一队列的末尾。按照FCFS原则排队等待调度。当轮到该进程执行时,如它在该时间片完成,便可准备撤离系统,如果它在一个时间片结束时尚未完成,则调度程序便将该进程转入第二队列的末尾,再同样地按照FCFS原则等待调度执行。依次类推。