X86CPU对中断的硬件支持

编译一个嵌入式LInux内核的配置清单 ## Automatically generated make config: dont edit# Linux kernel version: 2.6.27.13## CONFIG_64BIT is not setCONFIG_X86_32=y# CONFIG_X86_64 is not setCONFIG_X86=yCONFIG_ARCH_DEFCONFIG="arch/x86/config 阅读详情

中断有两种,一种是由CPU外部产生的,另一种是由CPU本身在执行过程的过程中产生的。

外部中断时“异步”的。CPU(或软件)对外部中断的响应是被动的。不过,软件可以可以通过“关中断”指令关闭对中断的响应。

由软件产生的“中断”则不同,它由专设的指令,在程序中有意地产生的。所以是主动的,“同步”的。被称为“陷阱”(trap)。

当出现不当的操作,被称为“异常”,一般也是异步的,被动的。

无论是哪一种情况,CPU的响应过程却基本上一致。在执行完当前指令以后,或者在执行当前指令的过程中,就根据中断源所提供的“中断向量”,在内存中找到相应的服务程序入口并调用该服务程序。

实地址模式
CPU把内存中从0开始的1K字节作为一个中断向量表。表中的每个表项占四个字节,有两个字节的段地址和两个字节的位移组成。这样构成的地址便是相应中断服务程序的入口地址。

保护模式

引进了“门”的概念,当中断发生的时候必须先通过这些门,才能进入相应的服务程序。当想切换CPU的运行状态也要通过这一道门。
当中断发生时不但可以切换CPU的运行状态并转入中断服务程序,并且需要进行一次任务切换(上下文切换)。通过“中断服务进程”进行。
按不同的用途和目的,CPU中一共有四种门,即任务门、中断门、陷阱门以及调用门(除任务门以外其他三种门的结构基本相同)。


TSS段选择码的作用和寄存器CS、DS等相似,通过GDT或LDT指向特殊的“系统段”中的一种,称为“任务状态段”;TSS实际上是一个用来保存任务运行的“现场”的数据结构,其中包括CPU中所有与具体进程有关的寄存器内容(包括页面目录指针CR3),还包括三个堆栈指针(针对0,1,2级别)。
中断发生时,CPU在中断向量表中找到相应的表项。如果此表项是一个任务门,并且通过优先级别的检查,CPU就会将当前任务的运行现场保护在相应的TSS中。并将任务门所指的TSS作为当前任务,将其内容装入CPU的各个寄存器,从而完成任务的切换。
任务寄存器(TR)用来指向当前任务的TSS。
中断门、陷阱门和调用门的不同之处在于3位类型码;与任务门相比,任务门不需要段内位移,任务门不指向一个子程序,而其余三种门要指向子程序。此外任务门的D标志位永远都是0。

中断门和陷阱门的区别在于通过门时,CPU是否将EFLAGS寄存器中的IF标志位清成0,通过中断门将清除IF标志位,通过陷阱门将维持IF标志位不变。
当进入中断,先通过比对CPU的运行级别和中断门的运行级别,通过后,CPU要将当前EFLAGS寄存器的内容以及返回地址压入堆栈。(返回地址由段寄存器CS的内容和取指令指针EIP的内容共同组成),当CPL(CPU的运行级别)与目标表项的运行级别相同,则结束切换。如果CPL小于目标表项的DPL(中断发生在用户态),则发生堆栈更换。再从TSS中取到对应的新的堆栈指针(SS加ESP)并装入其堆栈寄存器SS和堆栈指针(寄存器)ESP,达到跟换堆栈的目的。

在保护模式中,中断向量表在内存中的位置不再限于从地址0开始的地方,而是像GDT和LDT那样可以在内存中的任何地方。为此,在CPU中又增设了一个寄存器IDTR,指向当前中断向量表IDT(中断描述表)。


















ARM、x86、RISC-V三大架构中断流程深度对比:一条主线看懂GIC、APIC与PLIC 中断是嵌入式系统与底层软件开发中响应异步事件的核心机制,其本质是处理器在执行流中插入一段优先级更高的处理逻辑。中断控制器作为连接外设与CPU的枢纽,负责中断源的收集、优先级仲裁与分发,不同架构的实现方式各有特色:ARM采用GIC统一管理中断状态机,x86依赖APIC与IDT实现向量号驱动的查表分发,RISC-V则通过PLIC与CLINT配合CSR寄存器提供极致精简的软件自管理模型。理解三者共通的“请求-仲裁-响应-处理-恢复”主线,不仅有助于快速上手内核移植、驱动开发和BSP bringup,更能举一反三地 阅读详情

