历史上的今天
返回首页

历史上的今天

今天是:2024年11月27日(星期三)

正在发生

2018年11月27日 | 中断的作用

2018-11-27 来源:eefocus

所有的事物都是依靠中断来解决问题的。计算机更是如此,依靠时钟发生器,人为的设置没几个时钟周期做一个任务,不管是否做完,一旦规定的时间到了,那么就要强制“中断”,以作下一个任务……就这样,直道所有的任务都作过了(但不一定都做完毕),再接着做第一个没有做完的任务,就这样走而复始循环工作。完成所谓的“多任务”。
要不然,一个cpu,如果即能一边打字,一边看到屏幕呢?这就是一个cpu核心,不断地一会检测键盘,一会检测屏幕……

还有就是软中断,具体详细的细节,可以参考微机原理。


中断系统


中断装置和中断处理程序统称为中断系统。

中断系统是计算机的重要组成部分。实时控制、故障自动处理、计算机与外围设备间的数据传送往往采用中断系统。中断系统的应用大大提高了计算机效率。

不同的计算机其硬件结构和软件指令是不完全相同的,因此,中断系统也是不相同的。计算机的中断系统能够加强CPU对多任务事件的处理能力。中断机制是现代计算机系统中的基础设施之一,它在系统中起着通信网络作用,以协调系统对各种外部事件的响应和处理。中断是实现多道程序设计的必要条件。中断是CPU对系统发生的某个事件作出的一种反应。引起中断的事件称为中断源。中断源向CPU提出处理的请求称为中断请求。发生中断时被打断程序的暂停点成为断点。CPU暂停现行程序而转为响应中断请求的过程称为中断响应。处理中断源的程序称为中断处理程序。CPU执行有关的中断处理程序称为中断处理。而返回断点的过程称为中断返回。中断的实现实行软件和硬件综合完成,硬件部分叫做硬件装置,软件部分成为软件处理程序。

中断系统的功能

1)实现中断响应和中断返回
当CPU收到中断请求后,能根据具体情况决定是否响应中断,如果CPU没有更急、更重要的工作,则在执行完当前指令后响应这一中断请求。CPU中断响应过程如下:首先,将断点处的PC值(即下一条应执行指令的地址)推入堆栈保留下来,这称为保护断点,由硬件自动执行。然后,将有关的寄存器内容和标志位状态推入堆栈保留下来,这称为保护现场,由用户自己编程完成。保护断点和现场后即可执行中断服务程序,执行完毕,CPU由中断服务程序返回主程序,中断返回过程如下:首先恢复原保留寄存器的内容和标志位的状态,这称为恢复现场,由用户编程完成。然后,再加返回指令RETI,RETI指令的功能是恢复PC值,使CPU返回断点,这称为恢复断点。恢复现场和断点后,CPU将继续执行原主程序,中断响应过程到此为止。

2)实现优先权排队
通常,系统中有多个中断源,当有多个中断源同时发出中断请求时,要求计算机能确定哪个中断更紧迫,以便首先响应。为此,计算机给每个中断源规定了优先级别,称为优先权。这样,当多个中断源同时发出中断请求时,优先权高的中断能先被响应,只有优先权高的中断处理结束后才能响应优先权低的中断。计算机按中断源优先权高低逐次响应的过程称优先权排队,这个过程可通过硬件电路来实现,亦可通过软件查询来实现。

3)实现中断嵌套
当CPU响应某一中断时,若有优先权高的中断源发出中断请求,则CPU能中断正在进行的中断服务程序,并保留这个程序的断点(类似于子程序嵌套),响应高级中断,高级中断处理结束以后,再继续进行被中断的中断服务程序,这个过程称为中断嵌套。如果发出新的中断请求的中断源的优先权级别与正在处理的中断源同级或更低时,CPU不会响应这个中断请求,直至正在处理的中断服务程序执行完以后才能去处理新的中断请求。

 

中断、异常和系统调用

所谓中断是指CPU对系统发生的某个事件做出的一种反应,CPU暂停正在执行的程序,保留现场后自动地转去执行相应的处理程序,处理完该事件后再返回断点继续执行被“打断”的程序。

