中断与中断向量、硬件中断与软件中断、可屏蔽中断与不可屏蔽中断(转)

转载url:http://blog.sina.com.cn/s/blog_553fab3b0100y1sa.html

■看图理解:硬件中断与软件中断(内部中断与外部中断)

1、8086/8088CPU可以处理256种不同类型的中断,每一种中断都给定一个编号(0~255),称为中断类型号,CPU根据中断类型号来识别不同的中断源;

2、中断类型号0~4已有固定对应对象(例如0=除法错误等),中断类型号5~31保留给BIOS;

3、可屏蔽中断请求信号从INTR引脚送往CPU,高电平有效,受IF标志位屏蔽。IF=0时,对于所有从INTR引脚进入的中断请求,CPU均不予响应;若IF=1,则CPU在当前指令周期的最后一个T状态去采样INTR引脚,若有效,CPU将执行两个连续的中断响应周期(送出两个中断响应信号-INTA)对INTR上的中断请求予以响应。在第一响应周期,CPU将地址及数据总线置高阻,并通过-INTA上的负脉冲通知外设中断响应已启动以便在下一响应周期提供中断类型号;在第二响应周期,外设向数据总线输送一个字节的中断类型号,CPU读入后,就可在中断向量表中找到该类型号的中断服务程序的入口地址,转入中断处理。

4、由NMI引脚引入的非屏蔽中断的请求信号是上升沿触发的,中断类型号固定为2,不受IF标志位的屏蔽,一旦出现,CPU立即予以响应;

5、对于非屏蔽中断和软件中断,其中断类型号由CPU内部自动提供,不需去执行中断响应周期读取中断类型号。

6、软件中断也不受IF标志位的屏蔽。


■中断向量表
1、中断向量表是存放中断向量的一个特定的内存区域。中断向量就是中断服务程序的入口地址。对于8086/8088系统,所有中断服务程序的入口地址都存放在中断向量表中。
2、8086/8088可以处理256种中断,每种中断对应一个中断类型号,每个中断类型号与一个中断服务程序的入口地址相对应。每个中断服务程序的入口地址占4个存储单元,其中低地址的两个单元存放中断服务程序入口地址的偏移量(IP);高地址的两个单元存放中断服务程序入口地址的段地址(CS)。256个中断向量要占256×4=1024个单元,即中断向量表长度为1K个单元。8086/8088系统的中断向量表位于内存的前1K字节,地址范围为00000H~003FFH。

■清楚中断、中断服务程序、中断类型码、中断向量(中断服务程序入口地址)、中断向量表的概念

■清楚8259的作用,中断类型码、中断向量(中断服务程序入口地址)与中断向量表的关系

注:最后地址应该是003FFH.

时间: 2024-11-08 21:41:51

中断与中断向量、硬件中断与软件中断、可屏蔽中断与不可屏蔽中断(转)的相关文章

硬件中断和软件中断以及中断与函数调用的区别

<汇编语言程序设计>Richard Blum著:6.2.3中断   中断有两种形式: (1)硬件中断: (2)软件中断.   硬件设备生成硬件中断. 使用硬件中断发出信号,表示硬件层发生的事件(比如I/O端口接收到输入信号时).   程序生成软件中断. 它们是把控制交给另一个程序的信号.   当一个程序被中断调用时,发出调用的程序暂停,被调用的程序接替它运行.指令指针被转移到被调用的程序,并且从被调用的程序内继续执行.被调用的程序完成时,它可以把控制返回给发出调用的程序(使用中断返回指令).

内核中断号必须要跟硬件中断号一致吗

首先说明,答案是否定的,内核中断号可以与硬件中断号不一致,但是这是个无聊的问题..实用价值不大.但是却可以引起对内核软件中断号与硬件中断号关系的思考. 两者的关系我觉得可以从中断的初始化和分发过程来一探究竟. 这里就从ARM PPC MIPS 3款主流嵌入式处理器架构的内核代码框架中来分析下他们中断的初始化和分发过程. 一 中断的初始化 对于中断初始化,在系统启动过程中,这3款处理器架构的内核软件框架中都会有相应的中断初始化函数. 内核启动函数start_kernel中会调用init_IRQ来进

内核中断号必需要跟硬件中断号一致吗

