中断系列第二篇:中断的使用场景?

简介: 中断系列第二篇:中断的使用场景?

外部硬件的中断是通过两根信号线通知CPU的,这两根信号线就是INTR(INTeRrupt)和NMI(Non Maskable Interrupt)。

  • NMI中断,不可屏蔽中断,产生这个中断的时候,表示系统发生了致命的错误。
  • INTR可屏蔽中断。

那么要讨论这个应用得场景,就需要分不同的中断进行讨论。

1、NMI中断

1、应用场景:

  • watchdog
  • 调试、跨 PE 同步和热补丁
  • 操作系统依赖中断来支持性能分析
  • RAS事件处理

2、NMI在Linux的应用

当系统挂起,失去响应的时候,可以人工触发NMI,使系统重置,如果早已配置好了kdump,那么会保存crash dump以供分析。

有的服务器提供了NMI按钮,而刀片服务器通常不提供按钮,但可以用iLO命令触发。

Linux还提供一种称为”NMI watchdog“的机制,用于检测系统是否失去响应(也称为lockup),可以配置为在发生lockup时自动触发panic。

原理是周期性地生成NMI,由NMI handler检查hrtimer中断的发生次数,如果一定时间内这个数字停顿了,表示系统失去了响应,于是调用panic例程。

NMI watchdog的开关是通过内核参数 kernel.nmi_watchdog 或者在boot parameter中加入”nmi_watchdog=1″参数实现,比如:在RHEL上编辑 /boot/grub/menu.lst

Linux kernel笼统地把NMI分为三大类:

  • 内存校验错 mem_parity_error(),
  • 总线数据损坏 io_check_error(),
  • 其他的全部归入 unknown_nmi_error()

2、INTR中断

这个就很常见了,外设、软件、异常都有


目录
相关文章
|
数据采集
JSoup 爬虫遇到的 404 错误解决方案
JSoup 爬虫遇到的 404 错误解决方案
|
域名解析 网络协议 Linux
解决Linux环境中ping域名ping不通,ping ip地址可以ping通问题
解决Linux环境中ping域名ping不通,ping ip地址可以ping通问题
解决Linux环境中ping域名ping不通,ping ip地址可以ping通问题
|
NoSQL Java Redis
Spring Boot 监听 Redis Key 失效事件实现定时任务
Spring Boot 监听 Redis Key 失效事件实现定时任务
449 0
|
分布式计算 大数据 数据处理
经典大数据处理框架与通用架构对比
【6月更文挑战第15天】本文介绍Apache Beam是谷歌开源的统一数据处理框架,提供可移植API,支持批处理和流处理。与其他架构相比,Lambda和Kappa分别专注于实时和流处理,而Beam在两者之间提供平衡,具备高实时性和数据一致性,但复杂性较高。选择架构应基于业务需求和场景。
1099 3
经典大数据处理框架与通用架构对比
|
存储 JSON API
淘宝直播间弹幕API接口(taobao.item_video_barrage)
淘宝直播间弹幕 API(`taobao.item_video_barrage`)用于获取直播间的弹幕数据。通过指定直播间 ID 和模式参数(如 `start` 建立连接、`refresh` 获取弹幕),可以获取弹幕消息列表、直播间信息等。响应数据为 JSON 格式,包含状态码、直播间 ID、连接状态和弹幕详情。使用时需注意权限限制、接口稳定性和数据处理。
1369 7
|
存储 传感器 算法
如何选择合适的 CRC 多项式
CRC(循环冗余校验)多项式的选取对数据传输的错误检测至关重要。选择时需考虑多项式的长度、检测性能及实现复杂度,常用多项式有CRC-8、CRC-16、CRC-32等,适用于不同场景以确保高效准确的错误检测。
1796 4
|
存储 编解码 数据挖掘
一篇文章掌握大厂成本优化框架
一篇文章掌握大厂成本优化框架
|
Rust 开发工具 开发者
Rust社区揭秘:从开源项目到贡献指南,解锁你成为Rust大神的隐藏路径!
【8月更文挑战第31天】Rust 作为一门强调性能、安全与并发性的系统编程语言,凭借其独特的内存管理和强大的类型系统,在开源社区迅速崛起。本文通过对比不同 Rust 开源项目(如微服务框架 fusen-rs 和 QUIC 协议库 tquic),探讨其社区现状,并详细介绍如何参与贡献,包括提交 Issue、Pull Request 及遵循代码规范。Rust 社区活跃友好,聚集了众多开发者,但仍需更多人参与开源项目,共同推动其发展。无论新手还是专家,均可在 Rust 社区中发挥所长。
584 3
|
应用服务中间件 Shell 网络安全
nginx安装提示 libssl.so.3: cannot open shared object file: No
【8月更文挑战第1天】### 原因 未将安装的ssl中的`libssl.so.3`链接到`/usr/lib`导致缺失。 ### 解决方案 1. 检查openssl是否已安装,若为低版本则需重装。 ```sh whereis openssl
7184 6
|
Ubuntu 关系型数据库 PostgreSQL
部署harbor
在Ubuntu 22.04 LTS环境下,部署Harbor私有仓库的步骤包括:确保已安装Docker(版本24.0.6),参考官方v2.5.3安装指南,注意避免在NFS4挂载磁盘上部署以防止PostgreSQL相关问题。首先,生成SSL证书,然后更新Docker配置并重启服务。解压并配置Harbor离线安装包,修改`harbor.yml`,执行`prepare`和`install.sh`脚本,最后将Harbor设置为系统服务。
735 0