相关推荐

零基础学pcie--MSI 的本质(PCIe 的原生中断)

摘要: MSI(消息信号中断)利用PCIe内存写事务(Memory Write TLP)向CPU中断控制器写入特定数据来触发中断,无需传统边带信号。其核心是MessageAddress(目标寄存器地址)和MessageData(中断向量及目标CPU)。MSI优势包括:免共享中断(精准定位)、天然支持多核(可指定目标CPU)、硬件实现简单(无需额外引脚)。但存在中断数量有限(最多32个)和共享地址的限制,为MSI-X的优化(如多队列支持)埋下伏笔。关键结论:MSI通过内存写事务实现高效中断,是多核时代的基础方

xiaoheshang_123的博客 26

linux内核-X86CPU对中断的硬件支持

本博客不讨论严格意义上的中断响应全过程(比如说,怎样获得中断向量),而是着重讨论CPU在响应中断时,即在得到了中断向量以后,怎样进入相应的中断服务程序的过程。这是从操作系统的角度需要关心的问题。Intel x86 CPU支持256个不同的中断向量,这一点至今未变。可是,早期x86 CPU的中断响应机制非常原始、非常简单的。在实地址模式中,CPU把内存中从0开始的1K字节作为一个中断向量表。表中的每一个表项占四个字节,由两个字节的段地址和两个字节的位移组成。这样构成的地址便是相应中断服务程序的入口地址。这与1

guoguangwu的专栏 2628

手把手教你学pcie-MSI 的本质(PCIe 的原生中断)

*MSI 的本质,是用 Memory Write TLP 向 CPU 中断控制器“写一个数”,从而在不依赖边带信号的前提下,实现精确、可扩展的中断。**

MHD0815的博客 31

x86中断基础

介绍x86系统中断

tq1086的博客 1372

X86架构以及硬件设计要点.pptx

CPU内存空间 PCIE配置空间 如何访问各个控制器的寄存器 电源设计 DCDC选型 MOS 电感等等 需要考虑哪些因素 PCB设计要点 辅助设计工具等等介绍

手把手教你用Origin拟合真应力-真应变曲线:从数据到加工硬化指数n的完整流程

本文详细解析了如何使用Origin软件拟合真应力-真应变曲线并计算加工硬化指数n的全流程。从数据预处理、曲线绘制到Hollomon方程拟合,逐步指导材料科学研究人员完成实验数据分析,帮助准确评估金属材料的力学性能与强化特性。

view3的博客 715

操作系统中断概念梳理

CPU 通过指令计数器(PC)存储当前要执行的指令的内存地址,并通过译码器、寄存器等硬件实现指令的执行,这是一个串行的过程。中断的设计允许 CPU 在一个指令周期结束后,可以转去执行其他的程序(中断服务程序),在执行完后再返回原来被中断的程序。中断的支持让 CPU 可以灵活的执行指令,从而能进一步的实现多道程序的运行(并发)、故障处理等功能。

sailist的记录站 2906

激光定位算法竞技场:hdl_localization与Cartographer/AMCL的横向技术解剖

本文深入对比了hdl_localization、Cartographer和AMCL三种激光定位算法的技术原理与性能表现。通过UKF-NDT融合、图优化和粒子滤波等核心技术,分析了各算法在结构化环境、动态环境和大尺度场景下的适应性。实验数据表明,Cartographer在全局一致性上表现最优,而AMCL在动态环境中更具鲁棒性。文章还提供了算法选型指南和参数调优技巧,为工程实践提供参考。

weixin_29062865的博客 365

X86支持多少个中断向量

文章目录废话,请略过。。。。。。中断支持数量官方文档链接 废话,请略过。。。。。。 这几天在讨论到PCIe设备实现的中断支持的时候遇到一个问题,已知MSI-X支持2048各中断向量,多队列想要给每个队列都分配一个中断,但是却没有考虑PC的中断控制器能够支持分配多少个中断。于是开始搜集相关的信息,但是相关的内容介绍很少,不太敢确定,于是去英特尔官网找相关的文档,但是又不太好找,于是记录下来,希望能帮到有需求的人。 中断支持数量 x86支持256中断源。 可以看到官方文档明确说只有256个异常或中断向量。

weixin_44767014的博客 435

Zemax光学设计——单透镜设计

