中断的基本概念

2023-05-16

异常和中断

  • 概念: 程序执行过程中CPU会遇到一些特殊情况,是正在执行的程序被“中断”,cpu中止原来正在执行的程序,转到处理异常情况或特殊事件的程序去执行,结束后再返回到原被中止的程序处(断点)继续执行

  • 程序执行被"中断“的事件(在硬件层面)有两类

    • 内部异常:在CPU内部发生的意外事件或特殊事件
    • 外部中断:在CPU外部发生的特殊事件,通过“中断请求“信号向CPU请求处理。
  • 异常和中断的处理
    发生异常和中断事件后,系统将进入OS内核态对相应事件进行处理,即改变处理器状态(用户态->内核态)
    在这里插入图片描述

异常的分类

  1. 故障: 执行指令引起的异常事件,如溢出,非法指令,缺页,访问越权等。
    ”断点“为发生故障指令的地址

  2. 自陷:预先安排的事件(“埋地雷”),如单步跟踪,断点,系统调用等。是一种自愿中断。
    ”断点“为自陷指令下条指令地址

  3. 终止:硬故障事件,此时机器将”终止“,调出中断服务程序来重启操作系统
    ”断点“是什么?随便!
    思考一:自陷处理完成后回到哪条指令执行?回到下条指令
    思考二:哪些故障补救后可继续执行,哪些只好终止当前进程?
    缺页,TLB缺失等:补救后可继续,回到发生故障的指令重新开始
    溢出,除数为0,非法指令,内存保护错等:终止当前进程

    “断点”:异常处理结束后回到原来被”中断“的程序执行时的起始指令

中断

1. 中断的概念

  • 外设通过中断请求信号线向CPU提出”中断”请求,不由指令引起,故中断也称为异步中断
  • 事件:CTRL-C, DMA传送结束,网络数据到达,打印缺纸……
  • 每执行完一条指令,CPU就查看中断请求引脚,若引脚的信号有效,则进行中断响应:将当前PC(断点)和当前机器状态保存在栈中,并“关中断”。然后,从数据总线读取中断类型号,根据中断类型号跳转到对应的中断服务程序执行。中断检测及响应过程由硬件完成。
  • 中断服务程序执行具体的中断处理工作中断处理完成后,再回到被打断程序的“断点“出继续执行

2. 中断的分类

  • 可屏蔽中断:通过INTR向CPU请求,可通过设置屏蔽字来屏蔽请求,若中断请求被屏蔽,则不会被送到CPU
  • 不可屏蔽中断:非常紧急的硬件中断,如:电源掉电,硬件线路故障等。通过NMI向CPU请求。一旦产生,就被立即送CPU,以便快速处理。这种情况下,中断服务程序会尽快保存系统重要信息,然后在屏幕上显示相应的消息或直接重启系统。

IA-32的向量中断方式

  1. 有256中不同类型的异常和中断
  2. 每个异常和中断都有唯一的编号,称之为中断类型号.
  3. 每个异常和中断有与其对应的异常处理程序或中断服务程序,其入口地址放在一个专门的中断向量表或中断描述符表中。
  4. 前32个类型(0~31)保留给CPU使用,剩余的由用户自行定义(这里的用户指机器硬件的用户,即操作系统)
  5. 通过执行INT n(指令第二字节给出的中断类型号n, n=32~255)使CPU自动转到OS给出的中断服务程序执行
  6. 实模式下,用中断向量表描述
  7. 保护模式下,用中断描述表描述

实地址模式下的中断向量表

实地址是Intel为80286及其之后的处理器提供的一种8086兼容模式,寻址空间1MB,指令地址=CS<<4+IP。从地址0~1KB大小的内存大小的内存构成一个中断向量表,位于0000H~03FFH。共256组,每组占4个字节。中断向量表中每一项是对应中断服务程序或异常处理的入口地址,被称为中断向量。

保护模式下的中断描述符表

  • 保护模式下,通过中断描述表捕获异常处理或中断服务程序入口地址
  • 中断描述表(Interrupt Descriptor Table,IDT)是OS内核中的一个表,共有256个表项,每个表项占8个字节,IDT共占2KB
  • IDTR中存放IDT在内存中的首地址
  • 每一个表项是一个中断门描述符,陷阱门描述符或任务门描述符。

开机过程(中断在其中扮演角色)

  1. 开机后系统首先在实地址模式下工作(只有1MB的寻址空间)
  2. 开机过程中,需要首先准备实模式下的中断向量表和中断服务程序。通常,由固化在主板上的一块ROM芯片中的BIOS程序完成。
  3. 开机过程后,需要首先准备检测显卡,键盘,内存等,并在0000H~003FFH区建立中断向量表,在中断向量所指主存区建立相应的中断服务程序。
  4. BIOS利用INT指令执行特定的中断服务程序把OS从磁盘加载到内存中。例如,BIOS可通过执行int 0x19指令来调用中断向量表0x19对应的中断服务程序,将启动盘上的0号磁头对应盘面的0磁道1扇区中的引导程序装入内存。
  5. BIOS(Basic Input/Ouput System)是基本输入输出系统的简称,是针对具体主板设计的,与安装的操作系统无关。
  6. BIOS包含各种基本设备驱动程序,通过执行BIOS程序**,基本设备驱动程序以中断服务程序的形式被加载到内存**,以提供基本的I/O系统调用
  7. 一旦进入保护模式,就不在使用BIOS
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

