异常与中断 异常并不意外!一一lxx© llxx@ustc.edu.cn
异常与中断 异常并不意外!——llxx☺ llxx@ustc.edu.cn
程序如何执行的?用到哪些设备? /*-sum.c-=*/ 数据的表示 int sum(int a[]unsigned len) 数据的运算 { 各类语句的转换与表示(指令) int i,sum =0; 各类复杂数据类型的转换表示 for(i=0;i<=len-1:++) sum +a[i]; :过程(函数)调用的转换表示 return sum; Microsoft VisualC++ Unhandled exception in Test.exe:0xC0000005:Access Violation. /*---main.c---*/ int main() { 确定 inta[1]=100; int s; 链接(linker)和加载 s=sum(a,0); 程序执行(存储器访问) printf("%d",s); 异常和中断处理 输入输出(VO) C语言计算机? IF ID EX MEM WB
程序如何执行的?用到哪些设备? • C语言计算机?
Pentium Socket7插座 CPU CPU总线 北桥 士存与 Lacache 主存(DRAM) CPU总线 cache (256 PCI总线 控制器 512KB) (4I28MB)】 桥芯片 输入输出 I 芯片 可选 P▣总线 桥 PCI扩充槽 ROM BIOS 8042MPU PC总线 (64一128KB) 鼠标器 I5A总线 桥芯片 及 健盆、 鼠标 DMA.中断 62脚 控制递辑 控制器 (长精) 实时钟/日历 CMOS RAM ISA总线 电他 136脚 触盘 (短槽 唐图10.19 ISA扩充精 IF ID EX MEM WB
输入输出 唐图10.19
内容提要 ·异常与中断的基本概念,4.9 调用printfO 应用程序 -功能:处理意外事件,/O ·指令异常,系统服务(syscall) 库函数printf( ·外部中断 C函数库 一时序:程序序(进程序)语义 库函数write(O ·指令周期:同步,异步(中断周期) 系统调用write( 内核 -属性:5种 ·异常与中断响应的基本过程 User program Interrupt handler 一机构 ·ESR/ISR入口(向量式/非向量式),控制栈 ·异常:EPC,Cause,Vector ·中断:EPC,Cause,Vector,Enable,Mask 2 -OS:ESR/ISR -约定:软硬件接口 ·异常与中断响应过程控制 -单周期 Interrupt- occurs here i+ 多周期:中断周期 一流水线:精确,非精确 M
内容提要 • 异常与中断的基本概念,4.9 – 功能:处理意外事件,I/O • 指令异常,系统服务(syscall) • 外部中断 – 时序:程序序(进程序)语义 • 指令周期:同步,异步(中断周期) – 属性:5种 • 异常与中断响应的基本过程 – 机构 • ESR/ISR入口(向量式/非向量式),控制栈 • 异常:EPC,Cause,Vector • 中断:EPC,Cause,Vector,Enable,Mask – OS:ESR/ISR – 约定:软硬件接口 • 异常与中断响应过程控制 – 单周期 – 多周期:中断周期 – 流水线:精确,非精确
Terms:exceptions、interrupts、traps 改变正常指令执行流(Transfer of Control)的意外事件。 -暂停当前程序的执行,转而执行ESR/ISR程序; ESR/ISR执行完成后,被中断的程序恢复执行。 一与过程调用的区别:发生场景(程序内/外),系统状态切换 RISC:MIPS/ARM/RV统称exceptions,含 当前程序 一内部事件:异常(例外) 异常/中断 服务程序 ·指令异常:非法指令、算术溢出/除零、访存缺页 (ESR/ISR) 系统调用(syscall,.软中断/陷阱):服务、断点break 外部事件:中断Interrupts,硬中断 。/O(键盘,可屏蔽),硬件故障(存储器, 不可屏蔽) Ring 3 Type of event From where? RISC-V terminology Ring 2 p224 System reset External Exception Ring 1 Ring 0 I/O device request External Interrupt Kemel Invoke the operating system from user program Internal Exception Using an undefined instruction Internal Exception Device drivers Hardware malfunctions Either Either Device drivers Applications
Terms:exceptions、interrupts、traps • 改变正常指令执行流(Transfer of Control)的意外事件。 – 暂停当前程序的执行,转而执行ESR/ISR程序; – ESR/ISR执行完成后,被中断的程序恢复执行。 – 与过程调用的区别:发生场景(程序内/外),系统状态切换 • RISC:MIPS/ARM/RV统称exceptions,含 – 内部事件:异常(例外) • 指令异常:非法指令、算术溢出/除零、访存缺页 • 系统调用(syscall,软中断/陷阱):服务、断点break – 外部事件:中断Interrupts,硬中断 • I/O(键盘,可屏蔽),硬件故障(存储器,不可屏蔽) p224
RISC异常/中断的属性:5种 User Within vs. Synchronous vs. User request maskable vs. between Resume vs. Exception type asynchronous vs.coerced nonmaskable instructions terminate 1/O device request Asynchronous Coerced Nonmaskable Between Resume Invoke operating system Synchronous User request Nonmaskable Between Resume Tracing instruction execution Synchronous User request User maskable Between Resume Breakpoint Synchronous User request User maskable Between Resume Integer arithmetic overflow Synchronous Coerced User maskable Within Resume Floating-point arithmetic Synchronous Coerced User maskable Within Resume overflow or underflow Page fault Synchronous Coerced Nonmaskable Within Resume Misaligned memory accesses Synchronous Coerced User maskable Within Resume Memory protection violations Synchronous Coerced Nonmaskable Within Resume Using undefined instructions Synchronous Coerced Nonmaskable Within Terminate Hardware malfunctions Asynchronous Coerced Nonmaskable Within Terminate Power failure Asynchronous Coerced Nonmaskable Within Terminate H&PCA图A.27 IF ID EX MEM WB
RISC异常/中断的属性:5种 H&P CA图A.27
指令异常响应模式 可恢复异常:访存指令缺页,OS处理后重新执行当前指令,如图“故障” 不可恢复异常:当前异常无法修复,交用户处理,如图“异常中止” 陷阱(软中断/系统调用):系统调用指令触发请求,返回下一条指令 程序执行 程序执行 程序执行 当前指令 当前指令 异岁入 发生异常 处理 当前指令 处理 发现故障 触发陷阱 当前指令 常 异常 下一条指令 故障处理程序执行 下一条指令 陷阱处理积序执行 星常 异常处理程序执行 下一条指令 返可 程序终止 故障处理 陷阱处理 异常中止
7 指令异常响应模式 • 可恢复异常:访存指令缺页,OS处理后重新执行当前指令,如图“故障” • 不可恢复异常:当前异常无法修复,交用户处理 ,如图“异常中止” • 陷阱(软中断/系统调用):系统调用指令触发请求,返回下一条指令
系统调用:应用程序调用0OS服务 Ring 3 Ring 2 Least privileged Application Ring 1 execution Ring 0 stream Exception First-level handler Kemel Set supervisor(kernel)privilege level Most privileged Device drivers Save interrupt return register(IRR) Save kernel state Device drivers Applications Identify exception/interrupt Set correct privilege level 用户态 内核态 Jump to handler Real handler system call: Service interrupt xyzO IDT sys xyz sys xyzsys"call table{ Fix what caused the exception xyzO int 0x80 (for exceptions) ret_from sys call:"... Jump back to lower-level handler iret Restore kernel state Set original privilege level 在应用程序在1ibc标准库 系统调用 系统调用 调用中的 中的封装例程 处理程序 服务例程 RFI(return from interrupt,jump to IRR) 系统调用 Application execution stream
系统调用:应用程序调用OS服务
不可恢复异常:异常终止 Kernel32 This program has pertormed an illegal operation Close and will be shut down. If the problem persists,contact the program Debug vendor. Detal KERNEL32 caused an invalid page fault in module KERNEL32.DLL at 0137:bft74966. Registers: EAX=5f402d8cCg=0137EIP=bfE74966EF1Cg=00010246 BBX=00000000SS=013fBgP=0181fad4EB2=0181fh00 ECX=00000002DS=013fESI=00000000FS=2717 EDX=815ae794E$=013fEDI=514cb008C8=0000 Bytes at CS:EIP: 66648e2d0c00000065f6051600000020
不可恢复异常:异常终止
外部中断:中断源,类型,处理机构 MIPS32®Core ● 处理器异常处理 Vector Number Offset Interrupt EPC,CAUSE Exception Priority Level Interrupt Controller Execution unit Requests (Exception Handling) CSR:中断禁止 Shadow Set Number 抢占与嵌套 Core Interrupt Events Instruction Data ■■■■■■■■■■■■■■■■■■■■■■■■■ Cache Cache 外部中断源:外设,核间通信 Multi-Layer 可屏蔽: System Bus ·时钟、 键盘、鼠标、硬盘 不可屏蔽 。 访存、设备错、电源 Prefetch Buffer Data 中断控制器:中断源管理 SRAM Peripherals Interrupt Events Program ◆ 判优,屏蔽挂起pending Flash
外部中断:中断源,类型,处理机构 • 外部中断源:外设,核间通信 – 可屏蔽: • 时钟、键盘、鼠标、硬盘 – 不可屏蔽 • 访存、设备错、电源 • 中断控制器:中断源管理 – 判优,屏蔽挂起pending • 处理器异常处理 – EPC,CAUSE – CSR:中断禁止 – 抢占与嵌套