(1)在镜头数据编辑器中面2那一栏中的“曲率半径”栏右侧的方格中单击,弹出“在面2上的曲率解”对话框(2)将对话框中的求解类型设为“F数”(3)将“F/#”设置为10设置完成后,其中的一些数据会发生变化在初始结构中,透镜的曲率半径和厚度未知,,这些参数需要软件自动优化得到,但可以使用透镜后表面上边缘厚度解得到近轴焦平面的位置在透镜后表面的厚度上单击鼠标右键,选择边缘光线求解类型,它表示近轴边缘光线会自动在下一个表面上聚焦并确定距离值。

yangSHU21的博客 2万+

SAP 屏幕增强:客户商主数据屏幕增强(KNA1、KNB1、KNVV)

本文介绍了SAP系统中针对客户主数据(KNA1、KNB1、KNVV)进行屏幕增强的具体实现方法。主要内容包括:1)在SPRO配置中创建新条目;2)通过SE80创建函数组和程序(LZKNA1TOP等);3)设置子屏幕9001并添加自定义结构字段;4)利用BADI(CUSTOMER_ADD_DATA等)实现数据交互逻辑。文章分别详细说明了针对客户主数据的一般数据(KNA1)、公司代码数据(KNB1)和销售数据(KNVV)三类不同数据的增强配置步骤,包括函数模块创建、屏幕设置和BADI方法调用等关键技术点。

SAP ABAP开发技能记录分享 1616

【实时Linux核心技术】实时Linux硬件选型指南:x86/ARM/RISC-V平台适配差异

实时Linux在工业自动化等领域应用广泛,硬件选型对实时性能至关重要。ARM平台(如RK3506/RK3588)具有微秒级中断响应优势,x86平台支持虚拟化技术(VT-x/AMD-V),RISC-V则通过扩展指令集优化实时任务。选型核心指标包括:中断延迟(ARM优势明显)、CPU隔离能力(减少任务干扰)和DMA支持(降低CPU负载)。建议使用cyclictest工具测试延迟,选择支持低延迟和隔离的CPU核心,并优化DMA传输路径。不同平台各有侧重,需根据具体应用需求选择合适方案。

望获实时Linux系统 1096

在WinXP操作系统上安装Tornado2.2详细教程

使用VxWorks的人都想在自己的电脑中装VxWorks的编译器Tornado,然而Win10操作系统对于Tornado并不友好,根本装不成功。而对于Win7操作系统,之前在实验室一台Win7上装Tornado成功过,并且一直在上面进行vx开发,但是过一段时间在其他Win7上装Tornado时又不能成功,由此说明Tornado对于Win7操作系统对Tornado的兼容也不是很好,所以想要长久使用T...

weixin_43822311的博客 4481

PV操作不可中断理解

而操作系统中之所以通过PV操作来访问信号量可以用来实现进程互斥同步,也是因为PV原语是不可中断的,是原子操作。根据上方百度百科对原子操作的介绍可知,在单处理机模式下,当多个进程并发访问临界资源时,P操作原语可以将最先执行到该原语代码的进程置于不可中断的状态,此时其他并发进程由于不能通过CPU将该进程中断而进行抢占CPU资源,从而进入block状态,等到该进程执行v操作原语后,唤醒其中一个阻塞进程恢复成ready状态。...........................

AdamShyly的博客 1146

黑暗中的爆破(船讯网Ais爬虫暨爬虫实战js逆向学习经验分享)

船讯网 爬虫 js逆向 python

returnadsss的博客 1576

Qt CEF融合技QCefView使用教程

如果从事C++客户端开发,对CEF应该不陌生,当C++界面需要和web交互时,CEF是很好的解决方案,当然Qt也提供了QWebEngineView来进行web交互,最近在万兴喵影的安装目录看到了QCefView.dll,之前也听说过这个库,没在意,没想到还真有人用到项目里面,于是决定自己编译写个demo看看......

琅嬛福地 1万+

揭秘rosenbridge:x86 CPU硬件后门完全指南

rosenbridge是一项重要的研究项目,揭示了某些桌面、笔记本和服务器x86 CPU中存在的硬件后门。这一发现为计算机安全领域带来了新的挑战和思考,让我们对硬件级别的安全有了更深入的认识。 ## 什么是rosenbridge硬件后门? rosenbridge后门是一个小型的非x86核心,与CPU的主x86核心一起嵌入。它能够直接访问系统内存、中断控制器和系统管理模式(SMM),这意味着它可

gitblog_00670的博客 643

[密码学实战]密评考试训练系统v1.0程序及密评参考题库(获取路径在文末)(二十四)

本系统将密码学理论与软件工程实践相结合,为密评备考提供了高效解决方案。随着《密码法》的深入实施,掌握密评知识将成为信息安全从业者的核心竞争力。立即开始您的密码安全专家之旅!(注:实际应用请以最新发布版本为准)

