680 likes | 818 Views
第三章 中断与处理机调度. 中断与中断系统 处理机调度 调度级别与多级调度 实时调度. 3.1 中断与中断系统. 3.1.1 中断的概念 3.1.2 中断装置 3.1.3 中断处理程序. 3.1.1 中断的概念. 处理机在运行过程中,出现了某一事件,必须中止正在运行的程序,转去处理这个事件,然后再返回原来运行的程序,这一过程称为 中断 。 中断系统: 中断装置 ( 硬件 ) 中断处理程序 ( 软件 ). 3.1.2 中断装置. 发现并响应中断的硬件机构 识别中断源,当有多个中断源时,按紧迫程度排队; 保存现场; 引出中断处理程序。.
E N D
第三章 中断与处理机调度 • 中断与中断系统 • 处理机调度 • 调度级别与多级调度 • 实时调度
3.1 中断与中断系统 • 3.1.1 中断的概念 • 3.1.2 中断装置 • 3.1.3 中断处理程序
3.1.1 中断的概念 • 处理机在运行过程中,出现了某一事件,必须中止正在运行的程序,转去处理这个事件,然后再返回原来运行的程序,这一过程称为中断。 • 中断系统: • 中断装置(硬件) • 中断处理程序(软件)
3.1.2 中断装置 • 发现并响应中断的硬件机构 • 识别中断源,当有多个中断源时,按紧迫程度排队; • 保存现场; • 引出中断处理程序。
中断响应和处理的过程 正运行程序 16 PSW, PC 5 2 3 PSW’,PC’ psw, pc PC’: 处理程序 4 ……... OS 系统桟 HAL
3.1.2.1 中断源与中断字 • 中断源 • 引起中断的事件。 • 中断寄存器 • 保存与中断事件相关信息的寄存器。 • 中断字 • 中断寄存器的内容。 • 例:IO中断:设备状态寄存器。
强迫性中断 运行程序不期望的 时钟中断、IO中断、控制台中断 硬件故障中断(power failure、内存校验错) 程序性中断(越界,越权、非法指令) 自愿性中断 运行程序期望的 系统调用: fd=open(fname,mode) 访管指令:准备参数 svc n 取返回值 3.1.2.2 中断类型与中断向量
3.1.2.2 中断类型与中断向量 clock 强迫中断: IO 自愿中断: console power failure SVC n trap n malfunction 运行程序 访管指令 运行程序 中断装置 中断装置 中断处 理程序 中断处 理程序
3.1.2.2 中断类型与中断向量 • 中断向量:中断处理程序的运行环境与入口地址(PSW,PC) • 每类中断事件有一个中断向量, • 中断向量的存放位置是由硬件规定的, • 中断向量的内容是OS在系统初始化时设置好的。
3.1.2.2 中断类型与中断向量 PC1: 时钟中断 处理程序 PSW1, PC1 时钟中断向量 PSW2, PC2 I/O中断向量 PSW3, PC3 控制台中断向量 PSW4, PC4 硬件故障 PSW5, PC5 程序错误 … … PSWn, PCn 访管中断向量 0000 0008 0016 0024 0030 … 0090 PC2: I/O中断 处理程序 … PCn: 访管中断 处理程序 系统空间
3.1.2.3 中断嵌套与系统栈 • 一般原则: • 高优先级别中断可以嵌入低优先级中断 • 实现方法: • 中断响应后立即屏蔽不高于当前中断优先级的中断源。
中断嵌套与系统栈 进入中断后一般需要进一步保存现场 关中断(屏蔽所有中断) 进一步保存现场(地址寄存器,通用寄存器等) 开中断(或开放高优先级中断) …... 中断处理 …... 恢复现场 中断返回
中断嵌套与系统栈 系统栈: …… PSWn-1 PCn-1 …… PSW2 PC2 PSW1 PC1 指针 … PSW2: PC2 PSWn: PCn PSW1: PC1 … … … … … … … … 管态 管态 目态 中断嵌套:
3.1.2.4 中断优先级与中断屏蔽 • 中断优先级: • 硬件规定的中断响应次序,依据: • 紧迫程度; • 处理时间。 • 中断屏蔽: • 高优先级中断事件处理不受低优先级中断打扰; • 程序调整中断响应次序。
3.1.3 中断处理程序 强迫性中断: 自愿性中断: 转中断处理程序 是否嵌套中断 由系统栈恢复现场 需要切换进程 返回上层中断 由系统栈恢复现场 转CPU分派 返回目态程序 (dispatcher) 保存现场信息 取中断字 分析中断原因 保存现场信息 取访管号 分析调用功能 F T F T
3.2 处理机调度 • 处理机调度算法 • 按什么原则分配 • 处理机调度时机 • 何时重新分配 • 处理机调度过程 • 如何完成分配 scheduling
3.2.1 处理机调度算法 • 考虑因素(scheduling criteria) • CPU利用率 ; (max) • 吞吐量 ; (max) • 周转时间 ; (min) • 响应时间 ; (min) • 系统开销 ; (min)
基本概念 • 阵发期 : • CPU burst cycle: 进程(线程)使用CPU计算; • I/O burst cycle: 进程(线程)使用设备I/O。 • 剥夺式(preemptive) • 就绪进程可以从运行进程手中抢占CPU。 • 非剥夺式(non-preemptive) • 就绪进程不可从运行进程手中抢占CPU。
3.2.1.1 先到先服务算法 P1 P2 P3 0 273035 • FCFS(First Come First Serve) • 按进程申请CPU(就绪)的次序。 • Gantt图(到达次序:P1,P2,P3)
3.2.1.1 先到先服务算法 • 平均等待时间: (0+27+30)/3 = 19(ms) • Gantt图(到达次序:P2,P3,P1) • 平均等待时间 • (0+3+8)/3 = 3.67 P2 P3 P1 03835
3.2.1.2 短作业优先 P4 P2 P3 P1 03 81527 • SJF(Shortest Job First) • 按CPU burst长度 • Gantt chart:
3.2.1.2 短作业优先(SJF) • 平均等待时间: • (0+3+8+15)/4 = 6.5 (ms) • 特点: • 假定所有任务同时到达,平均等待时间最短。 • 长作业可能被饿死。
3.2.1.3 最高优先数算法(HPF) • 静态优先数(static) • 优先数在进程创建时分配,生存期内不变。 • 响应速度慢,开销小。 • 适合批处理进程 • 动态优先数(dynamic) • 进程创建时继承优先数,生存期内可以修改。 • 响应速度快,开销大。
3.2.1.3 最高优先数算法(Cont.) • 非剥夺式静态优先数 • 获得处理机的进程运行,直至 • 终止 • 等待 • 剥夺式动(静)态优先数 • 获得处理机的进程运行,直至 • 终止 • 等待 • 出现高优先级的进程
3.2.1.4 循环轮转算法(RR) • 基本轮转 • 时间片(quantum,time slice)长度固定,不变; • 所有进程等速向前推进。 • 改进轮转 • 时间片长度不定,可变。
3.2.1.4 循环轮转算法 (Cont.) • 时间片长度: 几十毫秒几百毫秒(eg. 50ms) • 过长:响应速度慢; • 过短:系统开销(overhead)大。 • 适应系统: • 分时
3.2.1.5 多级队列算法(MLQ) • 多级队列 • 多个就绪队列,进程所属的队列固定。 • 例如:通用系统中: • 队列1:实时进程就绪队列(HPF) • 队列2:分时进程就绪队列 (RR) • 队列3:批处理进程就绪队列 (HPF)
3.2.1.6 最短剩余时间(SRTN) • Shortest Remaining Time Next • 可剥夺SJF
3. 2.1.7 反馈排队算法(FB) 创建唤醒 Q1(RR,HPF) 运行s1时间片 优先级 时间片 Q2(RR,HPF) 运行s2时间片 …. Qn(RR,HPF) 运行sn时间片 • Feed-Back: • 多个就绪队列,进程所属队列可变。
3.2.1.7 反馈排队算法 (Cont.) • 调度效果: • 资源利用率高 • 被唤醒的进程尽早投入运行; • 响应速度快 • 交互式进程反应及时; • 系统开销小 • 计算量大的进程落入底层队列。
3.2.2 处理机调度时机 中断 中断 中断 目态(Pi运行) 目态(Pj运行) …... 管态 管态 返回 返回 返回 • 中断处理完毕,没有嵌套中断,即将返回目态。 Pi=Pj: 未发生进程切换; Pi<>Pj: 发生了进程切换。
3.2.2 处理机调度时机(Cont.) • 必然引起进程切换的中断 • 进程自愿结束, exit() • 进程被强行终止; • 非法指令,越界,kill • 进程等待 • 可能引起进程切换的中断 • 时钟 • 系统调用
3.2.3 处理机调度过程 • 保存下降进程的现场 • 系统栈PCB • 选择上升进程 • 按处理机调度算法 • 恢复上升进程的现场 • PCB 寄存器
3.3 调度级别与多级调度 • 3.3.1 交换与中级调度 • Swapping and mid-level scheduling • 3.3.2 作业与高级调度 • Job and high-level scheduling
3.3.1 交换与中级调度 • 术语 • 交换(swapping) • 中级调度(mid-level scheduling) • 并发度(degree of multi-programming) • 目标:控制并发度 • 并发度过高 • 系统开销大、响应速度慢 • 内存等资源紧张 • 进程(线程)频繁进入等待状态
3.3.1 交换与中级调度 结束 运行 终止 选中 等待事件 剥夺 就绪 等待 创建 事件发生 无 换入 换出 换入 换出 就绪 挂起 创建 等待 挂起 事件发生
3.3.2 作业与高级调度 • 作业状态: • 提交: 输入机向输入井传送 • 后备: 在输入井,尚未进入内存 • 执行: 分解为进程,在内存处理 • 完成: 处理完毕,结果在输出井 • 退出: 由输出井向打印机传送
3.3.2 作业与高级调度 提交 完成 后备 执行 退出 SPOOLing输入 SPOOLing输出 作业调度1 作业调度2 • 状态转换: • 提交后备: 由SPOOLing输入进程完成 • 后备执行: 由作业调度(1)(高级调度)完成 • 执行完成: 由作业调度(2)完成 • 完成退出: 由SOOPLing输出进程完成
3.4 实时调度(real-time scheduling) • 实时任务: • 具有明确时间约束的计算任务。 • Eg. • 某时刻前必须开始处理 • 某时刻前必须处理完毕 • 实时调度: • 合理安排就绪实时任务的执行次序,满足每个实时任务时间约束条件的调度。
实时任务分类 • 硬实时 与 软实时 • 硬实时 :必须满足任务截止期要求 . • 软实时 :期望满足截止期要求 . • 周期性与随机性 • 周期性 :每隔固定时间发生一次 • 随机性:由随机事件触发,其发生时刻不确定
术语解释 • Ready time: 就绪时间 • Starting deadline: 开始截止期 • Processing time: 处理时间 • Completion deadline: 完成截止期 • Occurring frequency: 发生频率
周期性实时事务 • 周期性实时事务: • 令Ci为任务Pi处理时间,Ti为任务Pi的发生周期,则任务P1,…,Pm可调度的必要条件为:
周期性实时事务 • 例: • T1=100, T2=200, T3=500 (ms) • C1=50, C2=30, C3=100 (ms) • C1/T1+C2/T2+C3/T3=0.5+0.15+0.2=0.85<1 • Schedulable
周期性实时事务 10/20 + 25/50 = 1, 可调度(不考虑开销)
例子 Process Arrival time Execution time completion deadline 0 20 40 60 80 …... 0 50 A(1) A(2) A(3) A(4) A(5) …... B(1) B(2) 10 10 10 10 10 …… 25 25 20 40 60 80 100 …... 50 100
3.4.1 最早截止期调度 • EDF(Earliest Deadline First) • 优先选择截止期最早的实时任务 • 可抢先 • 可以证明:对EDF来说,可调度充分条件是: • 在不可调度的条件下,可使错过截止期任务最小化
例子: Completion deadline scheduling B1 dl B2 dl A4 dl A5 dl A1dl A2 dl A3 dl A2 A3 A4 A5 A1 B1 B2 0 10 20 30 40 50 60 70 80 90 100 Time A1 B1 A2 B1 A3 B2 A4 B2 A5 A1 A2 B1 A3 A4 A5B2
3.4.2 速率单调调度 • RMS(Rate Monotonic Scheduling) • 提出于1973年 • 面向周期性实时事务,非剥夺式 • 优先调度发生周期最短(频度最高)的实时任务 • 可调度条件:
n RMS的上限值 1 2 3 4 5 6 ┇ 1.0 0.828 0.779 0.756 0.743 0.734 ┇ ln20.693 • RMS vs. EDF • RMS可调度条件强于EDF • RMS调度较EDF实现简单
RMS例子: 可调度,具体调度结果: 0 20 60 160 180 220 240 300 320 360 460