52 硬中断的实现

前言

呵呵 中断机制 也是内核中很常见的机制了 

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

 

硬中断的处理

通过 ax 传递中断号, 获取对应的 irq_desc

然后 irq_desc 会有一系列 irq_action 来依次处理 当前中断

(initramfs) cat /proc/interruptsCPU00:       2255   IO-APIC   2-edge      timer1:          9   IO-APIC   1-edge      i80424:       2351   IO-APIC   4-edge      serial8:          1   IO-APIC   8-edge      rtc09:          0   IO-APIC   9-fasteoi   acpi12:          3   IO-APIC  12-edge      i804214:        178   IO-APIC  14-edge      ata_piix15:         38   IO-APIC  15-edge      ata_piix
NMI:          0   Non-maskable interrupts
LOC:      19244   Local timer interrupts
SPU:          0   Spurious interrupts
PMI:          0   Performance monitoring interrupts
IWI:          0   IRQ work interrupts
RTR:          0   APIC ICR read retries
RES:          0   Rescheduling interrupts
CAL:          0   Function call interrupts
TLB:          0   TLB shootdowns
TRM:          0   Thermal event interrupts
THR:          0   Threshold APIC interrupts
DFR:          0   Deferred Error APIC interrupts
MCE:          0   Machine check exceptions
MCP:          2   Machine check polls
ERR:          0
MIS:          0
PIN:          0   Posted-interrupt notification event
PIW:          0   Posted-interrupt wakeup event

 

硬中断这部分处理是在 irq.do_IRQ 中进行处理的 

ata_piix 对应的 handler 是 libata-sff.ata_bmdma_interrupt

serial 对应的 handler 是 8250_core.serial8250_interrupt 

timer 对应的 handler 是 time.timer_interrupt 

i8042 对应的 handler 是 i8042.i8042_interrupt 

 

 

在哪里注册中断?

这部分中断通常来说是 系统启动 的时候注册的

ata_piix 对应的两个 硬中断

 

37bf8fb9b1bd4abe9b38630c245b657d.png

9881a1e0e3214297925c571f2565ecac.png

 

 

 

i8042 注册的两个 硬中断

810aebfb24cf4849b94136faa7f2d1bd.png

0f5d3f20dca14cbc847de5c1c28a071d.png

 

serial 注册的一个硬中断 

 

 

 

457ad46a186b439593cdd5ca386c557d.png

 

 

atta_piix 中断的处理 

如下 硬件发出中断 会来到 中断处理层, 再到具体的 ata层, 再到 scsi 层

 

5a3df481b4a14c60acb08dee35b3296b.png

 

 

serial 中断的处理

如下 硬件发出中断 会来到 中断处理层, 再到具体的 串口层 

255c8c4ca92d48f19430e7b0a0f0a28e.png

 

 

timer中断的处理

654f805263a74e7ba543ffc6387a5933.png

 

 

i8042中断的处理

1 号中断 

d2fc20e643094bb8b8e143cefc03f432.png

 

12 号中断 

4b0f932e67ee4b1b81b7adec9638e446.png

 

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/748436.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024.2.21校招 实习 内推 面经

绿*泡*泡VX: neituijunsir 交流*裙 ,内推/实习/校招汇总表格 1、校招 | 顺丰科技2024届春季校园招聘正式启动(内推) 校招 | 顺丰科技2024届春季校园招聘正式启动(内推) 2、面经 | OPPO 23届秋招 - 算法…

idea Springboot 在线考试管理系统开发mysql数据库web结构java编程计算机网页

一、源码特点 springboot 在线考试管理系统是一套完善的完整信息系统,结合mvc框架和bootstrap完成本系统springboot spring mybatis ,对理解JSP java编程开发语言有帮助系统采用springboot框架(MVC模式开发),系统具有…

关于-机器人学导论

机器人学导论,经典的基础教材,原书叫introduction to robotics mechanics and control ,在网上看到这个下载,这个好像不像有些书已经免费了,但是太经典拿它当教材的很多,最好看清晰的纸质版,特别…

java-ssm-jsp基于java的信访管理系统的设计与实现

java-ssm-jsp基于java的信访管理系统的设计与实现 获取源码——》公主号:计算机专业毕设大全 获取源码——》公主号:计算机专业毕设大全

pip/huggingface/conda常用命令笔记

conda命令: conda创建环境: #conda create -n 环境名称 python版本号 conda create -n ppt python3.10 pip命令: 使用国内镜像源下载: #清华镜像 # pip install 依赖包 -i 镜像源 pip install torch -i https://pypi.tuna.tsi…

经典排序算法的性能分析

文章目录 前言时间复杂度空间复杂度稳定性 前言 通过前面的学习,我们了解到了七大经典的排序算法:直接插入排序、希尔排序、选择排序、堆排序、冒泡排序、快速排序、归并排序. 那么下面就这其中算法的时间复杂、空间复杂度和稳定性进行分析。 时间复杂…

Linux上的利器:安装配置ClamAV防病毒引擎