曼岛_的博客 797

x86、ARM、RISC-V中断流程对比:从触发到返回

中断是现代处理器中异步事件处理的关键机制,其完整流程涉及中断源、中断控制器、CPU响应、入口定位、上下文切换与恢复。不同架构如x86、ARM、RISC-V在实现上存在显著差异:x86依赖IDT与中断门,硬件参与度高;ARM借助GIC和多模式切换,平衡灵活性与性能;RISC-V则以极简的mtvec和软件主导的现场保存著称。理解这些差异对嵌入式开发、内核移植和实时系统设计具有重要意义。本文通过对比三种架构的中断处理流程,揭示其共性主线,帮助工程师快速掌握跨架构中断开发的核心技巧,并针对中断延迟优化、嵌套中断处理

weixin_33951761的博客 350

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

软件debug-硬件基础

著名的计算机科学家布莱恩·柯林汉(Brian Kernighan)说过,“软件调试要比编写代码困难一倍,如果你发挥了最大才智编写代码,那么你的智商便不足以调试它。此外,软件调试是软件开发和维护中非常繁重的一项任务,几乎在软件生命周期的每个阶段,都有很多问题需要调试。

weixin_44294645的博客 620

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

KVM 中断虚拟化

摘要:中断虚拟化技术通过软件模拟或硬件辅助实现虚拟机对中断的透明处理,包括纯软件模拟和硬件辅助两种方案。硬件辅助方案(如x86的APICv/ARM的GICv4)利用CPU硬件特性直接投递中断,显著降低延迟和VM-Exit次数,但存在硬件依赖性、迁移复杂等缺点。该技术核心是中断注入流程,需VMM、KVM和硬件协同完成,在保证隔离安全的同时提升I/O性能,是云计算环境的关键支撑技术。

tangzhangyin的专栏 412

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

x86处理器四大核心技术:TSC计时、APIC中断、HWP功耗与Thread Director调度详解

时间戳计数器(TSC)是x86架构提供的高精度计时硬件,通过读取CPU时钟周期实现微秒级精度测量。其原理基于处理器内部64位计数器,现代CPU支持恒定TSC确保频率变化时计数稳定。在性能分析领域,TSC为代码耗时统计、实时系统调度提供基础计时能力,结合高级可编程中断控制器(APIC)的多核中断分发机制,可构建精准的性能监控体系。APIC负责将设备中断路由到特定CPU核心,支持核间通信(IPI),与硬件控制功耗管理(HWP)协同工作时,CPU能根据负载自动调节频率,实现能效优化。这些底层技术共同服务于高性能计

weixin_34354173的博客 419

Zephyr qemu_x86 模拟板卡完全指南:在 QEMU 中运行与调试 x86 应用

Zephyr RTOS 的 `qemu_x86` 板卡配置用于在 QEMU 模拟器中原生模拟 32 位 x86 架构,无需真实硬件即可完成内核开发、驱动调试、联网测试与内存管理验证。本文基于 [boards/qemu/x86/doc/index.rst](https://link.gitcode.com/i/17ea622614acf028ba80686f433fb5ad) 展开,并结合仓库中的设

gitblog_00518的博客 12

从CPU视角看函数调用与中断返回:深入理解RET/IRET家族指令的硬件行为

本文深入探讨了CPU在执行RET/IRET家族指令时的硬件行为,包括指令生命周期、权限检查机制以及中断返回的特殊挑战。通过分析现代CPU的优化技术如返回地址预测器和微操作缓存,揭示了这些指令在保护模式和性能优化中的关键作用。

weixin_30512043的博客 610

Writing an OS in Rust加密支持:硬件加速加密操作

在现代操作系统开发中,数据安全已成为核心需求。传统的软件加密算法虽然灵活,但在性能敏感的场景下往往成为瓶颈。硬件加速加密(Hardware-Accelerated Encryption)通过利用CPU内置的加密指令集,能够提供数十倍甚至上百倍的性能提升。 对于用Rust编写的操作系统而言,集成硬件加密支持不仅能够提升系统安全性,更能为上层应用提供高效的加密原语。本文将深入探讨如何在Rust操作系...

gitblog_01150的博客 954

CPU 如何通过 MMU、页表与 TLB 完成虚拟地址到物理地址的翻译

……

u013669912的博客 1555
上一篇: 系统调用brk()和mmap()
下一篇: 软中断与Bottom Half
Rebirth__Man
博客等级 码龄9年 3粉丝 16原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值