操作系统(二):5.调度算法
用于早期的批处理系统:
- 先来先服务 FCFS(First Come First Serve)
- 短作业/进程优先 SJF(Shortest Job/Process First)
- 最短剩余时间优先算法 SRTN(Shortest Remaining Time Next)
- 高响应比优先 HRRN(Highest Response Ratio Next)
用于交互式系统:
- 时间片轮转 RR(Round-Robin)
- 优先级调度
- 多级反馈队列
一、用于早期的批处理系统
1.FCFS
- 饥饿问题:某进程/作业长期得不到服务。
例子:
2.SJF/SPF
【SJF/SPF的例子】
【SRTN的例子】
3.HRRN
【HRRN的例子】
二、用于交互式系统
1.RR
【RR的例子】
注意:A进程刚下CPU和B进程此时到达,在就绪队列中到底谁先谁后?
要看题干有没有特殊的说法。默认是新到达的先插入队尾,下CPU的然后插入队尾。
【RR的时间片太大或太小的问题】
增大进程的响应时间的意思:因为新进程的响应时间 = 就绪队列中进程的个数 × 时间片。
一般来说,时间片要让切换进程的开销占比不超过1%。
2.优先级调度
【优先级调度(非抢占式)的例子】
【优先级调度(抢占式)的例子】
感觉有点问题,应该是5时刻,p4先来吧。(前面RR不是说,先插入新进程吗)╮(╯_╰)╭
【补充:常见优先级设置】
3.多级反馈队列
PS:这个其实和多级队列不一样,那个是题目自己规定每级的调度算法很随意,这个是有着特定的规则。
【三级反馈队列的例子:】