中断的目的
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、返回所有入栈的寄存器值
参考文献: