- 基本概念
- 在多道程序系统中,进程多于处理机的个数,这样不可能同时并行处理各个进程。
- 处理机调度,就是从就绪队列中按照一定的算法选择一个进程并将处理机分配给它运行,以实现进程的并发执行。
- 调度的三个层次
- 进程调度就是按照某种算法从就绪队列中选择一个进程为其分配处理机
- 需要进行进程调度
- 进程主动放弃处理机
- 进程正常终止
- 运行过程中发生异常而终止
- 进程主动请求阻塞(等待I/O)
- 进程被动放弃处理机
- 分给进程的时间片用完
- 有更紧急的事需要处理
- 有更高优先级的进程进入就绪队列
- 进程主动放弃处理机
- 不能进行进程调度
- 在处理中断的过程中
- 线程在操作系统内核程序临界区
- 在原子操作过程中
- 需要进行进程调度
- 临界资源:一段时间内只允许一个进程使用的资源。
- 临界区:访问临界资源的那段代码。
- 进程调度的方式
- 非剥夺调度方式
- 只允许进程主动放弃处理机
- 实现简单,系统开销小但是无法及时处理紧急任务,适用于早起的批处理系统
- 剥夺调度方式
- 如果有更重要的程序需要处理机,将处理机分配给更重要的进程
- 可以优先处理,适用于分时操作系统,实时操作系统
- 非剥夺调度方式
- 切换和过程
- CPU利用率
- 利用率=忙碌时间/总时间
- 系统吞吐量
- 单位时间内完成作业的数量
- 系统吞吐量=总共完成了多少道作业/总共花了多少时间
- 周转时间
- 是从作业提交给系统开始,到作业完成的时间
- 包括四个部分
- 作业在外存后备队列上等待作业调度的时间(高级)
- 进程在就绪队列上等待进程调度的时间(低级)
- 进程在CPU上执行的时间
- 进程等待I/O操作完成的时间
- 周转时间=作业完成时间-作业提交时间
- 平均周转时间=各作业周转时间之和/作业数
- 带权周转时间=作业周转时间/作业实际的运行时间
- 平均带权周转时间=各作业带权周转时间之和/作业数
- 等待时间
- 进程/作业处于等待处理机状态时间之和,等待时间时间越长,用户满意度越低。
- 响应时间
- 指从用户提交请求到首次产生响应所用的时间
- 先来先服务
- 短作业优先
- 高响应比优先
- 对比
- 时间片轮转
- 优先级调度
- 多级反馈队列调度算法
- 算法思想:对其他调度算法的折中权衡
- 算法规则:
- 设置多级就绪队列,各级队列优先级从高到低,时间片从小到大
- 新进程到达时进入第一级队列,按FCFS原则排队等待被分配时间片,若时间片进程还未结束,则进程进入下一级队列队尾。如果此时已经是最下级,则重新放回改队列队尾
- 只有第k级队列为空,才会为k+1队头的进程分配时间片
- 用于作业和进程:只用于进程调度
- 是否抢占:抢占式,在k级队列运行过程中,若有上级队列进入了一个新进程,则会抢占
- 优缺点
- 优点
- 相对公平
- 每个新到达的进程都可以很快得到响应
- 短进程只用较少的时间就可以完成
- 不必实现估计进程的运行时间
- 优点
- 是否会导致饥饿:会