1.调度的概念,层次
1.1 基本概念
按照某种算法选择一个进程把处理机分配给它
通俗理解:当有一堆任务要处理,但由于资源有限,这些事情没法同时处理。这就需要确定某种规则来决定处理这些任务的顺序,这就是“调度”研究的问题
1.2 三个层次
1> 高级调度(作业调度) 按照某种规则,从后备队列中选择合适的作业将其调入内存,并为其创建进程.
2> 中级调度(内存调度) 按照某种规则,从挂起队列中选择合适的进程将(从外存)其调回内存(内存不足的时候)
3> 低级调度(进程调度) 按照某种规则从就绪队列中选择一个进程为其分配处理机
1.3 三层调度的联系,对比
1.3.1 高级调度
1> 外存->内存(面向作业)
2> 发生频次: 最低
1.3.2 中级调度
1> 外存->内存(面向进程)
2> 发生频次: 中等
1.3.3 低级调度
1> 内存->CPU
2> 发生频次:最高
1.4 一些补充
1> 为减轻系统负载,提高资源利用率,暂时不执行的进程会被调到外存从而变为"挂起态"
2> 七状态模型:在五状态模型的基础上加上了"就绪挂起"和"阻塞挂起"俩种状态
2.调度的目标
2.1 CPU利用率
利用率 = 忙碌时间/总时间
2.2 系统吞吐量
系统吞吐量 = 总共完成了多少作业/总共花费了多少时间
2.3 周转时间
1> 周转时间 = 作业完成时间 - 作业提交时间
2> 平均周转时间 = 各个作业周转时间之和/作业数
3> 带权周转时间 = 作业周转时间/作业实际运行的时间
4> 平均带权周转时间 = 个作业周转时间之和/作业数
2.4 等待时间
1> 进程/作业 等待被服务的时间之和
2> 平均等待时间,也就是各个作业/进程等待的平均值
2.5 响应时间
从用户提交到首次产生相应所用的时间
3.进程调度的时机与过程调度方式
1. 时机
1.1 什么时候需要进程调度?
1.1.1 主动放弃
1> 进程正常终止
2> 运行过程中发生异常而终止
3> 主动阻塞(如等待I/O)
1.1.2 被动放弃
1> 分给进程的时间片用完
2> 有更紧急的事情需要处理(如I/O中断)
3> 有更高优先级的进程进入就绪队列
1.2 什么时候不能进行进程调度?
1> 在处理中断的过程中
2> 进程在操作系统内核程序临界区中
3> 原子操作过程中(原语)
2. 切换与过程
2.1 狭义的"调度"和切换的区别
2.2 切换过程
1> 堆原来运行进程各种数据的保存
2> 堆新的进程各种数据的恢复
2.3 重要结论
进程调度,切换时有代价的,并不是调度越频繁,并发度越高
3. 方式
3.1 非剥夺调度方式(非抢占式) 只能由当前运行的进程主动放弃CPU
3.2 剥夺调度方式(抢占式) 可由操作系统剥夺当前的CPU使用权
4.调度器和闲逛进程
1.调度器
1.1 概念: 调度器决定让谁去运行(调度算法),运行多少时间(时间片大小)
1.2 调度时机
1> 创建新进程
2> 进程退出
3> 运行进程阻塞
4> I/O中断发生