中断的概念

硬中断:

1. 硬中断是由硬件产生的,比如,像磁盘,网卡,键盘,时钟等。每个设备或设备集都有它自己的IRQ(中断请求)。基于IRQ,CPU可以将相应的请求分发到对应的硬件驱动上(注:硬件驱动通常是内核中的一个子程序,而不是一个独立的进程)。

2. 处理中断的驱动是需要运行在CPU上的,因此,当中断产生的时候,CPU会中断当前正在运行的任务,来处理中断。在有多核心的系统上,一个中断通常只能中断一颗CPU(也有一种特殊的情况,就是在大型主机上是有硬件通道的,它可以在没有主CPU的支持下,可以同时处理多个中断。)。

软中断:

软中断的处理非常像硬中断。然而,它们仅仅是由当前正在运行的进程所产生的。软中断并不会直接中断CPU。也只有当前正在运行的代码(或进程)才会产生软中断。这种中断是一种需要内核为正在运行的进程去做一些事情(通常为I/O)的请求。

通常,把取出指令并执行所用的时间称为一个指令周期。不同指令的功能不同,因此所包含的执行步骤不一样。不考虑指令译码这个步骤,不管是简单指令还是复杂指令,其包含的执行步骤总是可以分解成以下4种基本操作,也即每条指令的功能总是由以下4种基本操作功能组合而成。

(1)读取某存储单元内容装入给定寄存器。

(2)把一个数据从某个寄存器存入给定的存储单元中。

(3)把一个数据从某个寄存器送到另一个寄存器或者ALU输入端。

(4)进行某种算术运算或逻辑运算,将结果送入某个寄存器。

因此,若比较每个步骤的执行时间,则只要比较上述4种操作的时间即可,显然第(3)种操作的执行时间最短,速度最快。

一种是“中断请求”,一种是“中断处理结束”。

如果理解成前者,选项B的含义就是“CPU在等待中断请求的过程中,不可以处理其他任务”,这显然是错误的。CPU在执行程序的过程中,总是在执行完一条指令、取下条指令之前,去主动检测“中断请求信号”,若发现有中断请求,则执行一条“中断隐指令”,以响应中断请求。

如果理解成后者,选项B的含义就是“CPU在等待中断处理结束的过程中,不可以处理其他任务”,这也是错误的。

CPU响应中断请求后,就会跳转到一个中断服务程序去执行,以进行中断处理。不同的中断类型具有不同的中断服务程序,进行不同的中断处理。有些中断处理非常简单,例如“打印机缺纸”,其中断服务程序只要在屏幕上显示一个消息即可;有些中断处理则比较复杂,例如,对于采用中断方式进行打印输出的情况,中断服务程序中需要启动外设进行I/O,通常在发出启动外设的命令后进行中断返回,以回到原先被中止的另一个进程代码去执行。

首先是对“程序代码的运行时间”和“同一段代码”如何理解的问题。

操作系统在对处理器进行调度时,一段时间内往往会让多个程序(更准确地说是进程)轮流使用处理器,因此在某个用户程序执行过程中,可能同时还会有其他用户程序和操作系统程序在执行,所以,用户感觉到的某个程序的执行时间并不是其真正的执行时间。通常把用户感觉到的执行时间分成以下两部分:CPU时间和其他时间。CPU时间指CPU用于程序执行的时间,它又包括以下两部分:

(1)用户CPU时间,指真正用于运行用户程序代码的时间;

(2)系统CPU时间,指为了执行用户程序而需要CPU运行操作系统程序的时间。

其他时间指等待I/O操作完成的时间或CPU用于执行其他用户程序的时间。

计算机系统的性能评价主要考虑的是CPU性能。系统性能和CPU性能不等价,两者有一些区别。系统性能是指系统的响应时间,它与CPU外的其他部分也有关系;而CPU性能是指用户CPU时间,它只包含CPU运行用户程序代码的时间。