首先说明.答案是否定的,内核中断号能够与硬件中断号不一致.可是这是个无聊的问题.. 有用价值不大.可是却能够引起对内核软件中断号与硬件中断号关系的思考. 两者的关系我认为能够从中断的初始化和分发过程来一探到底. 这里就从ARM PPC MIPS 3款主流嵌入式处理器架构的内核代码框架中来分析下他们中断的初始化和分发过程. 一 中断的初始化 对于中断初始化,在系统启动过程中,这3款处理器架构的内核软件框架中都会有对应的中断初始化函数. 内核启动函数start_kernel中会调用init_IRQ来

Linux 多核下绑定硬件中断到不同 CPU

硬件中断发生频繁,是件很消耗 CPU 资源的事情,在多核 CPU 条件下如果有办法把大量硬件中断分配给不同的 CPU (core) 处理显然能很好的平衡性能.现在的服务器上动不动就是多 CPU 多核.多网卡.多硬盘,如果能让网卡中断独占1个 CPU (core).磁盘 IO 中断独占1个 CPU 的话将会大大减轻单一 CPU 的负担.提高整体处理效率.VPSee 前天收到一位网友的邮件提到了 SMP IRQ Affinity,引发了今天的话题:D,以下操作在 SUN FIre X2100 M2

Linux 多核下绑定硬件中断到不同 CPU(IRQ Affinity) 转

硬件中断发生频繁,是件很消耗 CPU 资源的事情,在多核 CPU 条件下如果有办法把大量硬件中断分配给不同的 CPU (core) 处理显然能很好的平衡性能.现在的服务器上动不动就是多 CPU 多核.多网卡.多硬盘,如果能让网卡中断独占1个 CPU (core).磁盘 IO 中断独占1个 CPU 的话将会大大减轻单一 CPU 的负担.提高整体处理效率.VPSee 前天收到一位网友的邮件提到了 SMP IRQ Affinity,引发了今天的话题:D,以下操作在 SUN FIre X2100 M2

linux中断源码分析 - 中断发生(三)

本文为原创,转载请注明:http://www.cnblogs.com/tolimit/ 回顾 上篇文章linux中断源码分析 - 初始化(二)已经描述了中断描述符表和中断描述符数组的初始化,由于在初始化期间系统关闭了中断(通过设置CPU的EFLAGS寄存器的IF标志位为0),当整个中断和异常的初始化完成后,系统会开启中断(设置CPU的EFLAGS寄存器的IF标志位为1),此时整个系统的中断已经开始可以使用了.本篇文章我们具体研究一次典型中断发生时的运行流程. 中断产生 我们需要先明确一下,中断控

5.分析内核中断运行过程,以及中断3大结构体:irq_desc、irq_chip、irqaction

本节目标:    分析在linux中的中断是如何运行的,以及中断3大结构体:irq_desc.irq_chip.irqaction 在裸板程序中(参考stmdb和ldmia详解): 1.按键按下, 2.cpu发生中断, 3.强制跳到异常向量入口执行(0x18中断地址处) 3.1使用stmdb将寄存器值保存在栈顶(保护现场) stmdb sp!, { r0-r12,lr } 3.2执行中断服务函数 3.3 使用ldmia将栈顶处数据读出到寄存器中,并使pc=lr(恢复现场) ldmia sp!,

信号中断与异步信号中断安全编程

1.什么是中断? 1.1.什么是中断 外围设备的速度远低于CPU的速度,所以为提高CPU计算效率,现代计算机变内核主动为硬件主动,只在硬件需要的时候才发送信号,通知内核来处理数据.这样外围设备与内核的协作方式即为中断机制.而设备发送的信号即为中断,其本质为一种特殊的电信号. 硬中断处理流程: 1.各外围设备与中断管理器各输入引脚相连: 2.中断管理器与CPU之间只存在一条中断管线: 3.设备发送一个中断到中断管理器: 4.中断管理器发送对应电信号给CPU. 5.CPU中断当前工作,开始处理中断,

【CC2530入门教程-03】CC2530的中断系统及外部中断应用

第3课  CC2530的中断系统及外部中断应用 广东职业技术学院  欧浩源 一.中断相关的基础概念  内核与外设之间的主要交互方式有两种:轮询和中断. 轮询的方式貌似公平,但实际工作效率很低,且不能及时响应紧急事件:中断系统使得内核具备了应对突发事件的能力. 在执行CPU当前程序时,由于系统中出现了某种急需处理的情况,CPU暂停正在执行的程序,转而去执行另外一段特殊程序来处理出现的紧急事务,处理结束后,CPU自动返回到原来暂停的程序中去继续执行. 这种程序在执行过程中由于外界的原因而被中间打断的