**先来先服务**(FCFS)
- 算法思想:
- 算法规则:等待时间越久的优先服务。
- 作业/进程调度:用于作业调度时,考虑的是哪个作业先到达后备队列;用于进程调度,考虑的是哪个- 进程先进入就绪队列。
- 是否可抢占? 非抢占式
- 优点:公平,算法实现简单
- 缺点:对于排在长作业后的短作业,用户体验不好。平均带权周转时间大,对于长作业有利,对于短作业不利
- 是否会导致饥饿? 不会
**短作业优先**
- 算法思想:追求更少的平均等待时间
- 算法规则:短进程/作业优先得到服务
- 作业/进程调度:
- 是否可抢占?
非抢占式(SJF):每次选择当前已到达的并且运行时间最短的作业/进程
抢占式(SRNT最短剩余时间优先算法):
每当有进程加入就绪队列改变时就需要调度,如果新到达的进程剩余时间比当前运行的进程剩余时间更短,则由新进程抢占处理机,当前运行进程重新回到就绪队列。平均等待时间和平均周转时间优于非抢占式。
- 优点:最短的平均等待时间,平均周转时间
- 缺点:对于短作业有利,对于长作业不利
- 是否会导致饥饿?会,如果源源不断地有短作业进来,可能导致长作业长时间得不到服务,产生饥饿现象,如果一直得不到服务,会导致作业饿死。
**优先级调度算法**
- 算法思想:根据任务的紧急程度来决定处理顺序
- 算法规则:根据优先级是否可以发生改变分为静态优先级和动态优先级。
动态优先级:如果某个进程在就绪队列中等待了很长时间,可以适当提高优先级。
通常情况下,系统进程优先级高于用户进程,前台进程优先级高于后台进程。操作系统更偏好I/O型进程(或者称为I/O繁忙型进程)
- 作业/进程调度:均适用。甚至还会用于I/O调度
- 是否可抢占? 非抢占式、抢占式均有。
- 优点:灵活调整偏好程度。适用于实时操作系统
- 缺点:若源源不断的高优先级进程到来,低优先级进程会导致饥饿。
- 是否会导致饥饿?会
**多级反馈队列调度算法**
- 算法思想:对其他算法的权衡
- 算法规则:
设置多级就绪队列,各个队列的优先级从高到低,时间片从小到大。
新进程到达时先进入第1级队列,按照FCFS原则排队等待被分配时间片。若时间片用完进程还未结束则进程进入下一级队列队尾,如果此时已经在最下级的队列,则重新返回到最下一级队列的队尾。
只有K级队列为空时,才会给K+1级分配
- 算法思想:
- 算法规则:等待时间越久的优先服务。
- 作业/进程调度:用于作业调度时,考虑的是哪个作业先到达后备队列;用于进程调度,考虑的是哪个- 进程先进入就绪队列。
- 是否可抢占? 非抢占式
- 优点:公平,算法实现简单
- 缺点:对于排在长作业后的短作业,用户体验不好。平均带权周转时间大,对于长作业有利,对于短作业不利
- 是否会导致饥饿? 不会
**短作业优先**
- 算法思想:追求更少的平均等待时间
- 算法规则:短进程/作业优先得到服务
- 作业/进程调度:
- 是否可抢占?
非抢占式(SJF):每次选择当前已到达的并且运行时间最短的作业/进程
抢占式(SRNT最短剩余时间优先算法):
每当有进程加入就绪队列改变时就需要调度,如果新到达的进程剩余时间比当前运行的进程剩余时间更短,则由新进程抢占处理机,当前运行进程重新回到就绪队列。平均等待时间和平均周转时间优于非抢占式。
- 优点:最短的平均等待时间,平均周转时间
- 缺点:对于短作业有利,对于长作业不利
- 是否会导致饥饿?会,如果源源不断地有短作业进来,可能导致长作业长时间得不到服务,产生饥饿现象,如果一直得不到服务,会导致作业饿死。
**优先级调度算法**
- 算法思想:根据任务的紧急程度来决定处理顺序
- 算法规则:根据优先级是否可以发生改变分为静态优先级和动态优先级。
动态优先级:如果某个进程在就绪队列中等待了很长时间,可以适当提高优先级。
通常情况下,系统进程优先级高于用户进程,前台进程优先级高于后台进程。操作系统更偏好I/O型进程(或者称为I/O繁忙型进程)
- 作业/进程调度:均适用。甚至还会用于I/O调度
- 是否可抢占? 非抢占式、抢占式均有。
- 优点:灵活调整偏好程度。适用于实时操作系统
- 缺点:若源源不断的高优先级进程到来,低优先级进程会导致饥饿。
- 是否会导致饥饿?会
**多级反馈队列调度算法**
- 算法思想:对其他算法的权衡
- 算法规则:
设置多级就绪队列,各个队列的优先级从高到低,时间片从小到大。
新进程到达时先进入第1级队列,按照FCFS原则排队等待被分配时间片。若时间片用完进程还未结束则进程进入下一级队列队尾,如果此时已经在最下级的队列,则重新返回到最下一级队列的队尾。
只有K级队列为空时,才会给K+1级分配
2022-10-01
在牛客打卡263天,今天学习:刷题 10 道
全部评论
相关推荐
点赞 评论 收藏
分享
点赞 评论 收藏
分享
