操作系统-中断、关中断和开中断简介

中断、关中断和开中断
1、中断是什么
在计算机中,中断是系统用来响应硬件设备请求的一种机制,操作系统收到硬件的中断请求,会打断正在执行的进程,然后调用内核中的中断处理程序来响应请求。
中断是一种异步的事件处理机制,可以提高系统的并发处理能力。操作系统收到了中断请求,会打断其他进程的运行,所以中断请求的响应程序,也就是中断处理程序,要尽可能快的执行完,这样可以减少对正常进程运行调度地影响。
而且,中断处理程序在响应中断时,可能还会临时关闭中断,这意味着,如果当前中断处理程序没有执行完之前,系统中其他的中断请求都无法被响应,也就说中断有可能会丢失,所以中断处理程序要段且快。
2、软中断
linux系统为了解决中断处理程序执行过长和中断丢失的问题,将中断过程分成了两个阶段,分别是上半部和下半部分。
·上半部分用来快速处理中断,一般会暂时关闭中断请求,主要负责处理跟硬件紧密相关或者时间敏感的事情。
·下半部分用来延迟处理上半部分未完成的工作,一般以内核线程的方式运行。
举一个计算机中的例子,常见的网卡接收网络包的例子。
网卡收到网络包后,通过dma(dma:direct memory access,直接内存访问,是一些计算机总线架构提供的功能,它能使数据从附加设备,如磁盘驱动器,直接发送到计算机主板的内存上)方式将接收到的数据写入内存,接着会通过硬件中断通知内核由新的数据到了,于是内核就会调用对应的中断处理程序来处理该事件,这个事件的处理也是会分成上半部和下半部。
上半部分要做的事情很少,会先禁止网卡中断,避免频繁硬中断,而降低内核的工作效率。接着,内核会触发一个软中断,把一些处理比较耗时且复杂的事情,交给软中断处理程序去做,也就是中断的下半部,其主要是需要从内存中找到网络数据,再按照网络协议栈,对网络数据进行逐层解析和处理,最后把数据送给应用程序。
所以,中断处理程序的上部分和下半部可以理解为:
·上半部直接处理硬件请求,也就是硬中断,主要是负责耗时短的工作,特点是快速执行;
·下半部是由内核触发,也就说软中断,主要是负责上半部未完成的工作,通常都是耗时比较长的事情,特点是延迟执行。
还有一个区别,硬中断(上半部)是会打断cpu正在执行的任务,然后立即执行中断处理程序,而软中断(下半部)是以内核线程的方式执行;并且每个cpu都对应一个软中断内核线程,名字通常为[ksoftirqd/CPU 编号],比如0号cpu对应的软中断内核线程的名字是ksoftirqd/0
不过,软中断不只是包括硬件设备中断处理程序的下半部,一些内核自定义事件也属于软终端,比如内核调度等、RCU锁(内核里常用的一种锁)等。
3、系统里有哪些软中断
在linux系统里,我们可以通过查看/proc/softirqs的内容来知晓[软中断]的运行情况,以及/proc/interrupts的内容来知晓[硬中断]的运行情况。

中断是指cpu对i/o设备发来的中断信号的一种响应。cpu暂停正在执行的程序,保留cpu环境后,自动地去执行该i/o设备的中断处理程序。执行完后,再回到断点,继续执行原来的程序。i/o设备可以是字符设备、也可以是块设备、通信设备等。由于中断是由外部设备引起,故又称为外部中断。

陷入:
另外还有一种由cpu内部事件所引起的中断,例如进程在运算中发生了上溢或下溢,又如程序出错,如非法指令、地址越界、以及电源故障等。通常把这类的中断称为内中断或陷入(trap)。与中断一样,若系统发生了有陷入事件,cpu也将暂停正在执行的程序,转去执行该陷入事件的处理程序。中断和陷入的主要区别是信号的来源,即是来自cpu内部,还是cpu外部。

开中断状态(enabled interrupts):当计算机处于开中断状态时,意味着中断请求是被允许和相应的。这样,当一个中断请求被触发,处理器会立即停止正在执行的任务,并转去处理中断请求。这可以保证即时响应系统的各种中断事件。
关中断状态(disabled interrupts):当计算机处于关中断状态下,中断请求被禁止或忽略,处理器不会对中断信号进行响应。在关中断状态下,处理器会继续执行当前的任务,而不会立即响应响应中断请求。这种状态通常用于对某些关键任务或临界区的保护,以确保这些任务或临界区能够在不被中断的情况下完成。
开关中断状态通常由操作系统或应用程序控制。通过合理地设置中断状态,可以确保系统的可靠性、稳定性和数据完整性。开中断状态可以即时响应系统事件,提高系统的效率和实时性;而关中断状态可以防止中断干扰,保护关键任务或临界区的正确执行。具体的中断状态的切换和控制方法会根据不同的计算机体系结构和操作系统而有所差异。

  • 22
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当一个进程访问的页面或段不在主存储器中时,操作系统会产生缺页中断或缺段中断操作系统需要处理这些中断,以便将缺失的页面或段调入主存储器,使得进程可以继续执行。下面分别介绍缺页中断和缺段中断的处理过程: 1. 缺页中断处理: (1)操作系统会保存当前进程的上下文,并将控制权转移到内核态。 (2)操作系统会检查进程请求的页面是否可用,如果可用,则直接将页面映射到进程的地址空间中,并将控制权返回给进程。 (3)如果请求的页面不可用,则操作系统会选择一个页面将其从主存储器中替换出去,并将请求的页面从硬盘中读入主存储器中,然后将其映射到进程的地址空间中,并将控制权返回给进程。 (4)操作系统会更新页表,记录页面的状态和位置信息。 (5)最后,操作系统会恢复进程的上下文,使其继续执行。 2. 缺段中断处理: (1)操作系统会保存当前进程的上下文,并将控制权转移到内核态。 (2)操作系统会检查进程请求的段是否可用,如果可用,则直接将段映射到进程的地址空间中,并将控制权返回给进程。 (3)如果请求的段不可用,则操作系统会选择一个段将其从主存储器中替换出去,并将请求的段从硬盘中读入主存储器中,然后将其映射到进程的地址空间中,并将控制权返回给进程。 (4)操作系统会更新段表,记录段的状态和位置信息。 (5)最后,操作系统会恢复进程的上下文,使其继续执行。 需要注意的是,不同的操作系统对于缺页中断和缺段中断的处理方式可能会有所不同。例如,在Linux操作系统中,缺页中断的处理过程涉及到页面置换算法的选择,而缺段中断的处理过程则需要考虑段的权限和保护等问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值