百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

Linux操作系统:中断类型和中断的作用

ahcoder 2025-05-07 22:32 10 浏览

1.中断的概念

中断对于操作系统非常重要,它就好像机器中的齿轮,驱动各部件的动作。所以,许多人称操作系统是由“中断驱动”的。

所谓中断是指CPU对系统发生的某个事件做出的一种反应,它使CPU暂停正在执行的程序,保留现场后自动执行相应的处理程序,处理该事件后,如被中断进程的优先级最高,则返回断点继续执行被“打断”的程序。


引起中断的事件或发出中断请求的来源称为中断源。中断源向CPU提出的处理请求称为中断请求。发生中断时,被打断程序的暂停点称为断点

前面讲过,中断最初是作为通道(或设备)与CPU之间进行通信的工具。通道和CPU并行工作,各自负责自己的任务。当通道完成某项预定的I/O请求或数据传输过程中发生故障时,就用中断方式向CPU“报告情况”,请求处理。

中断的概念后来得到进一步扩展。在现代计算机系统中,不仅通道或设备控制器可向CPU发送中断信号,其他部件也可以造成中断。例如,程序在CPU上运行时出现运算溢出、取数时奇偶错、电源故障、时钟计数到时等,都可成为中断源。

中断概念的另一个发展是访管(即访问管理)指令(或系统调用)的使用。用户程序中可以使用操作系统对外界提供的系统调用,得到系统内部服务。当用户程序执行到系统调用时,进程状态从用户态变为核心态核心根据系统调用的编号,转去执行相应的处理程序,如对文件的读/写、对进程的控制等。硬件保证用户态下运行的程序不得访问核心空间中的数据,从而保护了操作系统。系统调用的出现为用户编制程序提供了方便和可靠性保证。

2.中断类型

  • 按功能划分

这种分类法类似于IBM 360/370系统的分类法,所有中断源分为5类。

(1)机器故障中断。它是机器发生错误时产生的中断,用来反映硬件在执行过程中出现的故障,以便进入诊断程序,做出处理。例如,机器电路检验错、电源故障和内存读数错,等等。

(2)I/O中断。这是来自通道或各种外部设备的中断,用于反映通道或设备的工作情况。例如,打印机打印结束、磁盘传输完成、利用终端进行输入/输出等。

(3)外部中断。它是来自计算机系统外部装置的中断,用来反映外界对本系统的要求。例如,计时器到时溢出,操作员操纵控制台按钮,在多机系统中它机送来信号,等等。

(4)程序性中断。这是因错误地使用指令或数据而引起的中断,用于反映程序执行过程中发现的例外情况,例如,非法操作码,无效地址和运算溢出,等等。

(5)访管中断。由于执行“访问管理程序”指令而产生的中断,用来使CPU的状态从用户态转入管理态,由操作系统根据不同的编号引进不同的处理。这样,操作系统为用户态程序提供对系统资源使用请求的服务。

  • 按产生中断的方式划分

(1)强迫中断。在程序运行过程中,发生某些(个)随机性事件,如外设工作结束和程序运行出错等,需要及时进行处理的一种中断。程序设计人员在编制程序时并不知道它何时出现,也并不期望它出现。上述按功能划分的机器故障中断、I/O中断、外部中断和程序性中断都可算做强迫中断。

(2)自愿中断。程序员在编制程序时因需要系统提供某些服务而有意使用访管指令或系统调用,从而导致执行程序的中断。这是程序员事先安排好的,其出现时机是可知的。上述按功能划分的访管中断就属于这一类。

  • 按中断事件来源划分

目前,很多小型机系统和微型机系统都采用这种分类方式。

(1)中断。它是由CPU以外的事件引起的,如I/O中断、时钟中断、控制台中断等。利用中断实现设备与CPU的通信。中断是异步的,因为从逻辑上讲,中断的产生与当前正在执行的进程无关。

(2)异常(Exception)。它是来自CPU内部的事件或程序执行中的事件引起的过程。如CPU本身故障(电源电压低于105 V,或频率在47~63 Hz之外)、程序故障(非法操作码、地址越界、浮点溢出等)和请求系统服务的指令(即访管指令)引起的事件等。可见,异常包括很多方面,主要有出错、陷入和可编程异常。出错和陷入之间最重要的区别是处理完异常事件返回时,出错事件会重新执行导致异常的那条指令,如缺页故障处理完之后还会尝试重新执行那条触发异常的指令(通常不会再缺页);而陷入事件则不会重新执行那条指令。陷入主要用于程序调试,被调试的进程遇到用户设置的断点会停下来等待你的处理,当你让它重新运行时,它就执行下面的指令。

可编程异常是由于用户在C程序中使用了系统调用而引发的过程。系统调用也称软件中断(或陷入)。应用程序使用系统调用就可由用户模式转入核心模式,在核心模式下完成相应的服务之后再返回用户模式。所以系统调用是用户程序与内核的接口。硬件对可编程异常的处理与对陷入的处理是一致的,即从这类异常返回时,也返回产生异常的下一条指令。



3.中断系统的作用

中断系统是当代计算机必不可少的组成部分之一。中断系统的作用主要有以下5点。

(1)提高主机的利用率,使高速CPU可以和低速的外部设备并行工作。

(2)及时进行事故处理。当计算机发生硬件故障或出现程序性错误(如运算结果溢出、除数为0、地址错、非法操作码等)时,可以通过中断系统进行处理。操作系统通过程序复执来排除偶然性错误,或将故障与错误记录下来,为故障诊断和机器恢复做好准备。

