33:深入浅出x86中断机制

news2024/12/24 0:23:33

背景

我们知道使用0x10号中断,可以在屏幕上打印一个字符。

问题

系统中的 中断 究竟是什么?

生活中的例子

来看一个生活中例子:

小狄的工作方式

  1. 在处理紧急事务的时候,不回应同事的技术求助。
  2. 老板的召唤必须回应,不能耽搁。
  3. 处理完老板的召唤后,继续处理之前的紧急事务。
  4. 同事的技术求助继续不回应

中断的概念和意义

处理器与外设的拓扑结构

中断与外设

  1. 中断是一种处理器与外设进行通信的机制。
  2. 用于 “通知”处理器外部有 “重要事情”发生
  3. 一般情况下,中断需要被处理器响应

本质

操作系统是中断驱动的死循环。

处理器、中断、操作系统内核之间的关系。

中断的分类

  1. 外部中断:由外部设备发出来的中断,比如:网卡、键盘、鼠标等。这些外部设备向处理器发出来的中断,都叫做外部中断。
  2. 内部中断:由处理器自己内部发出来的中断。当然这些中断由代码产生的,所以说 也叫做软中段。异常:处理器是逐条逐条指令执行的,这个时候碰到了一个非法不合理的指令码,这个时候处理器知道怎么样去执行吗?当然不知道怎么去执行,所以处理器就报了一个异常。

处理器的外部中断

处理器的内部中断

问题

处理器接受到中断请求之后,如何具体的对中断进行处理?就是中断服务程序(Interrupt Service Routine)

中断服务程序(Interrupt Service Routine)

中断处理流程

Linux中断处理方式

思考

中断与对应的服务程序间如何建立关联?在代码层面如何进行转移?

实模式下的中断处理

-使用中断向量表映射不同中断与中断服务程序

-中断向量表(Interrupt Vector Table)

        起始于物理地址0,长度为 1KB

        每个单元4字节,连续256个单元

        每个单元存放一个中断服务程序的入口地址

中断向量表就是一个指针数组,这个数组里面存放的是:中断程序的入口地址。

中断向量表(IVT)

中断响应与处理

  1. 产生中断,外部设备向CPU发送一个中断,通过 INTR引脚,向处理器发送一个中断请求。
  2. 处理器通过 INTA 这个引脚 去响应这个中断信号。
  3. 外部设备将 中断向量 TYPE 发送给处理器。
  4. 处理器有了中断向量 TYPE,那么就去 查找中断向量表 IVT
  5. 在中断向量表中,就可以查找到 对应的中断服务程序的地址。
  6. 有了中断服务程序的地址,那么直接 CALL就行

思考?

实模式下的中断向量表(IVT) 和 中断服务程序(ISR) 需要操作系统内核来建立吗?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1144574.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Golang教程——配置环境,再探GoLand

文章目录 一、Go是什么?二、环境配置验证配置环境变量 三、安装开发者工具GoLand四、HelloGolang 一、Go是什么? Go(也称为Golang)是一种开源的编程语言,由Google开发并于2009年首次发布。Go语言旨在提供一种简单、高…

剑指JUC原理-5.synchronized底层原理

