当前位置:网站首页>x86异常处理与中断机制(3)中断处理过程
x86异常处理与中断机制(3)中断处理过程
2022-08-09 11:03:00 【XV_】
上一节讲完了根据中断类型号找中断服务程序的过程,现在着重说明一下更加完整的中断处理过程吧。
本节以8086时代的中断处理过程为例进行说明,主要分两大部分
- 硬件处理
- 软件处理
需要注意,这不是绝对的,得看实际情况,简单来说就是,如果硬件本来就完成了相关必要动作,中断服务程序就不用再执行了,如果没有,就需要写入程序中执行相关操作。
1 中断处理过程
1.1 前提:产生&检测 中断
中断处理的前提,是产生中断,然后检测到中断,否则怎么处理呢?
对于中断的产生,分为内部和外部,内部就是指令执行产生的,具体的就不说了,还有来自外部的,一般特别的外设比如电源断电无法屏蔽,其他的外设比如鼠标键盘,通过中断控制器如8259A产生外部中断。
至于中断的检测,内部中断一般是有相关的硬件能够直接检测到并且释放某种信号,外部中断则依赖于一些寄存器标志位之类的,具体看情况。
1.2 中断处理
软硬件的分工不是绝对的,我们需要根据实际情况进行分析,硬件干了的,软件就不用干了,硬件没干的软件就得干。
硬件处理
软件处理
中断的处理过程都是类似的
- 产生中断,检测到中断
- 保护现场
- 找到对应中断服务程序
- 执行中断处理程序
- 恢复现场
- 返回继续执行
另外,中断服务程序本身,也是一段程序,可能在其执行过程中产生中断,也就是中断嵌套,这取决于中断开关,具体细节看实现,不一定。
总而言之,通过一系列的抽象,我们只能获取中断处理的大致过程,实际的过程与实际情况紧密关联,情况多变,需要自己多加使用和练习。
边栏推荐
猜你喜欢
FreeRTOS任务创建源码分析
七夕?程序员不存在的~
jmeter BeanShell 后置处理器
tensorflow实现线性方程的参数调整
多商户商城系统功能拆解26讲-平台端分销设置
PoseNet: A Convolutional Network for Real-Time 6-DOF Camera Relocalization Paper Reading
Since I use the HiFlow scene connector, I don't have to worry about becoming a "dropper" anymore
Cluster understanding
类与对象 (下)
b站up主:空狐公子 --矩阵求导(分母布局)课程笔记
随机推荐
PTA 找出不是两个数组共有的元素
TensorFlow—计算梯度与控制梯度 : tf.gradients和compute_gradients和apply_gradients和clip_by_global_norm控制梯度
1005 Spell It Right (20分)
kubernetes中不可见的OOM
faster-rcnn中的RPN原理
WebSocket
依赖注入(Dependency Injection)框架是如何实现的
【Subpixel Dense Refinement Network for Skeletonization】CVPR2020论文解读
Input and output of cnn
1008 Elevator (20分)
margin出bug---margin失效
golang 标准库json Marshal、Unmarshal坑
OpenSSF的开源软件风险评估工具:Scorecards
SQL Server查询优化
faster-rcnn学习
详细的np.matmul / np.dot / np.multiply / tf.matmul / tf.multiply / *
Qt读写.ini配置文件
Cluster understanding
Official explanation, detailed explanation and example of torch.cat() function
Numpy常用操作博客合集