Linux内核学习笔记03--中断机制和中断描述符表、中断和异常的处理

本文深入探讨了Linux中断机制的核心概念,包括硬件中断、软件中断、系统调用等不同类型的中断目的与工作流程,并详细解析了中断处理过程中的寄存器操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

中断的目的

1、硬件的中断响应---内核驱动中的中断

2、系统调用的函数响应(sys_call)---系统调用

3、自定义中断---软件的软中断模式

4、信号中断(kill -signalnum)---了解信号的使用、创建等

5、系统的异常和错误---系统的异常获取 了解系统异常的作用

Linux的中断机制

  • 中断的分类

硬中断:硬件中断芯片发出的中断,ARM中断控制器发出的中断

软中断:异常 第一类:CPU自行保存的中断、系统调用异常

  • 中断的代码结构

                                                 中断前的处理过程和中断的回复过程  中断的执行过程

硬件中断的处理过程                 asm.s                                                 trap.c

软件及系统调用的处理过程      system_call.s                                     fork.c signal.c exit.c sys.c

中断的工作流程

做CPU工作模式的转换

进行寄存器的拷贝与压栈

设置中断异常向量表

保存正常运行的函数返回值

跳转到对应的中断服务函数上运行

进行模式的复原以及寄存器的复原

跳转回正常工作的函数地址继续运行

  • Linux的中断工作流程

1、将所有的寄存器值入栈

x86: SS EFLAGS ESP CS EIP (错误码) ARM: r0~r15

2、将异常码入栈(中断号)

3、将当前的函数返回值进行入栈(中断执行完成后复原)

4、调用对应的中断服务函数

5、出栈函数返回值

6、返回所有入栈的寄存器值

参考文献:

https://blog.csdn.net/jnu_simba/article/details/11722703

https://blog.csdn.net/wyyy2088511/article/details/108367385

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值