(3)实现分时操作。如前所述,在分时系统中正在运行的进程用完所分到的时间片后,就要让出CPU,排到相应的就绪队列中。在这里,依靠定时时钟对时间片进行计时,到达预定值时就产生时钟中断,调用进程调度程序进行相应处理。就是说,通过中断系统将CPU的时间分配给各个进程使用。

(4)实现实时操作。在实时控制系统中,很多信号是随机产生的,只有通过中断系统才能对它进行及时处理,避免信息的丢失。

(5)方便程序调试。利用中断可以方便地调试程序,可人为设置断点,随时中断程序的执行,查看中间结果,了解机器的工作状态,输入临时命令等。

相关推荐

卡巴斯基实验室成功将Linux系统的驱动程序移植到“KasperskyOS”

据os.kaspersky.com网站8月8日报道,俄罗斯卡巴斯基实验室启动了一个研究项目,将Linux驱动程序移植到卡巴斯基公司自主研发的操作系统KasperskyOS——这是该实验室创建的“安全...

服务器程序从 Windows 系统移植到 Linux/x86_64 平台时总是崩溃?

清华大学出版社的《高效C/C++调试》一书给出了回答:我们的服务器程序最初是为Windows系统开发的,第一次将它移植到Linux/x86_64平台时,它在回归测试中十次会崩溃八次,且仅在...

Linux系统的移植和裁剪(linux移植lvgl)

本节将嵌入式Linux系统按需求裁剪后移植到ARM处理器中。通过对Linux系统的了解和认识,我们在这里选择Linux4.1.15版本,该版本支持64位处理器,相对于前面几代Linux版本有了更大的提...

搭建RISC-V模拟环境(搭建虚拟环境)

现在RISC-V在主流操作系统上基本都能模拟了,不过我还是觉得Linux下好用。之前在Mac上想用Linux,基本就是在VirtualBox上创建一个虚拟机,从网上下一个Ubuntu的安装iso,安...

CPU虚拟化:陷入和模拟(cpu虚拟模式是什么)

导读:本文摘自于王柏生、谢广军撰写的《深度探索Linux系统虚拟化:原理与实现》一书,重点讨论了虚拟CPU在Guest模式下运行时,由于运行敏感指令而触发虚拟机退出的典型情况。作者:王柏生、谢广军来源...

《模拟山羊》恶搞僵尸主题DLC公布 《DayZ》躺枪!

近日,开发商CoffeeStain为我们带来了一个好消息,那就是奇葩游戏《模拟山羊(GoatSIMulator)》僵尸主题DLC“GoatZ”将于5月7日登陆PC,Mac,Linux,iOS和安卓...

「精品课程」模拟IC设计进阶(模拟ic设计师怎么样)

课程导语模拟集成电路设计最重要的是基础理论知识,基础理论的重要性很多人一开始并没有意识到,工作一段时间,做过几个项目以后就会深有感触。除此之外就是个人的学习能力和分析问题、解决问题的能力,其实这些能力...

跨平台神器:在Linux上轻松运行Windows软件的方法大揭秘!

Wine始于30年前的一个业余爱好项目,当时Windows3.1及其16位API出现了。在一个简单的“HelloWorld”程序之后,它很快就成功地让Solitaire运行起来。...

LAMMPS 模拟教程全新发布,助力科研入门分子模拟世界

https://arxiv.org/html/2503.14020v1本研究发布了8个层层递进的LAMMPS模拟教学教程,并配套开发了专属图形界面LAMMPS–GUI,显著降低了分子模拟的入门门槛。...

Linux趣味命令,每一个都能产生炫酷效果(示例)

Linux趣味命令,每一个都能产生炫酷的效果:cmatrix:模拟《黑客帝国》中的字符矩阵效果。bashCopycodecmatrixfortune:随机显示一句有趣的引语或笑话。bashCopy...

「免费!免费!Chris老师经典模拟课程」CMOS模拟电路设计流程

创芯大讲堂为广大学员发福利各位创芯大讲堂的同学们,即日起,凡当月购买大讲堂课程达到300元的同学可以享受创芯大讲堂全场课程8折优惠,凡当月购买创芯大讲堂课程达到500元的同学可以享受创芯大讲堂全场课程...

Gromacs基本模拟流程(gromacs运行命令)

GROMACS是一个使用经典分子动力学理论研究蛋白质动力学的高端的高效的工具。GROMACS是遵守GNU许可的免费软件,可以从以下站点下载:http://www.gromacs.org,并且可以在l...

国外友人开创Python模拟登陆神库,完美修改它为咱们所用

Awesome-python-login-model是一个国人开发的模拟登陆仓库,在这个仓库上有20几个网站的模拟登陆脚本,你可以基于这个仓库实现的代码做简易的修改,以实现自己的自动化功能。仓库地址...

并发模拟的四种方式+工具,超级实用

原文链接:https://mp.weixin.qq.com/s/jJDJ8YwmzkKS9KvfMamLWA一、PostmanPostman是一个款http请求模拟工具首先演示一下postman最基本...

精选模拟IC设计仿真课程(精选模拟ic设计仿真课程怎么样)

课程介绍本系列课程采用屏幕录制视频及操作解说的形式,注重于模拟芯片设计流程中的电路原理图设计、仿真及优化方法、版图设计、寄生参数提取及后仿真优化等的实际操作,在电路设计过程中学习模拟IC设计和验证方法...