中断的基本概念 的相关文章

  • SIFT图像拼接

    SIFT图像拼接 文章目录 SIFT图像拼接 前言二 相关工作1 SIFT2 RANSAC拟合3单应性变换4 SVD分解 三 实现步骤四 效果总结代码 前言 结合SIFT 单应性变换 Ransac和SVD等算法实现指定几幅图像之间的拼接 x
  • Redis简介

    目录 一 NoSQL介绍 二 Redis介绍 3 1什么是Redis 3 2 Redis应用场景 3 3 Redis优势 3 4 Redis与其他key value存储有什么不同 xff1f 一 NoSQL介绍 NoSQL 是 Not On
  • docker安装rabbitmq(细)

    这里使用docker安装rabbitmq xff0c 前提是要安装docker xff0c 安装docker的步骤如下 xff1a 一 安装docker 1 安装docker依赖 sudo yum install y yum utils d
  • 数组删除元素

    在数组中删除值为val的元素 xff0c 因为数组在内存中是连续存储 xff0c 所以不能只删除元素 xff0c 而是在删除元素后还要使后边元素前移 在数组中删除元素有两种方法 xff1a xff08 1 xff09 暴力解法 xff08
  • STM32F103最小系统板引脚定义

    STM32F103最小系统原理图 本人初学stm32 若有误解之处 还望大佬们指正改进 感谢 STM32F103各引脚定义 可前往 STM32F103xCDE 数据手册 英文 的第三章 Pinouts and pin description
  • 基带面试题附答案

    请列举您知道的电阻 电容 电感品牌 xff08 最好包括国内 国外品牌 xff09 电容 xff1a 美国 xff1a AVX VISHAY 威世 日本 xff1a KOA 兴亚 Kyocera 京瓷 muRata 村田 Panasonic
  • nginx简介(一)

    背景 xff1a 前面说了准备围绕运维工程师所要学习的知识进行记录和分享 xff0c linux基础的记录是一个漫长的过程 xff0c 后面会时不时的记录下 今天准备拉一个分支 xff0c 介绍一下nginx的相关内容 xff0c 由于ng
  • 蓝桥杯嵌入式——第十二届蓝桥杯嵌入式国赛客观题

    1 填空题 嵌入式竞赛平台上板载的微控制器是 xff1a 3 级流水线 xff0c 具有 128 Kbytes的Flash存储空间 xff08 请在第一 二空格处填写10进制数值 xff09 解析 xff1a STM32G431RBT6采用
  • git pull 所有branch和tag并上传

    pull span class token function git span branch r span class token operator span span class token function grep span v sp
  • 双非渣本大三学生春招拿到实习Offer的经历

    从今年的2月底投简历开始到现在已经两个月了 xff0c 两个月的时间我经历了很多大大小小的笔试面试 xff0c 坎坎坷坷的也是终于拿到了美图的Offer xff0c 美团和头条好歹也都进了终面 xff0c 躺在备胎池里面 xff08 不打算
  • TX2超详细,超有用的刷机教程

    TX2超详细 xff0c 超有用的刷机教程 TX2被Nvidia官方称作是最快 xff0c 最节能的嵌入式AI计算设备 它的功耗小 xff0c 只有7 5W xff0c 体型也小 xff0c 只有一张信用卡那么大 xff0c 它是真正可以实
  • vscode 同步gitee远程仓库

    一 首先在gitee端创建远程仓库 二 在vscode中配置git信息 git config global user name 34 your name 34 git config global user email 34 your ema
  • QGC地面站参数调节

    校准 xff1a 1 选择机架 xff1a 一般用DJI Flame Wheel F450机架 xff0c 选择之后点击 应用并重启 xff1b 2 传感器校准 xff1a 无人机会重新连接地面站 xff0c 依次校准 磁罗盘 陀螺仪 xf
  • PX4初级教程

    链接 xff1a https pan baidu com s 1VIQcOQt I5 evMx1jnV0ZQ 提取码 xff1a 8niq
  • Qt Creator编写无人机地面站系统

    用户登录界面 将用户注册的账户信息如实填写 xff0c 然后输入验证码 xff0c 点击 xff02 登录 xff02 即可进入无人机地面站管理系统 xff0e 地面站界面
  • Mavlink自定义协议

    参照本人博客 xff1a 博客直达 浏览密码 xff1a N414 这里不做描述 xff0c 详细过程请移步本人博客
  • 狼群算法资源总结

    狼群算法介绍 xff1a 狼群算法的优化 狼群算法三维路径规划 xff1a 狼群算法三维路径规划Matlab
  • html+css+php+mysql实现注册+登录+修改密码(附完整代码)

    注 xff1a 转载及使用源代码请注明来源 xff01 如疑问可私信 xff01 目的 xff1a 在利用QT软件进行登录软件开发时 xff0c 就想要实现点击按钮跳转到指定网页进行注册以及修改密码等操作 xff0c 就像QQ客户端那样可以
  • Qt嵌入外部EXE程序,并显示在主界面中!

    一 获取程序句柄以及类 打开Visual Studio 进行查询 二 QT调用程序 H文件 span class token macro property span class token directive keyword ifndef

随机推荐