因此,对“程序代码的运行时间”可以理解为程序代码中每条指令执行时间总和,也可以理解为程序代码运行过程中用户感觉到的执行总时间(包括操作系统代码和穿插在其中的其他程序代码运行时间)。如果理解为后者,那么很可能因为每次运行环境的不同,使得用户感觉到的执行总时间可能不一样。因此,选项C是错误的。

如果理解为前者,那么,还要看选项中的“同一段代码”指的是什么含义,才能确定选项C是否正确。如果“同一段代码”中代码指的可执行文件中一段静态的指令序列(例如一段循环执行的指令序列),那么可能会因为每次执行这段代码时变量的值的不同(例如循环终止条件变量的值不同),导致程序在执行时所执行的指令条数不同(循环执行次数不同),因而使得每次运行该段代码过程中指令执行的总时间不同。所以,选项C是错误的

显然,只有将“程序代码的运行时间”理解为程序代码中每条指令执行时间总和,并且,将“同一段代码”理解成每次运行程序代码过程中在CPU上所执行的指令序列完全相同,那么,选项C才是正确的。显然,对选项C的描述作这种解读有点牵强。

选项 D 中 的“软中断”应该特指Intel架构中的“int n”指令,执行该指令后,CPU会根据中断类型号n,到中断向量表(实地址模式)或中断描述符表(保护模式)中,取出相应的中断服务程序执行,执行结束后再回到“int n”指令后面一条指令执行。因此,“int n”指令的执行相当于引起了一次对现行程序的“中断”事件,这里“int n”指令显然是事先安排在软件中的,属于软件触发的事件。因而选项D的描述是正确的。

不同的计算机体系结构和教科书对“异常”和“中断”定义的内涵不同。例如,PowerPC体系结构用异常表示各种意外事件,而用中断表示程序正常执行的控制流被改变;Intel 早期的8086/8088架构不区分异常和中断,把两者统称为中断,由CPU内部产生的异常称为内中断,通过中断请求线INTR和NMI从CPU外部发出的中断请求为外中断,但Intel后来的处理器架构中又将内中断称为“异常”,而把外中断特指为“中断”。

如果将选项 D 的描述中所提的“中断”理解为特指的外中断的话,选项 D 就是错误的,因为“ int n ”指令的执行不会通过中断请求线向 CPU 发中断请求,这种软中断不属于外中断,而是一种内部的“异常”。

时间: 2024-10-10 10:15:17

中断的概念的相关文章

Linux内核(二)中断基本概念

转载请注明出处:jiq?钦's technical Blog 首先解释一些容易混淆的概念: 中断上下文:正在执行ISR或者下半部.没有进程背景(只是暂停CPU去内存中其他地方执行一段快速代码),所以不能被切换(比如睡眠,被其他进程抢占等都不行). 进程上下文:非中断上下文(比如执行系统调用或者内核线程的时候).此时内核代表线程在执行,所以允许睡眠,被抢占等(被切换). 中断栈:每个处理器有一个专门的中断栈.以前中断处理程序都是使用中断进程的内核栈(只有一个),但是内核栈越来越不够用,所以中断处理

CC2540开发板学习笔记(三)——外部中断

一.实验内容 通过外部中断方式依次按下按键S1控制LED1的亮灭 二.实验过程 1.电路原理图同上 2.中断的概念 比如说我们在执行main函数时,突然来了个指令.优先级比现在执行的main还高,那我们便选择跳过去执行优先级高的,完了之后再执行main函数,中断就类似这样一个概念,使用中断可以减少CPU的无效浪费,降低能耗. 3.寄存器调度 (1)LED1的初始化..同前两节,就是SEL,DIR,INP三个,还有附初始状态. (2)外部中断初始化(S1的外部中断初始化) 按键S1外部中断初始化方

STM32F10x_RTC秒中断

Ⅰ.概述 RTC(Real Time Clock)是实时时钟的意思,它其实和TIM有点类似,也是利用计数的原理,选择RTC时钟源,再进行分频,到达计数的目的. 该文主要讲述关于RTC的秒中断功能,这个功能类似SysTick系统滴答的功能.RTC秒中断功能其实是每计数一次就中断一次.注意,这里所说的秒中断并非一定是一秒的时间,它是由RTC时钟源和分频值决定的“秒”的时间,当然也是可以做到1秒钟中断一次. 本文章提供的实例工程,其实验效果是: 主函数间隔0.5秒LED变化一次: 秒中断一次打印数据"

