1.调度器/调度程序
调度程序决定调度算法,时间片大小
②,③由调度程序引起,调度程序决定:
1.调度时机
- 创建新进程
- 进程退出
- 运行进程阻塞
- I/O中断发生(可能唤醒某些阻塞进程)
- 非抢占式调度策略,只有运行进程阻塞或退出才触发调度程序工作
- 抢占式调度策略,每个时钟中断或k个时钟中断会触发调度程序工作
2.调度对象
- 不支持内核级线程的操作系统,调度程序的处理对象是进程
- 支持内核级线程的操作系统,调度程序的处理对象是内核线程
2.闲逛进程
调度程序永远的备胎,没有其他就绪进程时,运行闲逛进程(idle)
1.特性
- 优先级最低
- 可以是0地址指令,占一个完整的指令周期(指令周期末尾例行检查中断)
- 能耗低
3.调度算法的评价指标
1.CPU利用率
CPU利用率:指CPU“忙碌”的时间占总时间的比例。
利用率 = 忙碌时间 总时间 利用率=\frac{忙碌时间}{总时间} 利用率=总时间忙碌时间
2.系统吞吐量
系统吞吐量:单位时间内完成作业的数量。
系统吞吐量 = 总共完成了多少道作业 总共花了多少时间 系统吞吐量=\frac{总共完成了多少道作业}{总共花了多少时间} 系统吞吐量=总共花了多少时间总共完成了多少道作业
3.周转时间
周转时间,是指从作业被提交给系统开始,到作业完成为止的这段时间间隔。
它包括四个部分:
- 作业在外存后备队列上等待作业调度(高级调度)的时间、
- 进程在就绪队列上等待进程调度(低级调度)的时间、
- 进程在CPU上执行的时间、
- 进程等待I/O操作完成的时间。
后三项在一个作业的整个处理过程中,可能发生多次。
1.周转时间
周转时间 = 作业完成时间 − 作业提交时间 周转时间=作业完成时间-作业提交时间 周转时间=作业完成时间−作业提交时间
2.平均周转时间
平均周转时间 = 各作业周转时间之和 作业数 平均周转时间=\frac{各作业周转时间之和}{作业数} 平均周转时间=作业数各作业周转时间之和
3.带权周转时间
带权周转时间 = 作业周转时间 作业实际运行的时间 = 作业完成时间 − 作业提交时间 作业实际运行的时间 带权周转时间=\frac{作业周转时间}{作业实际运行的时间}=\frac{作业完成时间-作业提交时间}{作业实际运行的时间} 带权周转时间=作业实际运行的时间作业周转时间=作业实际运行的时间作业完成时间−作业提交时间
- 对于周转时间相同的两个作业,实际运行时间长的作业在相同时间内被服务的时间更多,带权周转时间更小,用户满意度更高。
- 带权周转时间必然≥1
- 带权周转时间与周转时间都是越小越好
4.平均带权周转时间
平均带权周转时间 = 各作业带权周转时间之和 作业数 平均带权周转时间=\frac{各作业带权周转时间之和}{作业数} 平均带权周转时间=作业数各作业带权周转时间之和
4.等待时间
等待时间,指进程/作业处于等待处理机状态时间之和,等待时间越长,用户满意度越低。
- 对于进程来说,等待时间就是指进程建立后等待被服务的时间之和,在等待I/O完成的期间其实进程也是在被服务的,所以不计入等待时间。
- 对于作业来说,不仅要考虑建立进程后的等待时间,还要加上作业在外存后备队列中等待的时间。
一个作业总共需要被CPU服务多久,被I/O设备服务多久一般是确定不变的,因此调度算法其实只会影响作业/进程的等待时间。
当然,与前面指标类似,也有“平均等待时间”来评价整体性能。
5.响应时间
对于计算机用户来说,会希望自己的提交的请求(比如通过键盘输入了一个调试命令)尽早地开始被系统服务、回应。
响应时间,指从用户提交请求到首次产生响应所用的时间。