中断可分为三类,第一类是由CPU外部引起的,称作中断,如I/O中断、时钟中断、控制台中断等。第二类是来自CPU的内部事件或程序执行中的事件引起的过程,称作异常,如由于CPU本身故障(电源电压低于105V或频率在47~63Hz之外)、程序故障(非法操作码、地址越界、浮点溢出等)等引起的过程。

第三类由于在程序中使用了请求系统服务的系统调用而引发的过程,称作“陷入”(trap,或者陷阱)。前两类通常都称作中断,它们的产生往往是无意、被动的,而陷入是有意和主动的。

       1.中断处理

        中断处理一般分为中断响应和中断处理两个步骤。中断响应由硬件实施,中断处理主要由软件实施。

        (1)中断响应

        对中断请求的整个处理过程是由硬件和软件结合起来而形成的一套中断机构实施的。发生中断时,CPU暂停执行当前的程序,而转去处理中断。这个由硬件对中断请求作出反应的过程,称为中断响应。一般说来,中断响应顺序执行下述三步动作:

◆中止当前程序的执行;

◆保存原程序的断点信息(主要是程序计数器PC和程序状态寄存器PS的内容);

◆从中断控制器取出中断向量,转到相应的处理程序。

通常CPU在执行完一条指令后,立即检查有无中断请求,如果有,则立即做出响应。

当发生中断时,系统作出响应,不管它们是来自硬件(如来自时钟或者外部设备)、程序性中断(执行指令导致“软件中断”—SoftwareInterrupts),或者来自意外事件(如访问页面不在内存)。

如果当前CPU的执行优先级低于中断的优先级,那么它就中止对当前程序下条指令的执行,接受该中断,并提升处理机的执行级别(一般与中断优先级相同),以便在CPU处理当前中断时,能屏蔽其它同级的或低级的中断,然后保存断点现场信息,通过取得的中断向量转到相应的中断处理程序的入口。

(2)中断处理

CPU从中断控制器取得中断向量,然后根据具体的中断向量从中断向量表IDT中找到相应的表项,该表项应是一个中断门。于是,CPU就根据中断门的设置而到达了该通道的总服务程序的入口。

核心对中断处理的顺序主要由以下动作完成:

◆保存正在运行进程的各寄存器的内容,把它们放入核心栈的新帧面中。

◆确定“中断源”或核查中断发生,识别中断的类型(如时钟中断或盘中断)和中断的设备号(如哪个磁盘引起的中断)。系统接到中断后,就从机器那里得到一个中断号,它是检索中断向量表的位移。中断向量因机器而异,但通常都包括相应中断处理程序入口地址和中断处理时处理机的状态字。

◆核心调用中断处理程序,对中断进行处理。

◆中断处理完成并返回。中断处理程序执行完以后,核心便执行与机器相关的特定指令序列,恢复中断时寄存器内容和执行核心栈退栈,进程回到用户态。如果设置了重调度标志,则在本进程返回到用户态时做进程调度。

2.系统调用

在Unix/Linux系统中,系统调用像普通C函数调用那样出现在C程序中。但是一般的函数调用序列并不能把进程的状态从用户态变为核心态,而系统调用却可以做到。

C语言编译程序利用一个预先确定的函数库(一般称为C库),其中有各系统调用的名字。C库中的函数都专门使用一条指令,把进程的运行状态改为核心态。Linux的系统调用是通过中断指令“INT0x80”实现的。

每个系统调用都有惟一的号码,称作系统调用号。所有的系统调用都集中在系统调用入口表中统一管理。

系统调用入口表是一个函数指针数组,以系统调用号为下标在该数组中找到相应的函数指针,进而就能确定用户使用的是哪一个系统调用。不同系统中系统调用的个数是不同的,目前Linux系统中共定义了221个系统调用。

另外,系统调用表中还留有一些余项,可供用户自行添加。

