精华内容
下载资源
问答
  • 内中断外中断的区别

    千次阅读 2019-07-07 16:40:18
    我发现内中断外中断其实区别不是很大,外中断不过是在内中断的前提上多了一个对端口(端口号是60H)的扫描,再来个对比。当扫描码和我预设的中断扫描码相同时,执行中断。当他们的值不同时,就跳出这个中断。 ...

    汇编中的外中断和内中断

    内中断和外中断其实区别不是很大,外中断不过是在进行内中断的一系列操作之前,对外设端口(端口号:60H)进行扫描,再对比获取到的扫描码是否与预先设定的扫描码一致(可以简单的理解为if语句,或者汇编中的cmp指令)。当扫描码和预设的中断扫描码(可以理解为判断语句中的条件)相同时,执行中断。当他们的值不同时,就跳出这个中断。

    展开全文
  • 重要声明: 以下代码有粘贴 截取他人劳动成果的成分 如有雷同 不胜荣幸 如您不能容忍 请不要独自忍受@weChat:iisssssssssii 联系小民 主动删除  中断含义:  ...引起中断的原因或者说发出中断请求的

    重要声明: 以下代码有粘贴 截取他人劳动成果的成分 如有雷同 不胜荣幸 如您不能容忍 请不要独自忍受@weChat:iisssssssssii 联系小民 主动删除       

    中断含义: 

    {

    中断是CPU处理外部突发事件的一个重要技术。它能使CPU在运行过程中对外部事件发出的中断请求及时地进行处理,处理完成后又立即返回断点,继续进行CPU原来的工作。引起中断的原因或者说发出中断请求的来源叫做中断源。

           根据中断源的不同,可以把中断分为硬件中断和软件中断两大类,而硬件中断又可以分为外部中断内部中断两类

    硬件中断:

          外部中断:一般是指由计算机外设发出的中断请求如:键盘中断、打印机中断、定时器中断等。外部中断是可以屏蔽的中断,也是说,利用中断控制器可以屏蔽这些外部设备 的中断请求。

           内部中断:是指因硬件出错(如突然掉电、奇偶校验错等)或运算出错(除数为零、运算溢出、单步中断等)所引起的中断。内部中断是不可屏蔽的中断。 软件中断其实并不是真正的中断,它们只是可被调用执行的一般程

    软件中断:

    其实并不是真正的中断,它们只是可被调用执行的一般程例如:ROM BIOS中的各种外部设备管理中断服务程序(键盘管理中断、显示器管理中断、打印机管理 中断等,)以及DOS的系统功能调用(INT 21H)等都是软件中断

    }

    硬中断、软中断是怎么来的? :Linux 将中断 分为两个部分 

       上半部--》硬中断:完成紧急但很快完成的事 

       下半部:分为软中断、tasklet(当然它也是一种软中断)、工作队列(当然它也是一种软中断) 作用:处理不紧急但比较耗时间的事 

    重要是事:中断下半部的最早执行时间是中断上半部执行完之后 但是中断还没有完全返回之前 比如软中断

    完整过程:

    第一步:参考 http://blog.csdn.net/zqixiao_09/article/details/50927416 略

    第二步:参考 https://www.cnblogs.com/wmx-learn/p/5360269.html#undefined

    第三步:参考 http://blog.csdn.net/zhangskd/article/details/21992933

    第四步: 需要说明的是:

    /*----------------------------------------------**** 巩固 *****------------------------------------------------------*/

    1. 问:对于软中断,I/O操作是否是由内核中的I/O设备驱动程序完成?

    答:对于I/O请求,内核会将这项工作分派给合适的内核驱动程序,这个程序会对I/O进行队列化,以可以稍后处理(通常是磁盘I/O),或如果可能可以立即执行它。通常,当对硬中断进行回应的时候,这个队列会被驱动所处理。当一个I/O请求完成的时候,下一个在队列中的I/O请求就会发送到这个设备上。

    2. 问:软中断所经过的操作流程是比硬中断的少吗?换句话说,对于软中断就是:进程 ->内核中的设备驱动程序;对于硬中断:硬件->CPU->内核中的设备驱动程序?

    答:是的,软中断比硬中断少了一个硬件发送信号的步骤。产生软中断的进程一定是当前正在运行的进程,因此它们不会中断CPU。但是它们会中断调用代码的流程。

    如果硬件需要CPU去做一些事情,那么这个硬件会使CPU中断当前正在运行的代码。而后CPU会将当前正在运行进程的当前状态放到堆栈(stack)中,以至于之后可以返回继续运行。这种中断可以停止一个正在运行的进程;可以停止正处理另一个中断的内核代码;或者可以停止空闲进程。;

    一般硬中断 基本为中断的上半部分,软中断、tasklet、队列是中断的下半部分,将上半部分没有实现完的处理继续执行。

    中断下半部的处理

    对于一个中断,如何划分出上下两部分呢?哪些处理放在上半步,哪些放在下半部?

    这里有一些经验可供借鉴:

    如果一个任务对时间十分敏感,将其放在上半部。

    如果一个任务和硬件有关,将其放在上半部。

    如果一个任务要保证不被其他中断打断,将其放在上半部。

    其他所有任务,考虑放在下半部。

    实现下半部中断的三种机制

    目前使用下面三种方法:

    1.软中断

    2.tasklet

    3.工作队列

    软中断

    软中断是一组静态定义的下半部接口,有 32 个,可以在所有处理器上同时执行,类型相同也可以;在编译时静态注册。

    asmlinkage void do_softirq(void)
    {
        __u32 pending;
        unsigned long flags;
     
        /* 判断是否在中断处理中,如果正在中断处理,就直接返回 */
        if (in_interrupt())
            return;
     
        /* 保存当前寄存器的值 */
        local_irq_save(flags);
     
        /* 取得当前已注册软中断的位图 */
        pending = local_softirq_pending();
     
        /* 循环处理所有已注册的软中断 */
        if (pending)
            __do_softirq();
     
        /* 恢复寄存器的值到中断处理前 */
        local_irq_restore(flags);
    }

    代码之中第一次就判断是否在中断处理中,如果在立刻退出函数。这说明了什么?说明了如果有其他软中断触发,执行到此处由于先前的软中断已经在处理,则其他软中断会返回。所以,软中断不能被另外一个软中断抢占!唯一可以抢占软中断的是中断处理程序,所以软中断允许响应中断。虽然不能在本处理器上抢占,但是其他的软中断甚至同类型可以再其他处理器上同时执行。由于这点,所以对临界区需要加锁保护。

    软中断留给对时间要求最严格的下半部使用。目前只有网络,内核定时器和 tasklet 建立在软中断上。

    Tasklet

    注意,这第二种机制是基于软中断实现的,灵活性强,动态创建的下半部实现机制。两个不同类型的 tasklet 可以在不同处理器上运行,但相同的不可以,可以通过代码动态注册。

    在 SMP 上,调用 tasklet 是会检测 TASKLET_STATE_SCHED 标志,如果同类型在运行,就退出函数。

    tasklet 由于是基于软中断实现的,所以也允许响应中断。但不能睡眠(我认为不能睡眠原因是它们内部有 spin lock)。

    工作队列

    将下半部功能交由内核线程执行,有着线程上下文环境,可以睡眠。

    提供接口把需要推后执行的任务排列到队列里,提供默认的工作者线程处理排到队列里的下半部工作。

    工作队列实际上是一个链表,工作线程作为死循环,链表空时休眠,不空是执行每一个工作。

    各种机制的比较

    下半部上下文顺序执行保障
    软中断中断随意,同类型都可以在不同处理器同时执行
    tasklet中断同类型不能同时执行
    工作队列进程不保障,可能被调度和抢占

    选择:

    - 工作队列:适用于任务推后到进程上下文完成,可以休眠

    - tasklet:任务接口简单,支持中断响应,但有同种类型不能同时执行的限制

    - 软中断:提供的执行顺序保障最少,支持中断响应,由于同类型软中断在其他处理器可同时执行,所以要采取措施保护共享数据。


    linux的驱动程序分两个部分实现:top-half和bottom-half。
    top-half在运行时,不能被其他任何中断再次中断,也不能被其他进程中断,它通过对CPU内的中断屏蔽置位实现,而bottom-half则只对top-half开中断。
    这样,系统就可以根据中断服务程序的访问特点,安排那些访问临界区的服务程序为top-half,其他中断服务程序为bottom-half。

    每次离开中断处理程序,系统会执行schedule(),发生进程调度。




     
    
    展开全文
  • 中断

    万次阅读 2018-10-03 18:54:31
    整个过程称为中断处理,简称中断,而引起这一过程的事件称为中断事件。中断是计算机实现并发执行的关键,也是操作系统工作的根本。 分类  中断按事件来源分类,可以分为外部中断和内部中断中断事件来自于CPU...

    定义

           在计算机科学中,中断指计算机CPU获知某些事,暂停正在执行的程序,转而去执行处理该事件的程序,当这段程序执行完毕后再继续执行之前的程序。整个过程称为中断处理,简称中断,而引起这一过程的事件称为中断事件。中断是计算机实现并发执行的关键,也是操作系统工作的根本。

    分类

           中断按事件来源分类,可以分为外部中断和内部中断。中断事件来自于CPU外部的被称为外部中断,来自于CPU内部的则为内部中断。

           进一步细分,外部中断还可分为可屏蔽中断(maskable interrupt)和不可屏蔽中断(non-maskable interrupt)两种,而内部中断按事件是否正常来划分可分为软中断和异常两种。

           外部中断的中断事件来源于CPU外部,必然是某个硬件产生的,所以外部中断又被称为硬件中断(hardware interrupt)。计算机的外部设备,如网卡、声卡、显卡等都能产生中断。外部设备的中断信号是通过两根信号线通知CPU的,一根是INTR,另一根是NMI。CPU从INTR收到的中断信号都是不影响系统运行的,CPU可以选择屏蔽(通过设置中断屏蔽寄存器中的IF位),而从NMI中收到的中断信号则是影响系统运行的严重错误,不可屏蔽,因为屏蔽的意义不大,系统已经无法运行。

           内部中断来自于处理器内部,其中软中断是由软件主动发起的中断,常被用于系统调用(system call);而异常则是指令执行期间CPU内部产生的错误引起的。异常也和不可屏蔽中断一样不受eflags寄存器的IF位影响,区别在于不可屏蔽中断发生的事件会导致处理器无法运行(如断电、电源故障等),而异常则是影响系统正常运行的中断(如除0、越界访问等)。

    中断描述符表

           中断描述符表(Interrupt Descriptor Table,IDT)是保护模式下用于存储中断处理程序入口的数据结构,实模式中采用中断向量表(Interrupt Vector Table,IVT)。当CPU接收一个中断时,需要用中断向量在此表中检索对应的中断描述符,在该描述符中找到中断处理程序的起始地址,然后才能执行中断处理程序。

           中断描述符表中不仅仅有中断描述符,还可以有任务门描述符和陷阱门描述符,它们实质上都是记录着某段程序的起始地址,因此可以统称为门。

    中断处理过程及保护

           中断过程因中断来源而异,外部中断由外设发出,经中断代理芯片接收并处理后将该中断的中断向量号发送到CPU,最后由CPU执行该中断向量号对应的中断处理程序。内部中断则不经过中断代理芯片。

           中断在处理器内部的处理程序如下:

    (1)处理器根据中断向量号定位中断门描述符。

           中断向量号是中断描述符的索引,当处理器收到一个外部中断向量号后,它用此向量号在中断描述符表中查询对应的中断描述符,然后再去执行该中断描述符指向的中断处理程序。中断描述符占8字节,因此处理器用中断向量号乘8后再与IDTR中的中断描述符表地址相加得到中断描述符的位置。

    (2)特权级检查

           中断向量号只是一个整数,其中没有RPL,所以在对由中断引起的特权级转移特权级检查时并不涉及RPL。

           如果是由软中断int n、int3、和into这些由用户进程引发的中断,由用户代码控制,处理器要检查当前特权级CPL和门描述符DPL,数值上CPL≤门描述符DPL才能通过检查。通过上一步检查后还需要检查CPL和门描述符中所记录的选择子对应的目标代码段DPL,数值上CPL>目标代码段DPL才能通过检查,因为除返回指令外,特权转移只能由低到高。

           若中断是由外部设备或异常引起的,只检查CPL和目标代码段的DPL即可。

    (3)执行中断处理程序

           特权级检查通过后,将门描述符中目标代码段选择子加载到段寄存器CS中,把门描述符中的中断处理程序的偏移地址加载到EIP,然后开始执行中断处理程序。

           中断发生后,eflags中的NT位和TF位都会被置0。如果中断对应的门描述符是中断门,标志寄存器eflags中的IF位也会被置0以避免中断嵌套(中断处理过程中又处理新的中断),即默认情况下处理器对中断门描述符的中断例程处理是不可中断的。若中断发生时对应的门描述符是任务门或陷阱门的话,CPU不会将状态寄存器中的IF位清0,即允许中断嵌套。

     

                                                                                                   本文部分内容摘自《操作系统真象还原》,有改动

    展开全文
  • msp430f149外中断问题

    千次阅读 2016-08-10 13:35:33
    msp430的外中断归根到底 其实只需要两个部分的配置就可以了: 1. 引脚配置 2. 中断函数配置 一 引脚配置(以引脚P2.1为例) P2DIR = 0x01;//配置为输入 P2IE |= 0x01; P2IES |= 0x01; 其他寄存器可配置,...
  • 外部中断和内部中断详解

    千次阅读 2017-09-06 17:59:40
    中断基本概念 什么是中断?先打个比方。...计算机科学家观察了类似实例,“师物化,得心源”,借用了这些思想、处理方式和名称,研制了一系列中断服务程序及其调度系统。 中断是CPU处理外部突发事件
  • 外部中断和内部中断

    千次阅读 2014-12-18 15:07:50
    外部中断是指外部有中断源时执行相应的中断程序,主要是指INT0,INT1,通讯中断;内部中断主要是指定时器/计数器中断,装栈溢出后置位相关特殊寄存器来执行中断; 举一个例子,外部中断:你在吃饭,这时候电话响了,你...
  • 外部中断和内部中断【转】

    千次阅读 2019-01-20 14:02:44
    中断基本概念 什么是中断?先打个比方。...计算机科学家观察了类似实例,“师物化,得心源”,借用了这些思想、处理方式和名称,研制了一系列中断服务程序及其调度系统。 中断是CPU处理外部突发事件...
  • 内中断: 是CPU内部发生情况后而产生的中断信息,于是CPU便放下手中的活来处理中断例程8086CPU会产生主要这么几种内中断:1.除法溢出(0号中断)2.单步中断(1号中断)3.执行into指令产生的中断(不清楚)4.执行int指令产生...
  • 这里写目录标题先验知识回顾控制寄存器回顾1、8086中断类型1、外部可屏蔽中断2、外部不可屏蔽中断3、除法错中断4、单步中断5、断点中断6、溢出中断7、软中断2、8086中断向量表3、8086中断响应1、外部可屏蔽中断响应2...
  • 汇编语言中的外中断——键盘事件

    千次阅读 2015-01-29 18:30:54
    汇编语言中的外中断内中断差不多 1、取中断类型码n 2、标致寄存器入栈,IF=0,TF=0 2、CS、IP入栈 3、(IP)=(n*4),(CS)=(n*4+2) 但是外中断内中断中断类型码的来源不同,所以第一步肯定是不一样的,其他相同 ...
  • 中断和软中断

    万次阅读 多人点赞 2014-03-27 16:21:59
    本文主要内容:硬中断 / 软中断的原理和实现 内核版本:2.6.37 Author:zhangskd @ csdn blog   概述   从本质上来讲,中断是一种电信号,当设备有某种事件发生时,它就会产生中断,通过总线把电信号发送给...
  • 汇编语言--内中断

    万次阅读 2020-09-11 23:47:47
    中断信息可以来自CPU的内部和外部(内中断外中断内中断:当CPU的内部有需要处理的事情发生的时候,将产生中断信息,引发中断过程。这种中断信息来自CPU的内部 8086CPU的内中断(下面四种情况...
  • 汇编中的内中断

    万次阅读 2019-06-08 16:01:21
    发生中断时, CPU会收到中断信息,中断信息中包含有标识中断源的类型码,通过中断类型码可以在中断向量表中找到对应的中断处理程序的入口地址。对于8086pc机,中断向量表指定放在内存地址的0处。中断处理完...
  • 中断从硬件到内核的路由 概念 从物理学的角度看,中断是一种电信号,由硬件设备生成,并直接送入中断控制器的输入引脚上。 然后再由中断控制器向处理器发送相应的信号。处理器一经检测到此信号,便中断自己的当前...
  • 最开始的一点,所有中断的配置都必须要打开全局中断控制#asm(“sei”) //打开SREG的全局使能I置位 首先博主先探究了一下AVR单片机的外部中断。 外部中断需要用的必须先看原理图的INT0 INT1的引脚。因为外部...
  • 8086汇编内中断总结之int中断

    千次阅读 2018-04-11 15:46:30
    今天主要总结int指令所引起的中断,int的一般用法是int n,这个n就是指中断类型码如果对中断概念一点没有请进入: https://blog.csdn.net/qq_37232329/article/details/79876197废话不多说先贴第一个程序,这个例子...
  • 程序中断

    千次阅读 2016-08-30 17:02:28
    中断请求触发器(INTR),中断屏蔽触发器(MASK)二者成对出现。 接口中的完成触发器D,为1表示设备准备就绪。 中断源:凡是能够向CPU提出中断请求的各种因素都叫中断源。因此,有多个中断源,但是,CPU某一时刻只...
  • Arduino 定时器中断 外部中断

    万次阅读 多人点赞 2019-04-09 17:29:31
    但如果此时发生了某一件事件B请求CPU迅速去处理(中断发生),CPU暂时中断当前的工作,转去处理事件B(中断响应和中断服务),待CPU将事件B处理完毕后,再回到原来被中断的地方继续执行程序(中断返回),这一过程成...
  • 单片机 中断

    万次阅读 多人点赞 2018-05-30 23:03:30
    单片机 中断一、简述 中断,即CPU在正常执行程序的过程中,遇到外部/内部的紧急事件需要处理,暂时中断(中止)当前程序的执行,而转去为事件服务,待服务完毕,再返回到暂停处(断点)继续执行原来的程序。二、中断...
  • 中断控制 ( 基于 S3C6410 开发板 ) 1. 关闭中断的两个步骤 (1) 关闭中断步骤 2. CPRS 寄存器中的中断控制位 (1) CPRS 寄存器位 3. (1) CPRS 寄存器位 一. 中断控制 ( 基于 S3C6410 开发板 ) ...
  • 中断机制和中断描述符表、中断和异常的处理

    千次阅读 多人点赞 2013-09-16 10:09:26
    1、中断向量 Intel x86 系列微机共支持256 种向量中断,为使处理器较容易地识别每种中断源,将它们从0~256 编号,即赋予一个中断类型码 n,Intel 把这个8 位的无符号整数叫做一个向量,因此,也叫中断向量。...
  • Linux 中断中断处理浅析

    千次阅读 多人点赞 2019-01-17 14:15:09
    中断是指在CPU正常运行期间,由于外部事件或由程序预先安排的事件引起的 CPU 暂时停止正在运行的程序,转而为该内部或外部事件或预先安排的事件服务的程序中去,服务完毕后再返回去继续运行被暂时中断的程序。...
  • 170504 汇编-外中断和键盘输入的处理

    千次阅读 2017-05-06 00:40:13
    因此,之前内中断里提到的过程有一步是将IF置0,就是为了禁止其他的可屏蔽中断。 CPU提供两条指令设置IF,分别是sti(IF置1)和cli(IF置0) 不可屏蔽中断 这是CPU必须响应的外中断。当CPU检测到不可屏蔽...
  • 中断中断处理(一)

    千次阅读 2015-07-13 07:45:34
    (一):中断中断本质上是一种特殊的电信号,由硬件设备发向处理器。处理器在接收到中断后,会马上向操作系统反映此信号的到来,然后就u由操作系统来处理这些新到来的数据。不同的设备对应的中断不同,而每个中断都...
  • 中断向量 中断向量表

    千次阅读 2015-05-27 11:24:39
    1、中断标识码(中断类型号):由硬件(通常是中断控制器)产生,以标识不同的中断源。 2、中断向量:早期的微机系统中将由硬件产生的中断标识码(中断源的识别标志,可用来形成相应的中断服务程序的入口地址或存放...
  • 中断和硬中断的区别

    千次阅读 2019-06-05 14:52:47
    软中断和硬中断的区别 ①硬中断是由外部事件引起的因此具有随机性和突发性;软中断是执行中断指令...③硬中断的中断号是由中断控制器提供的(NMI硬中断中断号系统指定为02H);软中断的中断号由指令直接给出,...
  • 是指中断系统正在执行一个中断服务时,有另一个优先级更高的中断提出中断请求,这时会暂时终止当前正在执行的级别较低的中断源的服务程序,去处理级别更高的中断源,待处理完毕,再返回到被中断了的中断服务程序继续...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 948,221
精华内容 379,288
关键字:

外中断内中断