【转】 51单片机中断学习

一.中断的概念    CPU在处理某一事件A时,发生了另一事件B请求CPU迅速去处理(中断发生):    CPU暂时中断当前的工作,转去处理事件B(中断响应和中断服务):    待CPU将事件B处理完毕后,再回到原来事件A被中断的地方继续处理事件A(中断返回),这一过程称为中断 二.中断源 在51单片机中有5个中断源 中断号          优先级                    中断源                    中断入口地址 0               1(最高)   

AVR开发 Arduino方法(二) 中断子系统

在了解ATMega328P的中断子系统之前,首先要了解中断的概念.你正在看书,这时电话响了,你会怎么做呢?相信大多数人会这样:先标记看到的位置,接完电话回来后继续阅读.这就是一个现实生活中中断的例子,我们把"电话响了"成为中断源.ATMega328P拥有26个中断源,如下表所示: 向量号 程序地址 中断源 中断定义 中断服务程序名称 1 0x0000 RESET 外部电平复位,上电复位,掉电检测复位,看门狗复位 2 0x0002 INT0 外部中断请求0 INT0_vect 3 0x0

Windows中断那些事儿

搞内核研究的经常对中断这个概念肯定不陌生,经常我们会接触很多与中断相关的术语,按照软件和硬件进行分类: 硬件CPU相关: IRQ.IDT.cli&sti 软件操作系统相关: APC.DPC.IRQL 一直以来对中断这一部分内容弄的一知半解,操作系统和CPU之间如何协同工作也是很模糊.最近花了点时间认真把这块知识进行了梳理,不当之处,还请高手指出,先行谢过了! 本文旨在解答下面这些问题: 1.IRQ和IRQL之间是什么关系? 2.Windows是如何在软件层面上虚拟出IRQL这套中断机制的 3.A

《Linux内核设计与实现》之中断与中断处理程序

1.中断的概念 中断本质上是一种特殊的电信号,由硬件设备发向处理器.处理器接收到中断后,会马上向操作系统反映此信号的到来,然后就由OS负责处理这些新到来的信号. 从物理学的角度看,中断是一种电信号,有硬件设备产生,并直接送入中断控制器的输入引脚上.然后再由中断控制器向处理器发送相应的信号.处理器一经检测到此信号,便中断自己的当前工作转而处理中断.伺候处理器会通知操作系统已经产生中断,这样,操作系统就可以对这个中断进行适当的处理了. 不同的设备对应的中断不同,而每个中断都通过一个唯一的数字标识.这

软中断和硬中断(转)

1.中断:通常被定义成一个事件,该事件改变处理器执行的指令顺序.这样的事件与cpu芯片外部电路产生 的电信号相对应.2.中断的产生:每个能够发出中断请求的硬件设备控制器都有一条称为IRQ的输出线(中断线).所有的IRQ线都 与一个中断控制器的输入引脚相连,中断控制器与cpu的intr引脚相连.3.中断向量:每个中断由0-255之间的一个8位数来标识.称为中断向量.4.中断描述符表:IDT是一个系统表,它与每一个中断或者异常向量相联系,每一个向量在表中有相应的中断处理程 序的入口地址.cpu的id

中断的作用

1. 什么叫中断?有哪几种不同类型的中断? 由于某个事件的发生,CPU暂停当前正在执行的程序,转而执行处理该事件的一个程序.该程序执行完成后,CPU接着执行被暂停的程序.这个过程称为中断. 根据中断源的位置,有两种类型的中断.有的中断源在CPU的内部,称为内部中断.大多数的中断源在CPU的外部,称为外部中断. 根据中断引脚的不同,或者CPU响应中断的不同条件,也可以把中断划分为可屏蔽中断和不可屏蔽中断两种.    2. 什么是中断类型?它有什么用处? 用若干位二进制表示的中断源的编号,称为中断类