当CPU执行到中断指令“INT0x80”时,硬件就做出一系列响应,其动作与上述的中断响应相同。CPU穿过陷阱门,从用户空间进入系统空间。相应地,进程的上下文从用户堆栈切换到系统堆栈。

接着运行内核函数system_call()。首先,进一步保存各寄存器的内容;接着调用syscall_trace(),以系统调用号为下标检索系统调用入口表sys_call_table,从中找到相应的函数;然后转去执行该函数,完成具体的服务。

执行完服务程序,核心检查是否发生错误,并作相应处理。如果本进程收到信号,则对信号作相应处理。最后进程从系统空间返回到用户空间。

上面两讲简要介绍了Linux内核的主要数据结构和相应的算法。Linux内核包含了丰富的内容,这里仅是其中的一点点,以求起到“抛砖引玉”的作用。


信号的中断与系统调用的重起


#include


推荐阅读

史海拾趣

ANADIGICS公司的发展小趣事

ANADIGICS是一家曾经存在的半导体公司,总部位于美国新泽西州的华兹堡市。以下是ANADIGICS公司发展的相关故事:

  1. 创立与初期发展:ANADIGICS公司成立于1985年,最初专注于开发射频(RF)集成电路和功率放大器。公司在其创始人的领导下迅速崛起,以其创新的技术和产品在无线通信领域赢得了声誉。

  2. 产品创新与市场占有率提升:ANADIGICS公司在其创立初期就致力于开发高性能的射频和功率放大器产品。随着移动通信技术的迅速发展,ANADIGICS的产品得到了广泛应用,其在市场上的份额逐渐增加。

  3. 全球扩张与市场渗透:ANADIGICS公司通过建立全球性的销售渠道和生产基地,扩大了其产品的市场覆盖范围。公司在美国、欧洲和亚洲等地设立了销售办事处和生产工厂,加强了与客户的联系,并提高了产品的交付效率。

  4. 技术领先地位与合作伙伴关系:ANADIGICS公司不断投入研发,保持技术领先地位。公司与各大手机制造商和无线通信设备供应商建立了合作伙伴关系,共同推动技术创新和产品发展。

  5. 挑战与破产:然而,随着市场竞争的加剧和技术变革的不断推进,ANADIGICS公司在市场上的地位逐渐受到挑战。公司陷入了财务困境,于2016年申请破产保护,并逐步停止了业务。最终,ANADIGICS公司在同年被日本半导体公司II-VI收购,结束了其独立运营的历史。

以上是ANADIGICS公司发展的一些主要故事,展示了该公司从创立到破产的发展历程。

EKIT公司的发展小趣事

2023年11月,华为坤灵(HUAWEI eKit)在泰国曼谷成功举办了分销品牌发布会。此次发布会标志着HUAWEI eKit正式进入泰国市场,并与VST ECS(泰国)和Synnex(泰国)等金牌分销合作伙伴携手,共同为中小企业提供数字化转型的解决方案。通过发布数通园区网络、MiniFTTO、智能协作IdeaHub等新产品,HUAWEI eKit迅速在泰国市场树立了良好的口碑,助力当地中小企业实现了数字化升级。

长工微电子公司的发展小趣事

长工微电子在产品研发上不断取得突破。其中,IS6608芯片实现了多相电源并联输出最高到200A,这是国产电源芯片第一家可以用于服务器CPU多相并联电源解决方案,打破了欧美电源芯片厂商在多相电源的垄断。同时,IS6607 20A集成mos电源芯片,以3x4mm的体积实现了100w的功率输出,代表了当时芯片产业模拟电源的最高水平。这些产品广泛应用于服务器、台式机、笔电、基站、AI、LED显示屏等市场领域,为公司带来了丰厚的回报。

EUCHNER公司的发展小趣事

随着全球化的发展,EUCHNER公司开始实施国际化战略,加强在全球市场的布局。公司在世界各地设立了多个分销处和办事处,以便更好地满足不同国家和地区的市场需求。同时,公司还积极与国际知名企业建立合作关系,共同推动工业自动化领域的进步。通过国际化战略和全球布局,EUCHNER公司的品牌影响力得到了进一步提升。

