首页 > 其他分享 >0、软中断与硬中断的区别

0、软中断与硬中断的区别

时间:2024-07-21 15:51:07浏览次数:12  
标签:区别 中断 处理 屏蔽 完成 CPU 外设

一、硬中断
由与系统相连的外设(比如网卡、硬盘)自动产生的,主要是用来通知操作系统系统外设状态的变化。

可屏蔽中断 ——当 CPU 接收到更高优先级的中断时,这些中断可以被延迟。

不可屏蔽中断 ——无法延迟这些中断。 CPU 应该立即考虑它们。

二、软中断
为了满足实时系统的要求,中断处理应该是越快越好。linux为了实现这个特点,当中断发生的时候,硬中断处理那些短时间就可以完成的工作,而将那些处理事件比较长的工作,放到中断之后来完成,也就是软中断(softirq)来完成。

三、区别
1. 引发对象:硬中断是由外设引发的,软中断是执行中断指令产生的,无需外部施加中断请求信号。
2. 提供中断号:硬中断的中断号是由中断控制器提供的,软中断的中断号由指令直接指出,无需使用中断控制器。
3. 耗时:硬中断处理程序要确保它能快速地完成任务,这样程序执行时才不会等待较长时间,称为上半部。软中断处理硬中断未完成的工作,是一种推后执行的机制,属于下半部。

硬中断(Hardware Interrupts)是由外部设备发起的,通常用于表示设备需要CPU的注意,例如I/O操作完成、定时器中断等。硬中断通常是可屏蔽的,这意味着在处理某个硬中断过程中,CPU可以禁止响应其他硬中断,以防止嵌套中断带来的问题。当然,也有一些特定情况下的硬中断是不可屏蔽的,例如非屏蔽中断(Non-Maskable Interrupt, NMI)。

软中断(Software Interrupts)则是由软件主动触发的,通常用于实现系统调用、异常处理等。软中断的可屏蔽性取决于具体实现和系统需求。在某些情况下,软中断可能是不可屏蔽的,以确保某些关键任务或异常处理能够得到优先执行。然而,在其他情况下,软中断可能是可以屏蔽的,以避免嵌套中断或提高系统性能。

 

https://zhuanlan.zhihu.com/p/586121191   可以参考

标签:区别,中断,处理,屏蔽,完成,CPU,外设
From: https://www.cnblogs.com/liusiluandzhangkun/p/18314561

相关文章

  • 蓝桥杯单片机学习(Day14 实现操作外部开启中断)
    外部中断相关寄存器的配置方法和触发方式:        实验配置:    [email protected],J3跳线配置为IO方式,J5配置为BTN、J2配置为1-3和2-4。配置方法:        EX0、IT0负责外部中断0服务函数的开启其中断服务函数优先级为interrupt0,EX1、IT1负责......
  • 1、异常与中断的概念及处理流程
     1中断的引入1.1妈妈怎么知道孩子醒了妈妈怎么知道卧室里小孩醒了?①时不时进房间看一下:查询方式简单,但是累②进去房间陪小孩一起睡觉,小孩醒了会吵醒她:休眠-唤醒不累,但是妈妈干不了活了③妈妈要干很多活,但是可以陪小孩睡一会,定个闹钟:poll方式要浪费点时间,但是可以继......
  • 08 ES6的for...of和for...in的区别
    在JavaScript中,for...in和for...of是两种不同的循环结构,它们分别在不同的ECMAScript版本中被引入,并且具有不同的用途和特性。for...in循环(ES5)for...in是ECMAScript5(ES5)中引入的,用于遍历对象的可枚举属性和数组的索引。它提供了一种方式来获取对象的键或数组的索引。......
  • 多线程同步机制中 lock_guard 与 unique_lock 的使用区别
    ......
  • ElasticSearch - match和term有什么区别
    match和term 查询是两种常用的查询方式,在用途和行为上有着显著的差异:1.match查询全文搜索:match查询用于全文搜索场景。它在查询之前对字段值和查询字符串进行分词(tokenization)处理。分析器(Analyzer)应用:match查询会应用字段指定的分析器(如果有的话)来处理查询字符串。这意......
  • 【C#】-目标平台×86、×64、Any CPU的区别
    简单来说,×86平台:将程序集编译为由兼容×86的32位公共语言运行库运行。×64平台:将程序集编译为由支持AMD64或EM64T指令集的计算机上的64位公共语言运行库运行。AnyCPU:(默认值)将程序集编译为在任意平台上运行。ltanium:将程序集编译为由采用ltanium处理器的计算机上的64位公共语言......
  • 论文写作:test 和 testing 使用的区别
    "test"和"testing"的区别主要在于它们在句子中的用途和语法功能:Test:名词:指的是一次测试或考试。例如:"Thestudentstookamathtest.""Hepassedthedrivingtest."动词:指进行测试的动作。例如:"Theywilltestthenewsoftwaretomorrow.""Thesc......
  • Python教程:json中load和loads的区别
    一.相同点dump和dumps都实现了序列化load和loads都实现反序列化变量从内存中变成可存储或传输的过程称之为序列化序列化是将对象状态转化为可保存或可传输格式的过程。变量内容从序列化的对象重新读到内存里称之为反序列化反序列化是流转换为对象。二.区别1.load......
  • _findnext()调试中断,发生访问错误,错误定位到ntdll.dll
    问题:采用_findfirst和_findnext获取指定的文件夹下的文件时,_findnext()函数在调试时发生中断,发生访问错误,错误定位到ntdll.dll。错误提示如下所示:_findnext0x00007FF849ABFAAD(ntdll.dll)处(位于XXXXXXXXXXX.exe中)引发的异常:0xC0000005:写入位置0x0000000073BAD650时......
  • shell 下 exec,source,.,bash和sh以及export得区别
    exec执行命令时,不会启用新的shell进程。  source和.也不会启用新的shell进程,在当前shell中执行,设定的局部变量在执行完命令后仍然有效。  bash或sh执行时,会另起一个子shell进程,其继承父shell进程的环境变量,其子shell进程的变量执行完后不影响父shell进程。  exec是用被执行......