第7章 中断和异常
微计算机原理(第2版)课后习题答案潘名莲马争丁庆生编著
第七章微计算机的中断系统7-1 什么是中断类型码、中断向量、中断向量表?在基于8086/8088的微机系统中,中断类型码和中断向量之间有什么关系?解:处理机可处理的每种中断的编号为中断类型。
中断向量是指中断处理程序的入口地址,由处理机自动寻址。
中断向量表是存放所有类型中断处理程序入口地址的一个默认的内存区域。
在8086系统中,中断类型码乘4可得到向量表的入口,从此处读出4字节内容即为中断向量。
7-2 什么是硬件中断和软件中断?在PC机中两者的处理过程有什么不同?解:硬件中断通过中断请求线输入电信号来请求处理机进行中断服务;软件中断是处理机内部识别并进行处理的中断过程。
硬件中断一般由中断控制器提供中断类型码,处理机自动转向中断处理程序;软件中断完全由处理机内部形成中断处理程序的入口地址并转向中断处理程序,不需外部提供信息。
7-3 试叙述基于8086/8088的微机处理硬件中断的过程。
解:以INTR中断请求为例。
当8086收到INTR的高电平信号时,在当前指令执行完毕且IF=1的条件下,8086在两个总线周期中分别发出INTA#有效信号;在第二个INTA#期间,8086收到中断源发来的一字节中断类型码;8086完成保护现场的操作,CS、IP内容进入堆栈,清除IF、TF;8086将类型码乘4后得到中断向量入口地址,从此地址开始读取4字节的中断处理程序的入口地址,8086从此地址开始执行,完成INTR中断请求的响应过程。
7-4 在PC机中如何使用“用户中断”入口请求中断和进行编程?解:PC机中分配用户使用的中断是IRQ9,经扩展槽B40h亿引出,故把用户的中断请求线连接到B40h上。
在应用程序中,利用25H号系统调用将中断服务程序的入口地址写入对于0AH 类型中断对应的中断向量表中去。
在应用程序中把主片8259A D2屏蔽位清零,把从主片8259A D1屏蔽位清0,使主片的IR2、从片的IR1可以输入中断请求。
微机原理及接口第七章习题解答
“微机系统原理与接口技术”第七章习题解答(部分)1. 8086系统采用向量式中断,试简述8086系统中中断类型码、中断向量、中断向量表的含义及其之间的关系。
答:中断类型码:用于区分不同的中断源,即系统中每个中断源都应该对应一个唯一的类型 码。
8086系统中的中断类型码以 8位无符号数(00H 〜0FFH )表示,一共可以区分 256个不同的中断源。
中断向量:中断服务程序(ISR )的入口地址,也就是 ISR 的第一条指令在存储器中的 位置。
8086系统中的中断向量由两个字(4个字节)组成,低位字表示入口的偏移地址,高 位字表示入口的段基址。
显然,每个中断类型码对应一个中断向量,则8086系统中共应有256个中断向量。
中断向量表:中断向量的存放地。
8086系统将最低的 1KB (00000H 〜003FFH ) RAM 空间用于存放这256个中断向量。
三者之间的关系是:利用中断类型码 n 可以很容易地从中断向量表中找到该中断源所对应的中断向量,即:中断向量存放的起始地址 m = nX 4,从中断向量表的 m 地址单元开始连续取出的四个字节就是 n 号中断的ISR 入口地址。
8086CPU 正是用这种方法完成中断索引的。
系统将广义中断分为异常和狭义中断两大类。
(5)对。
4. 8086系统的RAM 存储单元中,从 0000H:002CH 开始依次存放 23H 、0FFH 、00H 和 0F0H 4个字节的中断向量,该向量对应的中断类型码是多少?而中断类型码为 14H 的中断向量应存放在哪些存储单元中?答:中断向量0F000:0FF23存放在0002CH 双字单元中,说明其对应的中断类型码N =2CH - 4= 0BH 。
14H 号中断向量的起始存放地址为4X 14H = 00050H ,即该中断向量的偏移量部分存放2.判断下列说法是否正确,如有错,指出错误原因并改正:(1) (2) (3) (4) (5) 答:(1)优先级别高的中断总是先响应、先处理。
分析流水线处理器的中断和异常响应机制
分析流水线处理器的中断和异常响应机制——以ARM7系列3级流水线为例SC11011042-吴德云为增加处理器指令流的速度,ARM7系列使用3级流水线,允许多个操作同时处理,比逐条指令执行要快。
[1]图1ARM7流水线技术示意图PC 指向正被取指的指令,而非正在执行的指令。
ARM 流水线的一条指令只有在完全通过”执行”阶段才被处理。
这句话很重要,也就是说,当处理器开始取第四条指令时,第一条指令才完成执行。
我们如果不考虑流水线的设计,只看它的原理,其实是很简单的,他的复杂之处在于发生流水线冒险时,如何保证其工作得仍然很好。
流水线冒险一般分为控制冒险和数据冒险,而数据冒险一般可分为阻塞(即下一条指令依赖于前一条指令的结果)、分支和跳转、异常(异常和中断)。
由于ARM 是硬件flush 流水设计的,当发生冒险时,会暂停取指,然后清流水,(MIPS 解决冒险通常依赖于编译器,比如插入一条NOP 指令及重新排列指令序列)。
1.1ARM7的中断响应机制1.1.1中断延时从外部请求信号发出到取出对应的中断服务程序(ISR)的第一条指令,这期间的间隔时间。
1.1.2中断过程ARM 体系中通常在存储地址的低端固化了一个32字节的硬件中断向量表,用来指定各异常中断及其处理程序的对应关系。
当一个异常出现以后,ARM 微处理器会执行以下几步操作:1)保存处理器当前状态、中断屏蔽位以及各条件标志位;2)设置当前程序状态寄存器CPSR 中相应的位;3)将寄存器lr_mode 设置成返回地址;4)将程序计数器(PC)值设置成该异常中断的中断向量地址,从而跳转到相应的异常中断处从存储器中读取指令解码指令寄存器读(从寄存器Bank )移位及ALU 操作寄存器写(到寄存器Bank )PC PC PC -4PC-2PC -8PC -4ARM Thumb理程序处执行。
在接收到中断请求以后,ARM处理器内核会自动执行以上四步,程序计数器PC总是跳转到相应的固定地址。
微机原理第7章练习题及答案
第7章输入/输出与中断一、自测练习题㈠选择题1.一微机系统有10根地址线用于I/O端口寻址,因而具有I/O空间的范围是( )字节。
A) 1024 B) 10K C) 0.5M D) 1M2.8086CPU读/写一次存储器或I/O端口所需的时间称为一个( )。
A) 总线周期 B) 指令周期 C) 时钟周期 D) 基本指令执行时间3.微型计算机的输入/输出有三种不同的控制方法,其中以( )控制的输入/输出是微机进行I/O的一种最主要的控制方式。
A) 程序控制 B) 中断控制C) DMA控制D) 以上均可4.程序查询I/O方式的工作流程是按( )的次序完成一个字符的传输。
A) 写数据端口,读/写控制端口B) 读状态端口,读/写数据端口C) 写控制端口,读状态端口,写数据端口D) 随I/O接口的具体要求而定5.在CPU与外设的I/O传送控制方式中,效率高、实时性强的方式是( )。
A) 同步传送 B) 查询传送 C) 无条件传送 D) 中断传送6.在CPU与外设的I/O传送控制方式中,传送速度最快的方式是( )。
A) 无条件传送 B) 查询传送 C) 中断传送 D) DMA传递7.用具有两个状态(“0”和“1”态)的一组开关作简单输入设备时,应采用( )传送方式来输入信息。
A) 无条件B) 查询C) 中断D) DMA8.用一组发光二极管作为简单输出设备时,应采用( )传送方式来输出信息。
A) DMA B) 无条件C) 查询D) 中断9.在微机系统中引入中断技术,可以( )。
A) 提高外设速度B) 减轻主存负担C) 提高处理器的效率D) 增加信息交换的精度10.CPU响应中断请求的时刻是在( )。
A) 执行完成正在执行的程序以后 B) 执行完正在执行的指令以后C) 执行完本时钟周期以后D)执行完正在执行的机器周期以后11.8086/8088CPU向应两个硬中断INTR和NMI时,相同的必要条件是( )。
A) 允许中断B) 当前I/O操作执行结束C) 总线空闲D) 当前访问内存操作结束12.在微型计算机系统中,高速外设与内存储器进行批量数据传送时,应采用( )。
中断和异常处理读书笔记
中断和异常处理读书笔记中断(interrupt)通常被定义为一个事件,该事件改变处理器执行的指令顺序。
这样的事件与CPU芯片内外部硬件电路产生的电信号相对应。
中断通常分为同步(synchronous)中断和异步(asynchronous)中断:同步中断是当指令执行时由CPU控制单元产生的,之所以称为同步,是因为只有在一条指令终止执行后CPU才会发出中断。
异步中断是由其他硬件设备依照CPU时钟信号随机产生的。
在Intel微处理器手册中,把同步和异步中断分别称为异常(exception)和中断(interrupt)。
中断是由间隔定时器和I/O设备产生的,而异常是由程序的错误产生的,或者是由内核必须处理的异常条件产生的。
中断信号的作用:中断信号提供了一种特殊的方式,使处理器转而去执行正常控制流之外的代码。
当一个中断信号达到时,CPU必须停止它当前正在做的事情,并且切换到一个新的活动。
为了做到这一点,就要在内核态堆栈保存程序计数器的当前值,并把与中断类型相关的一个地址放进程序计数器。
中断处理与进程切换有一个明显的差异:由中断或异常处理程序所执行的代码不是一个进程,更确切的说,它是一个内核控制路径,代表中断发生时正在运行的进程执行。
作为一个内核控制路径,中断处理程序比一个进程要轻,中断的上下文很少,建立蒙昧无知中止中断处理所需要的时间很少。
中断处理是由内核执行的最敏感的任务之一,因为它必须满足以下约束:当内核正打算去完成一些别的事情时,中断随时会到来。
因此,内核的目标就是让中断尽可能快的处理完,尽其所能把更多的处理向后推迟。
内核响应中断后需要进行的操作分为两部分:关键而紧急的部分,内核立即执行;其余推迟的部分,内核随后执行。
因为中断随时会到来,所以内核可能正在处理其中一个中断时,另一个中断又发生了。
因此,中断处理程序必须编写成使相应的内核控制路径能以嵌套的方式执行。
当最后一个内核控制路径终止时,内核必须能恢复被中断进程的执行,或者,如果中断信号已导致了重新调度,内核能切换到另外的进程。
中断向量表
3. 中断是开放的
在CPU内部有一个中断允许触发器(也即IF)。只有 当其为“1”时,CPU才能响应中断;若其为“0”,即 使INTR线上有中断请求,CPU也不响应。而这个触发 器的状态可由STI和CLI指令来改变。当CPU复位时, 中断允许触发器为“ 0”,即关中断,所以必须要用 STI 指令来开中断。当中断响应后,CPU 就自动关中 断,所以必须在中断服务程序中用STI指令来开中断。
西华大学电气信息学院 郑海春
中断向量表
西华大学电气信息学院 郑海春
• 中断向量:指示中断服务程序的入口地址,包括: 偏移地址IP 、段地址CS。
• 每个中断向量的低字是偏移地址、高字是段地址, 需占用4个字节(低对低,高对高)。
• 8086 微处理器从物理地址00000H开始到003FFH (1KB),依次安排各个中断向量,向量号从0到 255。 • 中断向量表: 256个中断向量所占用的1KB区域。 • 中断向量的存放首址=N×4
西华大学电气信息学院 郑海春
2.实现优先权排队
在系统中通常有多个中断源,会出现两个或更 多个中断源同时提出中断请求的情况,这样就 必须要设计者事先根据轻重缓急,给每个中断 源确定一个中断级别——优先权。当多个中断 源同时发出中断申请时,CPU能找到优先权级 别最高的中断源,响应它的中断请求;在优先 权级别最高的中断源处理完了以后,再响应级 别较低的中断源。
7.1.3 中断系统的功能
1.实现中断及返回 当某一中断源发出中断申请时,若允许响应这个中断 请求,CPU必须在现行的指令执行完后,把断点处的IP 和CS值(即下一条应执行的指令的地址)、各个寄存 器的内容和标志位的状态推入堆栈保留下来——称为 保护断点和现场。然后转到需要处理的中断源的服务 程序的入口,同时清除中断请求触发器。当中断处理 完后,再恢复被保留下来的各个寄存器和标志位的状 态(称为恢复现场),恢复IP和CS值(称为恢复断 点),CPU返回断点,继续执行主程序。
第7章 中断系统
可 屏 蔽 中 断 请 求
软件中断
硬件中断
小结: 中断分类及中ຫໍສະໝຸດ 类型码8086/8088系统最多可处理256级不同类型的中断。
可屏蔽中断(INTR) 外部中断(硬件中断) 非屏蔽中断(NMI,中断类型码2) 中断分类 单步中断(中断类型码1) 内部中断(软件中断) 断点中断(中断类型码3) 溢出中断(中断类型码4) Int n 中断
器退出暂停状态,响应中断,进入中断处理程序。
若现行指令为WAIT指令,且 TEST 引脚加入低电平信号, 则中断请求信号INTR产生后,便使处理器脱离等待状态,响 应中断,进入中断处理程序。
HLT: 暂停指令
(4) 8259A连续两次接收(2个总线周期) INTA = 0的中断 响应信号后,便通过总线将中断矢量号送CPU。 (5) 保护断点。将标志寄存器内容、当前CS内容及当前IP 内容压入堆栈: (SP)←(SP)-2
((SP)+1:(SP))←(PSW)
(SP)←(SP)-2 ((SP+l:(SP))←(CS) (SP)←(SP)-2 ((SP)+1:(SP))←(IP)
(6) 清除IF及TF(IF←0,TF←0),以便禁止其它可屏蔽中 断或单步中断发生。 (7) 求中断程序的入口地址 :根据8259A向CPU送的中断 矢量号n求得矢量地址,再查中断矢量表,得相应中断处理程 序首地址(段内偏移地址和段地址),并将 位首地址置入CS及
7.1 概述
中断和异常是处理器处理突发事件时所采取的两种不同 的处理方法,具体来说,中断指的是处理器暂停当前的程序, 转而去处理中断事件;而异常虽然也会对异常事件作出反应, 但不一定会暂停当前的程序。 在8086/8088处理器时代,中断主要包括外部中断 和 内 部中断两种。 在386/486等32位处理器时代,内部中断的数量和功能被 扩充,习惯上,称内部中断为异常,而中断则主要指外部中 断。
嵌入式系统基础第7章中断和异常
为减少延时,ARM在快中断中采取了 两个措施: (1)专门为快中断FIQ设置了一个FIQ模式, 并为这个模式配置了较多的私有寄存器, 从而可使中断服务程序有足够的寄存
器来使用,而不必与被中断服务程序使用 同一组寄存器,这样就免去了因寄存器冲 突而必需的保护及恢复现场工作。
(2)ARM把FIQ的中断向量放在了中断 (异常)向量表末尾0X0000001C处,因此 它后面没有其它中断向量,允许用户将中 断服务车工许程序直接放在这里。
除了外部设备可以发出可以发出中断 请求之后,处理器内部也会有一些事件可 以发出中断请求,例如读取指令出错或在 进行除法运算时除数为零等。为了与外部 事件引起的中断相区别,人们把这种由内 部事件引起的中断叫做异常。
7.1.2
中断请求信号的屏蔽
处理器中用来屏蔽中断的积存器和开 关如下:
1、可屏ห้องสมุดไป่ตู้中断
1、低端和高端向量表
ARM有低端和高端两种向量表,用户可 以根据需要选用其中一种,如下所示:
ARM中断(异常)的各个向量在向量表 中的分配如下:
中断(异常) 复位(RESET) 未定义指令(UNDEF) 向量在低端向量表的地址 0x00000000 0x00000004 向量在高端向量表的地址 0xFFFF0000 0xFFFF0004
一般情况下,这个优先排队机构可能 在处理器中有一套,在中断控制器中也有 一套,甚至在借口电路中也会有一套。
(2)软件实现方法
就是把所有中断源的中断请求信号分 成两路,其中一路经“或”逻辑送到处理 器的中断请求输入端,而另一路则送入中 断接口电路经数据总线送入处理器。
中断源的软件查询法电路的接线如下 图所示:
异常/中断 复位(RESET) 未定义指令(UNDEF) 软中断(SWI) 地址 LR LR 说明 指向未定义指令的下一条指令 指向SWI指令的下一条指令
山东科技大学嵌入式系统设计作业习题
《嵌入式系统设计》作业习题第一章:嵌入式系统概述1 .和PC系统机相比嵌入式系统不具备以下哪个特点(C)。
A、系统内核小B、专用性强C、可执行多任务D、系统精简2 .嵌入式系统有硬件和软件部分构成,以下(C)不属于嵌入式系统软件。
A.系统软件B.驱动C.FPGA编程软件D.嵌入式中间件3 .以下哪个不是嵌入式系统设计的主要目标?(D)A低成本B低功耗C实时要求高D超高性能4 .下面哪个系统不属于嵌入式系统(C)A、MP3播放器B、GPS接收机C、“银河”巨型计算机D、“银河玉衡”核心路由器5 .下面关于哈佛结构描述正确的是(A)A程序存储空间与数据存储空间分离B存储空间与IO空间分离C程序存储空间与数据存储空间合并D存储空间与IO空间合并6 .嵌入式操作系统的主要目标并不包括(A)A强大多任务支持B实时处理能力C代码体积D与硬件的交互能力7 .以下属于嵌入式操作系统的是(BC)A、LinUX操作系统B、μC∕0S∙ll操作系统C、VXWorkS操作系统D、UbUntU操作系统8 .嵌入式系统的基本定义为:以O中心,以()为基础,O可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗严格要求的O系统。
应用计算机技术软硬件专用计算机9 .以MCU为核心的嵌入式产品至少应包括(BCD)A、显示部分B、输入部分C、输出部分D、通信部分10、一般而言,嵌入式系统的构架可以分为4个部分:分别是(处理器)、存储器、输入/输出和软件,一般软件亦分为操作系统相关和(应用软件)两个主要部分。
第二章:STM32微控制器概述LCorteX-M处理器采用的架构是(D)(A)v4T(B)v5TE(C)v6(D)v72 .Cortex-M3的提供的流水线是(B)(A)2级(B)3级(C)5级(D)8级3 .Cortex-M3系列处理器支持Thumb-2指令集。
(对)4.STM32系歹IJMCU在使用电池供电时,提供3.3~5V的低电压工作能力。
408中计算机组成原理选择题各章节分
408中计算机组成原理选择题各章节分408中计算机组成原理是一门重要的课程,它涵盖了计算机组成原理的各个方面。
在这门课程中,选择题是一种常见的考试形式,它能够帮助学生巩固知识,提高解题能力。
下面将对408中计算机组成原理选择题的各章节进行分析。
第一章:计算机系统概述。
这一章主要介绍了计算机系统的基本概念和组成部分。
选择题主要涉及计算机的发展历程、计算机的基本组成和计算机的性能指标等内容。
第二章:数据的表示和运算。
这一章主要介绍了计算机中数据的表示方式和运算方法。
选择题主要涉及二进制数的表示和转换、定点数和浮点数的表示和运算等内容。
第三章:存储器。
这一章主要介绍了计算机中的存储器的种类和组织方式。
选择题主要涉及存储器的层次结构、存储器的访问方式和存储器的容量等内容。
第四章:指令系统。
这一章主要介绍了计算机中的指令系统的设计和实现。
选择题主要涉及指令的格式和编码、指令的执行过程和指令的寻址方式等内容。
第五章:中央处理器。
这一章主要介绍了计算机中的中央处理器的结构和功能。
选择题主要涉及中央处理器的组成和工作原理、中央处理器的时序控制和数据通路设计等内容。
第六章:总线。
这一章主要介绍了计算机中的总线的种类和工作原理。
选择题主要涉及总线的分类和特点、总线的传输方式和总线的控制方式等内容。
第七章:输入输出系统。
这一章主要介绍了计算机中的输入输出系统的组成和工作原理。
选择题主要涉及输入输出设备的分类和特点、输入输出接口的设计和输入输出控制方式等内容。
第八章:中断和异常处理。
这一章主要介绍了计算机中的中断和异常处理的机制和方法。
选择题主要涉及中断的分类和处理过程、异常的产生和处理方式等内容。
通过对408中计算机组成原理选择题的各章节进行分析,我们可以看出,这门课程的内容非常丰富,涵盖了计算机组成原理的各个方面。
选择题能够帮助学生巩固知识,提高解题能力。
因此,学生在学习这门课程时,应该注重理论知识的学习,同时也要多做选择题,加强对知识的理解和应用能力。
操作系统答案(考试重点题目答案)
1.2 操作系统以什么方式组织用户使用计算机?答:操作系统以进程的方式组织用户使用计算机。
用户所需完成的各种任务必须由相应的程序来表达出来。
为了实现用户的任务,必须让相应功能的程序执行。
而进程就是指程序的运行,操作系统的进程调度程序决定CPU在各进程间的切换。
操作系统为用户提供进程创建和结束等的系统调用功能,使用户能够创建新进程。
操作系统在初始化后,会为每个可能的系统用户创建第一个用户进程,用户的其他进程则可以由母进程通过“进程创建”系统调用进行创建。
1.4 早期监督程序(Monitor)的功能是什么?答:早期监督程序的功能是代替系统操作员的部分工作,自动控制作业的运行。
监督程序首先把第一道作业调入主存,并启动该作业。
运行结束后,再把下一道作业调入主存启动运行。
它如同一个系统操作员,负责批作业的I/O,并自动根据作业控制说明书以单道串行的方式控制作业运行,同时在程序运行过程中通过提供各种系统调用,控制使用计算机资源。
1.7 试述多道程序设计技术的基本思想。
为什么采用多道程序设计技术可以提高资源利用率?答:多道程序设计技术的基本思想是,在主存同时保持多道程序,主机以交替的方式同时处理多道程序。
从宏观上看,主机内同时保持和处理若干道已开始运行但尚未结束的程序。
从微观上看,某一时刻处理机只运行某道程序。
可以提高资源利用率的原因:由于任何一道作业的运行总是交替地串行使用CPU、外设等资源,即使用一段时间的CPU,然后使用一段时间的I/O设备,由于采用多道程序设计技术,加之对多道程序实施合理的运行调度,则可以实现CPU和I/O设备的高度并行,可以大大提高CPU与外设的利用率。
1.8 什么是分时系统?其主要特征是什么?适用于哪些应用?答:分时系统是以多道程序设计技术为基础的交互式系统,在此系统中,一台计算机与多台终端相连接,用户通过各自的终端和终端命令以交互的方式使用计算机系统。
每个用户都感觉到好像是自己在独占计算机系统,而在系统内部则由操作系统以时间片轮转的方式负责协调多个用户分享CPU。
计算机操作系统---第7章 操作系统接口
命令接口包括:联机用户接口和脱机用户接口
终端用户利用该 接口可以调用操 作系统的功能, 取得操作系统 的服务。
专为批处理 作 业的用户提 供 的。(批处 理 用户接口)
7.1.1 联机用户接口
也称联机命令接口。 分类:字符显示式用户界面;图形化用 户界面
命令 语言 命令行方 式和批命 令方式
中断和异常的区别如下(2): •异常是由处理器正在执行现行指
令而引起的,一条指令执行期间允 许响应异常,异常处理程序提供的 服务是为当前进程所用的。 异常又分为出错和陷入。
出错和陷入的区别如下: •它们发生时保存的返回指令地址 不同,出错保存指向触发异常的那 条指令,而陷入保存指向触发异常 的那条指令的下一条指令。 •从异常返回时,出错会重新执行 那条指令,而陷入就不会重新执行 那条指令。如缺页异常是一种出错, 而陷入主要应用在调试中。
首先,将处理机状态由用户态转为系统态 其次,是分析系统调用类型,转入相应的系 统调用处理程序 在系统调用处理子程序执行完后,应恢复 被中断的或设置新进程的CPU现场,然后 返回被中断进程或新进程,继续往下执行
4.系统调用处理子程序的处理过程
7.4
UNIX系统调用
7.4.1 UNIX系统调用的类型
在程序设计语言(如C语言)中,往往 提供与各系统调用对应的库函数, 应用程序可通过对应的库函数来使 用系统调用, 库函数的目的是隐藏访管指令细节, 使系统调用更象过程调用,但一般 地说,库函数属于用户程序而非系 统程序。
操作系统为用户提供系统调用 也出于安全和效率考虑,使得 用户态程序不能自由地访问内 核关键数据结构或直接访问硬 件资源。
1.命令行方式:Command arg1 arg2…argn
中断机制和中断描述符表、中断和异常的处理
中断机制和中断描述符表、中断和异常的处理注:本分类下⽂章⼤多整理⾃《深⼊分析linux内核源代码》⼀书,另有参考其他⼀些资料如《linux内核完全剖析》、《linux c 编程⼀站式学习》等,只是为了更好地理清系统编程和⽹络编程中的⼀些概念性问题,并没有深⼊地阅读分析源码,我也是草草翻过这本书,请有兴趣的朋友⾃⼰参考相关资料。
此书出版较早,分析的版本为2.4.16,故出现的⼀些概念可能跟最新版本内核不同。
此书已经开源,阅读地址1、中断向量Intel x86 系列微机共⽀持256 种向量中断,为使处理器较容易地识别每种中断源,将它们从0~255 编号,即赋予⼀个中断类型码 n,Intel 把这个8 位的⽆符号整数叫做⼀个向量,因此,也叫中断向量。
所有256 种中断可分为两⼤类:异常和中断。
异常⼜分为故障(Fault)、陷阱(Trap)和夭折(Abort),它们的共同特点是既不使⽤中断控制器,⼜不能被屏蔽。
中断⼜分为外部可屏蔽中断(INTR)和外部⾮屏蔽中断(NMI),所有I/O 设备产⽣的中断请求(IRQ)均引起屏蔽中断,⽽紧急的事件(如硬件故障)引起的故障产⽣⾮屏蔽中断。
⾮屏蔽中断的向量和异常的向量是固定的,⽽屏蔽中断的向量可以通过对中断控制器的编程来改变。
Linux 对256 个向量的分配如下。
• 从0~31 的向量对应于异常和⾮屏蔽中断。
• 从32~47 的向量(即由I/O 设备引起的中断)分配给屏蔽中断。
• 剩余的从48~255 的向量⽤来标识软中断。
Linux 只⽤了其中的⼀个(即128 或0x80向量)⽤来实现系统调⽤。
当⽤户态下的进程执⾏⼀条int 0x80 汇编指令时,CPU 就切换到内核态,并开始执⾏system_call() 内核函数。
2、外设可屏蔽中断、异常及⾮屏蔽中断Intel x86 通过两⽚中断控制器8259A 来响应15 个外中断源,每个8259A 可管理8 个中断源。
武汉理工通信原理课件第七章 中断和异常
外部中断(硬中断) 2,外部中断(硬中断) 指外部芯片通过 CPU的INTR引脚或NMI引脚 CPU的INTR引脚或NMI引脚 发出中断申请引起的中断. 发出中断申请引起的中断.
CPU执行流程 执行流程
中断事件1 中断事件 中断服务程序1 中断服务程序
中断事件 2 中断服务程序 2
二,中断源和中断优先权
引起中断的因素很多, 引起中断的因素很多, 将发出中断申请的外设或内部的原因, 将发出中断申请的外设或内部的原因,称为中断源 给每个中断源指定一个优先权, 给每个中断源指定一个优先权,称为中断优先权 当多个中断源同时发出中断请求时, 当多个中断源同时发出中断请求时, CPU按照中断优先权的高低顺序,依次响应. CPU按照中断优先权的高低顺序,依次响应.
当INTR上有高电平信号 INTR上有高电平信号 当NMI上有上升沿信号 NMI上有上升沿信号
8 0 8 8
可屏蔽中断
由INTR引脚引起的中断,称可屏蔽中断. INTR引脚引起的中断, 可屏蔽中断. CPU是否响应INTR引脚上的中断请求取决于IF标志: CPU是否响应INTR引脚上的中断请求取决于IF标志: IF=1 CPU响应INTR引脚上的中断请求 IF=1,CPU响应INTR引脚上的中断请求 IF=0 CPU不响应INTR引脚上的中断请求 IF=0,CPU不响应INTR引脚上的中断请求 即当IF=0 即当IF=0时,将INTR引脚上的中断申请屏蔽. INTR引脚上的中断申请屏蔽.
最大组态(最小组态) 最大组态(最小组态) GND A14 A13 A12 A11 A10 A9 A8 AD7 AD6 AD5 AD4 AD3 AD2 AD1 AD0 NMI INTR CLK GND VCC A15 A16/S3 A17/S4 A18/S5 A19/S6 (HIGH)(SSO) MN/MX RD RQ/GT0(HOLD) RQ/GT1(HLDA) LOCK(WR) S2(IO/M) S1(DT/R) S0(DEN) QS0(ALE) QS1(INTA) TEST READY RESET
PLC中断与异常
PLC中断与异常PLC(可编程逻辑控制器)是自动化控制领域常用的设备,也是工业生产自动化程度不断提高的重要工具之一。
PLC的主要作用是对各种输入信号(如开关量、模拟量等)进行采集、处理,再根据设定的各种输出条件(比如控制电机运转、开关灯光等)来控制各种工业设备的运作。
然而,即使是最先进的PLC设备也难以完全避免中断和异常,下面我们从PLC中断和异常这两个方面来进行分析。
一、PLC中断1.什么是PLC中断PLC中断是指由于外部事件的发生,导致原来正在被执行的程序需要暂时中断执行,去处理其他事件,等处理完这个事件后,再回到原来的执行点继续执行。
在传统的计算机中,系统中断通常是由外设驱动产生的,但在PLC中,大多数中断都是由PLC自身的输出信号直接产生的。
这些输出信号一般会触发PLC内部的中断处理程序,从而引发PLC中断。
2.PLC中断类型(1)I/O中断I/O中断是PLC中最常见的中断类型,它是由PLC的输入/输出模块所控制的。
当外部程序的输入信号发生变化时,输入模块会向PLC发送一个中断请求信号,PLC则会在当前的程序执行点上停下来,并跳转到中断服务程序,以完成相关的中断处理操作。
(2)定时器/计数器中断为保证PLC所执行的程序能够满足实时性要求,很多PLC设备都内置了定时器/计数器。
这些定时器/计数器通常会在PLC运行的同时计时/计数,当计时时间达到设定值时,会向PLC发送中断请求信号,引发PLC中断。
(3)总线中断当PLC通过网络(如CAN总线、以太网等)连接到其他设备上时,发生在其他设备上的事件也可能会导致PLC中断。
比如当某个节点失联时,周围节点会发送一个“节点失联”信息帧,PLC 就会收到这个信息,判断该事件为中断请求,并按照相应的中断处理程序进行处理。
二、PLC异常1.什么是PLC异常在PLC系统中,除了中断外,还存在一些异常。
与中断不同的是,异常通常是源于PLC本身的一些内部问题,如错误的PLC程序设计、PLC硬件故障、传感器故障等。
【哈工程】计算机硬件技术基础--10硬基第7章中断
(二)中断标志
1、中断允许标志 在CPU的标志寄存器中的IF标志。表示是否可以响应 外设的中断请求。通常用1来表示允许。 2、中断请求标志 对应每个外设有一位,用来纪录外设的中断请求状态。 有请求时置1,中断处理完后清0。 在PC机中,用8259A来管理外设的中断请求,而在 8051系列的单片机中,该标志也在CPU内部。
栈弹出
26
第二节 8086/8088的中断结构
在8086/8088系统中提 供了256种中断类型的 结构,用1个字节进行编 码称为中断类型码;每 个中断类型对应于4个字 节的程序入口地址称为 中断向量;256个中断 向量存放在内存最开始 的1KB的中断向量表中。
00000H
┇ 003FFH ┇
27
11
(三)中断屏蔽
有些硬件中断源的请求可以根据IF标志决定是否响应, 而有些硬件中断源的请求需要一定被响应。 在8086/8088系统中,INTR是可屏蔽中断请求引脚; NMI是不可屏蔽的中断请求引脚。 在PC机系统中,通过8259A管理的外设中断源连在 CPU的INTR引脚上。在8259A内部有8位的中断申请寄存 器和8位的中断屏蔽寄存器,可以对应于8个外设的中断申 请和中断屏蔽。
3
二、中断的定义:
中断定义: CPU执行程序时,由于发生了某种随机的事件(外 部或内部),引起CPU暂时中断正在运行的程序,转去 执行一段特殊的服务程序(称为中断服务程序或中断处 理程序),以处理该事件,该事件处理完后又返回被中 断的程序继续执行,这一过程称为中断。 中断请求:外设的硬件和系统软件指令的软件 中断请求。
17
中断源识别
软件查询法
中断矢量法。 由中断源提供中断类型号,CPU根据 类型确定中断源。
第7章作业参考答案
1.13 80X86系统中,用来确定硬件中断服务程序的入口地址的 系统中, 系统中 是 。 (C) ) A.主程序中的调用指令 主程序中的调用指令 B.主程序中的转移指令 主程序中的转移指令 C.中断控制器发出的类型码 中断控制器发出的类型码 D.中断控制器中的中断服务寄存器 中断控制器中的中断服务寄存器ISR 中断控制器中的中断服务寄存器 1.14 CPU通常在 时响应中断。 通常在 时响应中断。 (D) ) A. 取指周期结束 B. 外设提出中断申请 C. INTR为高电平 为高电平 D. 一条指令结束 1.15 80X86系统中, IRET指令执行的出栈恢复操作不包括断 系统中, IRET指令执行的出栈恢复操作不包括断 系统中 点处的 。 (B) ) A. CS B. SS C. FLAGS D. IP
第7章作业参考答案 章作业参考答案
一、单选题:将正确答案的序号填入 单选题: 上 。 1.1 在PC/XT微机中,NMI中断的中断向量在中断向量表中的 微机中, 微机中 中断的中断向量在中断向量表中的 。(C) 位置是 。( ) A. 由程序指定的 B. 由DOS自动分配的 自动分配的 C. 固定在 固定在0008H开始的 个字节中 开始的4个字节中 开始的 D. 固定在中断向量表的表首 1.2 如果有多个中断同时发生,系统将根据中断优先级响应优 如果有多个中断同时发生, 先级最高的中断请求。若要调整中断事件的响应顺序, 先级最高的中断请求。若要调整中断事件的响应顺序,可以利 。 (B) ) 用 A. 中断响应 A. NMI B. 中断屏蔽 B. INTR C. 中断向量 D. 中断嵌套 。(C) 。( ) D. 单步中断 1 1.3 8086对下列中断优先级响应最高的请求是 对下列中断优先级响应最高的请求是 C. 内部软件中断
计算机原理第七章8259
8259的初始化命令字ICW2
ICW2是中断类型码初始化命令字,A0=1,跟在ICW1后表示对 ICW2编程。
ICW2设置中断类型码; 中断类型码高5位来自ICW2高5位,低3位对应IR0~IR7。
17
8259的初始化命令字ICW3
ICW3是标志主片/从片的初始化命令字,只有当SNGL=0时,跟 在ICW2后面出现,对其设置应使A0=1;
连接系统总线方式
缓冲方式 在多片8259级连的大系统中,8259通过总线驱动器和数据总线相 连; 使用8259的SP#/EN#作为总线驱动器的使能信号;
非缓冲方式 8259的SP#/EN#作为输入; 单片使用时, SP#/EN#接高电平;多片时,主片SP#/EN#接高电 平,从片SP#/EN#接低电平;
操作命令字可在任何时候写入8259A ,且无顺序。
OCW1为中断屏蔽操作命令字; A0=1 表示设置OCW1; Mi=1 表示屏蔽IRi输入中断请求;
28
8259的操作命令字OCW2
ቤተ መጻሕፍቲ ባይዱ
OCW2用来设置优先级循环方式和中断结束方式; A0=0,且D4D3 = 00,表示对OCW2编程; R,优先级循环状态 R=1优先级自动循环;R=0优先级不循环; EOI 中断结束命令位,非自动结束方式时清ISn; SL 设定标志。 SL=1,由L2、L1、L0指明中断号或最低优先权; SL=0,则L2、L1、L0无效;
29
设置优先级方式
优先级自动循环方式 一般用在系统中多个中断源优先级相等的场合; 优先级是变化的,一个设备收到中断服务后,它的优先级自 动降为最低; 初始优先级为IR0-IR7;
优先级特殊循环方式 最低优先级由初始编程设置;
30
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
处理器中用来屏蔽中断的积存器和开 关如下: 关如下:
1、可屏蔽中断 人们把带有开关, 人们把带有开关,能阻止中断请求的 中断输入端叫做可屏蔽中断信号输入端。 中断输入端叫做可屏蔽中断信号输入端。 这类中断叫可屏蔽中断。 这类中断叫可屏蔽中断。 2、非屏蔽中断 人们把不带开关, 人们把不带开关,不能阻止中断请求 的中断输入端叫做非屏蔽中断信号输入端。 的中断输入端叫做非屏蔽中断信号输入端。 这类中断叫屏蔽中断。 这类中断叫屏蔽中断。
第7 章
中断和异常
本章重要内容 1、中断和异常的基本概念 2、中断(异常)服务程序的年结构 中断(异常) 3、处理器响应与处理中断(异常)的过 处理器响应与处理中断(异常) 程 4、ARM的中断系统 ARM的中断系统
7.1
中断和异常的基本概念
中断是主机与外设进行数据通信的重 要机制, 要机制,它负责处理处理器外部的异常事 异常实质上也是一种中断, 件;异常实质上也是一种中断,只不过它 主要负责处理处理器内部事件。 主要负责处理处理器内部事件。 7.1.1 中断和异常 1、什么叫中断
1、调用方法 是在处理器收到中断中断请求之后, 是在处理器收到中断中断请求之后, 由中断系统硬件执行一条子程序调用指令 来调用中断服务程序。 来调用中断服务程序。 2、转移方法 是由中断系统硬件执行一条转移指令 来转向中断服务程序。 来转向中断服务程序。
但是,不管哪种方法, 但是,不管哪种方法,有一点是共同 的,即它们最终都需要获得中断服务程序 首地址——中断向量。 中断向量。 首地址 中断向量 所有的中断向量都必须存放在一个固 定的存储区域, 定的存储区域,这个集中存放了中断向量 或与中断向量相关信息的存储区域就叫做 中断向量表。 中断向量表。 一种中断处理硬件系统示意图如下: 一种中断处理硬件系统示意图如下:
处理器在响应中断源2的中断时, 处理器在响应中断源2的中断时,其程 序流程如下: 序流程如下:
7.1.6
中断的处理过程
1、处理器响应中断的条件 处理器响应中断的条件主要有以下几 个: (1)处理器程序状态寄存器的中断屏蔽 标志处于非屏蔽状态。 标志处于非屏蔽状态。 (2)没有更高级的中断中断请求正在响 应或正在发出、挂起。 应或正在发出、挂起。
为了减少中断延迟,ARM在普通中断 为了减少中断延迟,ARM在普通中断 IRQ的基础上又增加了一个快中断FIQ, 的基础上又增加了一个快中断FIQ IRQ的基础上又增加了一个快中断FIQ,以 处理有快速要求的外设的中断。 处理有快速要求的外设的中断。 为减少延时,ARM在快中断中采取了 为减少延时,ARM在快中断中采取了 两个措施: 两个措施: 专门为快中断FIQ设置了一个FIQ模式, FIQ设置了一个FIQ模式 (1)专门为快中断FIQ设置了一个FIQ模式, 并为这个模式配置了较多的私有寄存器, 并为这个模式配置了较多的私有寄存器, 从而可使中断服务程序有足够的寄存
为了与普通子程序的首地址进行区分, 为了与普通子程序的首地址进行区分, 中断服务程序的首地址 通常被叫做中断向 或中断矢量。 量,或中断矢量。 以后还会看到, 以后还会看到,凡是能直接或间接指 向中断服务程序的都叫中断向量。 向中断服务程序的都叫中断向量。 各种处理器如何来调用中断服务子程 序的方法不尽相同,通常有两种方法。 序的方法不尽相同,通常有两种方法。 调用方法和转移方法。 调用方法和转移方法。
(2)软件实现方法 就是把所有中断源的中断请求信号分 成两路,其中一路经“ 成两路,其中一路经“或”逻辑送到处理 器的中断请求输入端, 器的中断请求输入端,而另一路则送入中 断接口电路经数据总线送入处理器。 断接口电路经数据总线送入处理器。 中断源的软件查询法电路的接线如下 图所示: 图所示:
软件查询法的中断服务程序的流程如下: 软件查询法的中断服务程序的流程如下:
ARM有低端和高端两种向量表, ARM有低端和高端两种向量表,用户可 有低端和高端两种向量表 以根据需要选用其中一种,如下所示: 以根据需要选用其中一种,如下所示:
ARM中断(异常) ARM中断(异常)的各个向量在向量表 中断 中的分配如下: 中的分配如下:
中断(异常) 中断(异常) 复位(RESET) 复位(RESET) 未定义指令(UNDEF) 未定义指令(UNDEF) 软中断(SWI) 软中断(SWI) 预取指令中止(PABT) 预取指令中止(PABT) 数据中止(DABT) 数据中止(DABT) 保留 中断(IRQ) 中断(IRQ) 快中断(FIQ) 快中断(FIQ) 向量在低端向量表的地址 0x00000000 0x00000004 0x00000008 0x0000000C 0x00000010 0x00000014 0x00000018 0x0000001C 向量在高端向量表的地址 0xFFFF0000 0xFFFF0004 0xFFFF0008 0xFFFF000C 0xFFFF0010 0xFFFF0014 0xFFFF0018 0xFFFF001C
个电信号(脉冲或电平) 个电信号(脉冲或电平)来表示有事件需 要处理器来处理。 要处理器来处理。这个信号叫做中断请求 信号,或称中断请求。 信号,或称中断请求。 3、什么叫中断源 发出中断请求信号的外部设备或事件 就叫做中断源。 就叫做中断源。 4、什么叫异常
除了外部设备可以发出可以发出中断 请求之后, 请求之后,处理器内部也会有一些事件可 以发出中断请求, 以发出中断请求,例如读取指令出错或在 进行除法运算时除数为零等。 进行除法运算时除数为零等。为了与外部 事件引起的中断相区别, 事件引起的中断相区别,人们把这种由内 部事件引起的中断叫做异常。 部事件引起的中断叫做异常。 7.1.2 中断请求信号的屏蔽
器来使用, 器来使用,而不必与被中断服务程序使用 同一组寄存器, 同一组寄存器,这样就免去了因寄存器冲 突而必需的保护及恢复现场工作。 突而必需的保护及恢复现场工作。 (2)ARM把FIQ的中断向量放在了中断 ARM把FIQ的中断向量放在了中断 异常)向量表末尾0X0000001C 0X0000001C处 (异常)向量表末尾0X0000001C处,因此 它后面没有其它中断向量, 它后面没有其它中断向量,允许用户将中 断服务车工许程序直接放在这里。 断服务车工许程序直接放在这里。 2、复位中断
当处理器遇有外部设备发生“ 当处理器遇有外部设备发生“紧急事 需要它来处理时,它就必须停下“ 件”需要它来处理时,它就必须停下“手 头上的工作”先去处理这个“紧急事件” 头上的工作”先去处理这个“紧急事件”。 处理器的这种工作过程, 处理器的这种工作过程,或者这种工作状 态就叫做中断。 态就叫做中断。 2、什么叫中断请求 当外部设备有紧急事件需要处理器进 行处理时, 行处理时,外部设备必须向处理器发送一
(1)硬件实现方法 就是为计算机系统配备一套能按优先 等级对中断源进行排队的硬件电路, 等级对中断源进行排队的硬件电路,以保 证级别高的中断能先于级别低的中断被处 理器响应。 理器响应。 一般情况下, 一般情况下,这个优先排队机构可能 在处理器中有一套, 在处理器中有一套,在中断控制器中也有 一套,甚至在借口电路中也会有一套。 一套,甚至在借口电路中也会有一套。
2、中断嵌套
7.1.4
中断服务程序
用来处理中断事件的程序叫做中断服 务程序。 务程序。 中断服务程序的一般结构如下所示: 中断服务程序的一般结构如下所示:
中断服务程序与普通子程序的重要差 别在于: 别在于: 中断服务程序要对中断嵌套进行必要 的管理。既中断服务程序要根据需要, 的管理。既中断服务程序要根据需要,对 程序状态寄存器中的中断允许标志进行相 应的设置。 应的设置。 7.1.5 中断向量和中断向量表
为了对处理器可以接收中断源的数目 进行扩充及对中断进行必要的管理, 进行扩充及对中断进行必要的管理,在中 断源和处理器之间还配有如下图所示的中 断控制器。 断控制器。
7.1.3
中断优先级及中断嵌套
1、中断优先级 处理器通常只有一个可屏蔽中断请求 输入端。对于具有多个中断源的系统来说, 输入端。对于具有多个中断源的系统来说, 当有两个或两个以上中断源同时发生中断 请求时就会出现所谓的竞争。 请求时就会出现所谓的竞争。 具体实现方法有两种: 具体实现方法有两种:硬件实现方法 和软件实现方法。 和软件实现方法。
I=1表示禁止IRQ中断;F=1表示禁止FIQ中断。 I=1表示禁止IRQ中断;F=1表示禁止FIQ中断。 表示禁止IRQ中断 表示禁止FIQ中断 禁止的异常/ I位值 F位值 禁止的异常/中断 中断优先级 复位(RESET) 1 1 复位(RESET)中断 1 未定义指令(UNDEF) 1 未定义指令(UNDEF)异常 6 软中断(SWI) 1 软中断(SWI) 6 预取指令中止(PABT) 1 预取指令中止(PABT)异常 5 数据中止(DABT) 1 数据中止(DABT)异常 2 中断(IRQ) 1 中断(IRQ) 4 快中断(FIQ) 1 1 快中断(FIQ) 1
R13!,{R0,R4;压入堆栈 STMFD R13!,{R0,R4-R12,LR} ;压入堆栈 用下面的指令将现场数据弹出: 用下面的指令将现场数据弹出: R13!,{R0,R4;压入堆栈 LDMFD R13!,{R0,R4-R12,PC} ;压入堆栈 这种压栈和出栈操作都比较费时,它 这种压栈和出栈操作都比较费时, 们增加了中断处理的延迟时间。另外, 们增加了中断处理的延迟时间。另外,由 于处理器在响应一个IRQ IRQ中断后要经历两 于处理器在响应一个IRQ中断后要经历两 次跳转才能转到中断服务程序, 次跳转才能转到中断服务程序,因此也增 加了一些延时。 加了一些延时。
处理器在响应中断(异常后),可以 处理器在响应中断(异常后),可以 ), 通过两次跳转转移到中断(异常) 通过两次跳转转移到中断(异常)服务程 两次跳转的示意图如下: 序。两次跳转的示意图如下:
2、中断(异常)向量表的保留项 中断(异常) 在实际应用系统中, 在实际应用系统中,常常会需要多个 中断(异常)向量表, 中断(异常)向量表,这时就需要利用这 个保留项中数据来对这多个向量表进行区 别。 ARM中断 异常) 中断( 7.2.2 ARM中断(异常)的管理 ARM按事件的紧急程度为每个中断 ARM按事件的紧急程度为每个中断 异常)都定义了一个固定的优先级别。 (异常)都定义了一个固定的优先级别。