Cramer公司的发展小趣事

随着5G技术的普及,Cramer公司紧跟时代潮流,开始研发5G通信设备。他们与多家通信巨头合作,共同推进5G技术的发展。经过不懈的努力,Cramer公司成功研发出了一款高性能的5G路由器。这款产品的推出,使得Cramer公司在5G市场上取得了先机,并为其带来了丰厚的回报。

ALSC [Alliance Semiconductor Corporation]公司的发展小趣事

ALSC深知品质是企业的生命线。因此,公司建立了严格的质量管理体系,从原材料采购到产品出厂的每一个环节都进行严格把控。同时,公司还注重品牌建设,通过广告宣传、参加展会等方式提升品牌知名度和美誉度。这些举措使得ALSC在客户心中树立了良好的品牌形象。

问答坊 | AI 解惑

基于EASY嵌入式PLC芯片组构建现场总线ETS系统

TSI系统(汽轮机状态监视和保护系统)和ETS系统(汽轮机危机跳闸系统)是火力发电厂保证汽轮机和发电机正常运转的重要设备,在火力发电企业运用十分普遍。在当前的大部分应用中,这两套系统是互相独立的,一般由专业的TSI设备供应商提供TSI系统,而 ...…

查看全部问答>

vxworks资料

................ [ 本帖最后由 daicheng 于 2008-12-7 11:04 编辑 ]…

查看全部问答>

五个手指不一样齐正,说明了并不是所有人都这样看榜样做事。

如果这部分人不看榜样做事,工作完成不好,不符合领导要求。肯定就应该咔嚓了。否则影响整个团队了…

查看全部问答>

找兼职 多普达手机发短信和接受短信息,服务器接受并解析和向pda发短信息

找兼职 多普达手机发短信和接受短信息,服务器接受并解析和向pda发短信息,pda操作系统是wm ,服务器操作系统xp,是要求有成功案例或项目经验。 联系 msn djliu221@163.com qq 412925762 谢绝新手…

查看全部问答>

核心板不能从NOR启动UBOOT

我刚购买的核心板不能从NOR启动,NOR里已经烧写了UBOOT,在开发板上能从NOR正常启动,我的板子和开发板地板复位电路和JTAG电路都一样,在我板子上也不能用h-jtag烧写NOR flash,我的板子电源正常,能从NAND启动EBOOT,请帮忙分析一下 原因,谢谢先~…

查看全部问答>

关于:#pragma comment(lib, "ws2_32.lib ") 急————急

我修改一个实例程序:用到下面语句(在evc中) #pragma   comment(lib,   \"ws2_32.lib \"),但却出现下面错误。 cannot open file \'ws2_32.lib \' 我在setting->link->Object/library   modules:中填上:ws2_ ...…

查看全部问答>

串口通讯自发自收

你们好。我做了一个AT89S52;MAX232与PC通讯板子。 当我用11。12与单片机相连,13。14,GND与PC相连, 线路也对。能接收到单片机发到PC的数据。就是当我用调试助手发数据到单片机时。 调试助手一边发,它自已一边收,好像单片机没有还收不到 ...…

查看全部问答>

CroundButton

刚刚看了个CroundButton类,注释不够清楚,图像处理的函数一点都没头绪 在这里个大家贴出来,有心人给我理理来龙去脉哈   ____________________________________________________________________________________________________ ______ ...…

查看全部问答>

STM32的AD最高采样率跟USB时钟的冲突解决了没

103的中用USB的时候,AD不能工作在最高采样率 后来升级的105,107有没有解决这个问题,我的项目中就要用的1M的AD和USB啊,要是还没解决,我就要放弃stm32这鸡肋了 感觉ATMEL的也不错,高速USB,但貌似技术支持不太好,国内用的不很多,没有S ...…

查看全部问答>

高手们帮帮忙!关于坐标变换的方程组

带下划线的是已知量,a b w是未知量,高手们帮我解出 a= b= w= 的表达式吗?谢谢各位了!…

查看全部问答>