周转时间=完成时间-到达时间
带权周转时间=周转时间/运行时间
等待时间=周转时间-运行时间
响应比=(等待时间+要求服务时间)/ 要求服务时间
先来先服务(FCFS)
按到达时间顺序。
非抢占式算法。
优点:公平、算法实现简单;
缺点:对长作业有利,对短作业不利(在排长作业后的带权周转时间大)。
不会导致饥饿(进程/作业长期得不到服务)。
短作业优先(SJF)/短进程优先(SPF)
选当前已经到达且运行时间最短的作业;
SJF、SPF非抢占式,最短剩余时间优先(SRTN)抢占式。
优点:"最短的"平均等待时间、平均周转时间;
缺点:对短作业有利,对长作业不利。
可能导致饥饿。
高响应比优先(HRRN)
计算作业/进程的响应比,选择响应比最高的作业/进程。
非抢占式
避免了长作业饥饿
时间片轮转(RR)
轮流执行一个时间片
用于进程调度
抢占式(时钟中断)
优点:公平,响应快,适用于分时操作系统;
缺点:不区分任务紧急程度,时间片太大——FCFS,时间片太小——进程切换开销大。
不会导致饥饿。
优先级调度算法
每个进程都有自己的优先级,先运行优先级高的。
抢占式、非抢占式都有。
静态优先级:创建进程时确定,之后一只不变
动态优先级:创建进程时有初始值,之后根据情况动态的调整。
通常:
系统进程优先级>用户进程
前台进程>后台进程
操作系统更偏好I/O型进程
灵活,会发生饥饿。
多级反馈队列调度算法
多级就绪队列,各级队列优先级从高到低,时间片从小到大,逐级分配时间片,新进程先进入第一级队列FCFS,时间片用完还未结束到下一级,最下一级放末尾。
抢占式。
有FCFS、RR、SPF的优点,不必实现估计进程的运行时间(避免用户作假),可灵活地调整对各类进程的偏好程度(CPU密集型、I/O密集型)
多级队列调度算法
系统中按进程类型设置多个队列,进程创建成功后插入某个队列,如: