欢迎来到天天文库
浏览记录
ID:46302573
大小:1.86 MB
页数:70页
时间:2019-11-22
《现代微机-中断与异常》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、1第7章中断与异常2中断是在程序执行过程中,为了响应从硬件发来的信号而随机产生的事件。系统硬件使用中断来处理外部事物,比如外设的请求。软件也能够通过执行INTn指令来产生中断。当处理器检测到执行一条指令时的错误,比如除0错、保护侵犯、缺页故障、内部机器故障等,就会产生异常。当内部硬件错误和总线错误被检测到时,有机器检查功能的处理器(Pentium,P6,Pentium4,Core及以后)也会产生机器检查异常。7.1.1中断、异常、中断向量7.1概述1.中断与异常概念3中断到来的时候,CPU暂停现行程序,转而处理随机到来的事件,待处理完后再回到被暂
2、停的程序继续执行。2.中断大致过程:中断处理的隐操作:程序状态及程序断点地址的进栈及出栈。中断请求中断响应中断服务中断结束中断处理43.中断系统其他功能:支持多中断源和多种中断源。支持中断屏蔽处理。支持中断嵌套处理。支持中断优先级修改。支持中断结束方式选择。54.中断向量号、中断向量为了处理异常和中断,每一个IA-32/Intel64体系定义的异常和每一个需要特殊处理的中断类型都被分配了唯一的识别号,该识别号称之为中断向量号。对每个异常或中断而言,处理器都有相应的中断处理程序,而中断向量就是中断处理程序的入口地址。中断向量号允许的范围是0~255
3、0~31号向量被Intel64和IA-32用作体系结构内部定义的异常和中断。32~255号向量作为用户定义的中断,这些中断通常安排给外部I/O设备,使这些设备能够利用外部的某一种硬件中断机制(比如8259A中断控制器)向处理器发出中断请求。作为INTn指令引发的软件中断,其向量号可以在0~255的范围。61.外部中断7.1.2中断源及中断类型Pentium及以上的处理器外部中断通过处理器外部引脚或者本地APIC获得Pentium之前的处理器,中断信号直接从INTR和NMI引脚引入Pentium之后的处理器,主要的中断引脚是LINT[1:0],它们
4、连接到本地APIC如果处理器内本地APIC被禁止时,LINT[1:0]引脚分别被配置为INTR和NMI引脚如果本地APIC被使能时,LINT[1:0]引脚能够通过APIC的本地向量表编程去关联任一个处理器的异常和中断向量外部中断又可分为可屏蔽中断和不可屏蔽中断。APIC是高级可编程中断控制器,是从Pentium处理器开始被引入的面向多处理器及多核系统的中断控制器,由处理器中的本地APIC,PCH中的I/OAPIC以及两者之间的连线构成。71)可屏蔽中断(如键盘、鼠标,串口,并口打印机等)中断请求:多个中断请求的排队和判优由中断控制器完成,产生的中
5、断请求信号送到CPU的INTR引脚或本地APIC。中断向量号:通过数据总线送到CPU中。EFLAGS寄存器的IF位影响CPU对中断请求的响应。处理器在当前指令执行结束的时候启动中断识别INTA总线周期。属性:硬件、可屏蔽、向量。SIOLPC47B27X…IRQxPCHSERIRQ北桥CPUINTR中断向量号PIRQx1.外部中断82)不可屏蔽中断中断请求:中断请求的信号送到CPU的NMI引脚或本地APIC。中断向量号:固定为2。CPU不需要进行中断识别,直接处理中断。属性:硬件、不可屏蔽、向量。NMI由0跳变到1以后要维持至少4个连续的处理器时钟
6、周期的高电平才被识别。NMI由1跳变到0以后要维持至少4个连续的处理器时钟周期的低电平,新的NMI中断才能被识别。1.外部中断92.软件中断属性:软件、不可屏蔽、向量。中断请求:INTn是使用非常广泛的软件中断指令。中断向量号:INTn的第二字节n给出指令指定的中断向量号BIOS中断:I/O设备控制、实用服务、特殊中断、专用参数中断。DOS中断:公开/未公开、可调用、系统功能。自由中断:未定义(20H~3FH中未使用的中断)。CPU不需要进行中断识别,直接处理中断。101.异常源7.1.3异常源及异常类型处理器检测到的程序错误产生的异常处理器在执
7、行应用程序或操作系统期间检测到程序错误,会产生一个或多个异常IA-32/Intel64结构为每一个“处理器可检测”的异常指定了一个向量号机器检测异常P6家族和Pentium处理器提供了内部和外部机器检测机制用于检查内部芯片硬件和总线事务的操作当发现机器检测错误,处理器发出一个机器检测异常并返回一个错误号111.异常源软件产生的异常INTO是溢出异常指令,如果EFLAGS.OF=1,同时又执行INTO指令,则将产生向量号为4的异常中断INT3是断点异常指令,它是一条单字节指令,常被放在需要放置断点的指令前面。实际上,很多调试程序都是利用INT3指令
8、来完成断点跟踪功能的BOUND指令是边界检查指令,它具有两个操作数:第一个操作数用来指定存放数组索引的寄存器;第二个操作数必须是存储器操
此文档下载收益归作者所有