前言 ClamAV是一个开源的防病毒引擎,用于在Linux系统上扫描文件和电子邮件以检测恶意软件。本文将指导你如何在Linux系统上安装和配置ClamAV,以保护你的系统免受恶意软件的侵害。 步骤 1:安装ClamAV 首先,使用你Linux系统的包管…

Gitlab CI/CD 自动化打包部署前端(vue)项目

一、虚拟机安装 1.vmware下载 2.镜像下载 3.Ubuntu 4.新建虚拟机 一直点下一步,直到点击完成。 5.分配镜像 二、Gitlab CI/CD 自动化部署项目 1.配置GitLab CI/CD: A.在你的Vue.js项目中,创建一个名为.gitlab-ci.yml的文件&#xff0…

windbg调试协议wireshark抓包解析插件

把目录下文件复制到如下位置,Wireshark支持版本4.0以上 C:\Program Files\Wireshark\plugins\4.0\kdnet.lua C:\Program Files\Wireshark\gcrypt.dll C:\Program Files\Wireshark\luagcrypt.dll 启动 “C:\Program Files (x86)\Windows Kits\10\Debuggers\x64\windbg.exe” -k …

使用vscode——配置vue3用户代码片段

一、 设置/配置用户代码片段 二、点击新建全局代码片段文件输入vue.json 三、配置代码片段、 {"Print to console": {"prefix": "vue3","body": ["<template>"," <div></div>","</te…

express+mysql+vue,从零搭建一个商城管理系统14--快递查询(对接快递鸟)

提示&#xff1a;学习express&#xff0c;搭建管理系统 文章目录 前言一、安装md5&#xff0c;axios&#xff0c;qs二、新建config/logistics.js三、修改routes/order.js四、添加商品到购物车总结 前言 需求&#xff1a;主要学习express&#xff0c;所以先写service部分 快递鸟…

Linux进程补充

进程 一、进程创建 1.fork fork() //Linux创建子进程的系统调用&#xff0c;允许创建多个子进程&#xff0c;使用循环创建多个子进程&#xff1b; //需要注意的是&#xff0c;创建出来的进程与父进程在调度是由调度器决定的&#xff0c;并没有严格的先后顺序&#xff1b;二、…

组建对等网

一、概念 对等网络&#xff08;Peer-to-Peer, P2P&#xff09;是一种分布式网络架构&#xff0c;其中每个参与节点&#xff08;称为"对等体"或"节点"&#xff09;既可以作为客户端也可以作为服务器&#xff0c;直接与网络中的其他节点分享资源&#xff08…

基于Python django的人脸识别门禁系统,附源码

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、Python技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&…

C语言课后作业 20 题+考研上机应用题

题目 1: 计算圆的面积 描述&#xff1a; 输入圆的半径&#xff0c;计算并输出圆的面积。 题目 2: 判断一个年份是否为闰年 描述&#xff1a; 输入一个年份&#xff0c;判断并输出该年份是否为闰年。 题目 3: 计算并输出斐波那契数列的前10个数 描述&#xff1a; 输出斐波那…

Chrome的V8引擎 和操作系统交互介绍

Chrome的V8引擎是一个用C编写的开源JavaScript和WebAssembly引擎&#xff0c;它被用于Chrome浏览器中&#xff0c;以解释和执行JavaScript代码。V8引擎将JavaScript代码转换为机器代码&#xff0c;这使得JavaScript能够以接近本地代码的速度运行。 V8引擎与操作系统的交互主要体…

亚马逊国际获得AMAZON商品详情 API 返回值说明

亚马逊国际的商品详情API返回值通常包含了关于商品的详细信息&#xff0c;这些信息对于开发者来说是非常有价值的&#xff0c;因为它们可以用于构建电商应用、展示商品信息、比价购物等场景。 item_get-获得AMAZON商品详情调用链接获取 amazon.item_get 公共参数 下面是一个简…

Adobe PDF背景设置护眼模式,缓解眼部疲劳

一、背景 在用Adobe PDF看论文时&#xff0c;默认的白色背景看久了&#xff0c;眼睛会特别疲劳&#xff0c;下面介绍如何设置背景为护眼模式。 二、设置PDF为护眼模式 使用Adobe Acrobat Pro DC打开任意PDF文件&#xff0c;在上方工具栏选择“编辑”&#xff0c;在下拉菜单栏…

浏览器同源策略及跨域问题

同源策略&#xff1a;同源策略是一个重要的安全策略&#xff0c;它用于限制一个源的文档或者它加载的脚本如何能与另一个源的资源进行交互。它能帮助阻隔恶意文档&#xff0c;减少可能被攻击的媒介。 同源策略的作用&#xff1a;保护浏览器中网站的安全&#xff0c;限制ajax只…

C++静态成员函数和非静态成员函数之间的相互调用

C静态成员函数和非静态成员函数之间的相互调用 一直对C静态成员函数和非静态成员函数之间的相互调用记不住&#xff0c;都是死记硬背&#xff0c;今天突然醍醐灌顶&#xff1b; 1、静态成员函数不能调用非静态成员函数&#xff0c;因为静态成员函数属于类&#xff0c;没有this…