Java对象头 以32位虚拟机为例: 普通对象 在Java虚拟机中,每个对象都有一个对象头(Object Header),其中包含了一些用于管理对象的元数据信息。对象头通常由两部分组成:mark word(标记字&#x…

开源3D激光(视觉)SLAM算法汇总(持续更新)

目录 一、Cartographer 二、hdl_graph_slam 三、LOAM 四、LeGO-LOAM 五、LIO-SAM 六、S-LOAM 七、M-LOAM 八、livox-loam 九、Livox-Mapping 十、LIO-Livox 十一、FAST-LIO2 十二、LVI-SAM 十三、FAST-Livo 十四、R3LIVE 十五、ImMesh 十六、Point-LIO 一、Cartographer Cartog…

目标检测类项目数据集汇总

一、玩手机数据集及检测 玩手机数据集下载地址分享: https://download.csdn.net/download/qq_34717531/19870205 二、狗的数据集及检测 狗目标检测数据集下载地址分享:https://download.csdn.net/download/qq_34717531/20813390 三、猫数据集及检测 猫数据集下载地址分享: ht…

review-java-basis

Path环境变量用于记住程序路径,方便在命令行窗口的任意目录启动程序 \n代表换行的意思,/t代表一个tab前进一格 强转可能导致数据的丢失(溢出) 浮点型转换为整型,直接丢掉小数部分,保留整数部分返回 数据类…

GPT的广泛应用会对互联网公司造成挑战吗?——探讨GPT在实际使用中的应用和影响

文章目录 前言GPT 技术的背景和发展历程GPT 技术对互联网行业的影响GPT 技术在互联网行业中的应用GPT 技术对于用户隐私和数据安全的威胁GPT 技术对于人类工作岗位的影响加强 AI 伦理和监管加强 AI 安全性和隐私保护推动 AI 创新和发展,避免过度依赖 AIGPT 技术是一…

日常软件游戏丢失msvcp120dll怎么修复?分享5个修复方法

在计算机使用过程中,我们经常会遇到一些错误提示,其中之一就是“msvcp120dll丢失”。那么,究竟什么是msvcp120dll文件?当它丢失时,我们会遇到哪些问题呢?本文将从以下几个方面进行详细阐述。 msvcp120dll是…

Groovy安装开发环境

准备下载GDK并安装环境变量,跟安装JDK一模一样 https://groovy.apache.org/download.html

【C++】详解map和set基本接口及使用

文章目录 一、关联式容器与键值对1.1关联式容器(之前学的都是序列容器)1.2键值对pairmake_pair函数(map在插入的时候会很方便) 1.3树形结构的关联式容器 二、set2.1set的基本介绍2.1默认构造、迭代器区间构造、拷贝构造&#xff0…

【八】Linux成神之路

Linux成神之路 简介:最近梳理了一下自己linux系统的学习历程,感觉整个成长过程就很顺利,并没有走弯路,于是想着可以不可以把自己linux系统学习的路线记录下来,能够在大家成长的路上有一点帮助,就在这样的一…

『C语言进阶』程序环境和预处理

🔥博客主页: 小羊失眠啦. 🔖系列专栏: C语言、Linux、 Cpolar ❤️感谢大家点赞👍收藏⭐评论✍️ 文章目录 一、程序的翻译环境和执行环境二、详解编译链接2.1 编译环境2.2 编译过程2.3 运行环境 三、预处理详解3.1 预…

Windows找不到文件xxxxx.exe。请确认文件名是否正确后,再试一次

问题现象: Win11系统,每次重启后报如下错误,Windows找不到文件xxxxx.exe。请确认文件名是否正确后,再试一次 w10升级w11后出现 问题原因: xxx文件丢失,不知道是归属于谁的,怀疑是升级给弄丢…

A星算法(A* A Star algorithm)原理以及代码实例,超详细,超简单,大白话谁都能看懂

本文以这篇博主的文章为基础【精选】A*算法(超级详细讲解,附有举例的详细手写步骤)-CSDN博客 这篇文章的博主做了一个UI界面,但我感觉,这样对新手关注算法和代码本身反而不利,会被界面的代码所干扰。所以笔…

Win11 安装wsl遇到的问题解决

Win11 安装wsl遇到的问题解决 Win11 安装wsl遇到的问题解决WslRegisterDistribution failed:0x8007019eWslRegisterDistribution failed:0x800701bcUbuntu换源WSL通过网络访问Windows Win11 安装wsl遇到的问题解决 WslRegisterDistribution failed:0x8007019e 参考Link WslR…

关于 @Transactional 注解的类中使用 this 调用问题

在一个类中打断点的时候报了一个异常,这个异常,但是一直找不到,直到我在类中调用另外一个方法的时候,看到该方法里面用了 this 调用了 mybatis-plus 的 Api 去操作数据库,而最外层的方法却添加了 Transactional(rollba…

【python debug】python常见编译问题解决方法_1

1. ValueError: could not convert string to float: ‘File’ 问题原因:这里的报错是要把’File’这个转成float失败,非数字字符转换为float失败解决方法:然后去检查哪里出现了这个’File’,data load读入多个文件的数据&#x…

C++-类与对象(上)

一、 auto关键字 1.自动识别数据类型 2.auto的初始化 3.auto简化for循环 nullptr的使用 二、类与对象 1.c中类的定义 2.c语言与c的比较 3.类的访问限定符以及封装 3.1访问限定符 3.2封装 3.3类的作用域 3.4类的声明与定义分离 🗡CSDN主页:d1ff1cult.&…

转变命运!揭秘反转链表的神奇算法!

目录 使用虚拟头节点来辅助实现链表反转直接操作链表实现反转使用递归来实现链表反转 链表是计算机科学中常用的数据结构之一,它由一系列节点构成,每个节点包含一个值和指向下一个节点的指针。链表的灵活性使其在许多场景下被广泛应用,但其中…

S32K144芯片焊接完成后使用S32DS初次下载无法下载解决方法

一、问题现象如下,S32DS Debug下报错 二、原因,原厂芯片出厂时的FLASH Memory的安全机制是激活的,仿真器是可以连上,但是没法读取Flash Memory的内容 三、解决方法 参考图示,解锁后即可正常Debug

2023mathorcup大数据竞赛选题建议及思路

大家好呀,昨天6点2023年第四届MathorCup高校数学建模挑战赛——大数据竞赛开赛,在这里给大家带来初步的选题建议及思路。 注意,本文章只是比较简略的图文讲解,更加详细完整的视频讲解请移步: 2023mathorcup大数据数学…