上一节讲完了根据中断类型号找中断服务程序的过程,现在着重说明一下更加完整的中断处理过程吧。

本节以8086时代的中断处理过程为例进行说明,主要分两大部分

  • 硬件处理
  • 软件处理

需要注意,这不是绝对的,得看实际情况,简单来说就是,如果硬件本来就完成了相关必要动作,中断服务程序就不用再执行了,如果没有,就需要写入程序中执行相关操作。

1 中断处理过程

1.1 前提:产生&检测 中断


中断处理的前提,是产生中断,然后检测到中断,否则怎么处理呢?

对于中断的产生,分为内部和外部,内部就是指令执行产生的,具体的就不说了,还有来自外部的,一般特别的外设比如电源断电无法屏蔽,其他的外设比如鼠标键盘,通过中断控制器如8259A产生外部中断。

至于中断的检测,内部中断一般是有相关的硬件能够直接检测到并且释放某种信号,外部中断则依赖于一些寄存器标志位之类的,具体看情况。

1.2 中断处理

软硬件的分工不是绝对的,我们需要根据实际情况进行分析,硬件干了的,软件就不用干了,硬件没干的软件就得干。

硬件处理

软件处理

中断的处理过程都是类似的

  • 产生中断,检测到中断
  • 保护现场
  • 找到对应中断服务程序
  • 执行中断处理程序
  • 恢复现场
  • 返回继续执行

另外,中断服务程序本身,也是一段程序,可能在其执行过程中产生中断,也就是中断嵌套,这取决于中断开关,具体细节看实现,不一定。

总而言之,通过一系列的抽象,我们只能获取中断处理的大致过程,实际的过程与实际情况紧密关联,情况多变,需要自己多加使用和练习。

x86异常处理与中断机制(3)中断处理过程相关推荐

  1. x86异常处理与中断机制(1)概述中断的来源和处理方式

    参考<计算机组成>(北京大学 MOOC) 1 异常与中断的来源(为什么需要中断) 首先,说明一下异常和中断这两个概念. 它们两个唯一的区别,就是,没有什么区别.只是不同的地方不同的时间不同 ...

  2. x86异常处理与中断机制(2)中断向量表

    补充:事件不仅包含中断和异常,还包含系统调用,这个属于用户主动请求的事件. 上一节,只有一个溢出异常,那么,如果很多异常.中断呢?(中断向量表) 另外,之前0号地址只能存储两条指令,如果需要更多指令怎 ...

  3. 中断处理过程示意图_聊聊什么是中断机制?

    什么是中断 中断其实是一种"中断"事件,中断具体代表什么意思需要考虑它所处的上下文环境和参照对象是谁.考虑事件,我们可以简单把中断抽象为这样一种模型: 当我们分析某种中断事件时,我 ...

  4. linux x86 关机 过程,linux在x86上的中断处理过程(详细)

    Linux在x86上的中断处理过程 一:引言 在Intel的文档中,把中断分为两种.一种是异常,也叫同步同断.一种称之为中断,也叫异常中断.同步中断指的是由CPU控制单元产生,之所以称之为同步,是因为 ...

  5. 中断处理过程示意图_ucore操作系统实验笔记 - Lab1

    最近一直都在跟清华大学的操作系统课程,这个课程最大的特点是有一系列可以实战的操作系统实验.这些实验总共有8个,我在这里记录实验中的一些心得和总结. Task1 这个Task主要是为了熟悉Makfile ...

  6. Linux内核设计第五周学习总结 分析system_call中断处理过程

    陈巧然原创作品 转载请注明出处   <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 使用gdb跟踪分析一 ...

  7. 中断处理过程示意图_中断和中断处理流程

    1. 中断概念 中断是指由于接收到来自外围硬件(相对于中央处理器和内存)的异步信号或来自软件的同步信号,而进行相应的硬件/软件处理.发出这样的信号称为进行中断请求(interrupt request, ...

  8. 中断处理过程示意图_中断及中断处理过程

    中断及中断处理过程 1. 中断和异常的概念区别 Intel的官方文档里将中断和异常理解为两种中断当前程序执行的不同机制.这是中断和异常的共同点.不同点在于: 中断(interrupt)是异步的事件,典 ...

  9. Linux中断子系统(三)之GIC中断处理过程

    Linux中断子系统(三)之GIC中断处理过程 备注:   1. Kernel版本:5.4   2. 使用工具:Source Insight 4.0   3. 参考博客: Linux中断子系统(一)中 ...

最新文章

  1. 行业第一份应用报告,伯克利盘点当前企业如何使用区块链
  2. 【c++】24.std::function和std::bind详解
  3. 服务器log文件清理,服务器日志切割清理工具(LogCutter)
  4. SpringBoot系列:Spring Boot集成定时任务Quartz
  5. Java基础知识学习01-环境变量的配置、数据类型
  6. 编码风格工作笔记-初步模仿大佬编码风格
  7. Bootstrap快速浮动.pull-left 或 .pull-right 类
  8. 格力又双叒发福利了 将给所有员工交电话费!
  9. 又烧一辆!蔚来ES8维修时起火烧到只剩底盘 官方回应:已开启调查
  10. Music 环形界面的算法记录
  11. python上下文管理关键字_理解 Python 的上下文管理器
  12. java复杂的代码做程序_摆脱复杂烧脑的程序代码,利用快速开发平台轻轻松松做软件...
  13. 基于JavaWeb的物流管理系统的设计与实现
  14. steam 加速器_如何在Steam中使用Switch的Pro控制器
  15. 大屏数据可视化设计指南
  16. ios浏览器无法播放视频-node.js文件传输问题
  17. php仿微信语音条,html5的audio实现高仿微信语音播放效果
  18. “ ipconfig 不是内部或者外部命令,也不是可运行的程序”问题的解决
  19. Unicode中的UTF-8, UTF-16, UTF-16LE, UTF-16BE编码及转换 | Java基础
  20. Python Tkinter 之Radiobutton控件(Python GUI 系列8)

热门文章

  1. LiveBos---按钮成下拉
  2. webpack基础入门
  3. mysql在mac上的坑
  4. Hibernate 基础配置及常用功能(二)
  5. 解析Json需要设置Mime
  6. node.js 初体验
  7. 【APUE】孤儿进程与僵死进程
  8. virtualbox怎么共享文件夹 linux,Virtualbox中Ubuntu设置共享文件夹
  9. mysql text字段导出_Mysql数据库的各种命令:
  10. react打包后图片丢失_手搭一个 React,Typescript,Koa,GraphQL 环境