操作系统中的中断(详细介绍+图片理解)

2023-05-16

【中断的概念】

  • 中断是指程序执行过程中,遇到急需处理的事件时,暂时中止CPU上现行程序的运行,转去执行相应的事件处理程序,待处理完成后再返回原程序被中断处或调度其他程序执行的过程
  • 操作系统是“中断驱动”的;换言之,中断(广义)是激活操作系统的唯一方式
  • 中断有广义和狭义之分,上述中断时指广义的中断

【中断、异常与系统异常】

  • 狭义的中断来源于处理器之外的中断事件,即与当前运行指令无关的中断事件,如I/O中断、时钟中断、外部信号中断等
  • 异常(来源于CPU内部的中断事件,和狭义共同构成广义的中断)指当前运行指令引起的中断事件,如地址异常、算术异常、处理器硬件故障等
  • 系统异常与硬件无关,系统异常指执行陷入指令而触发系统调用引起的中断事件,如请求设备、请求I/O、创建进程等

【中断源—处理器硬件故障中断事件】

  • 由处理器、内存储器、总线等硬件故障引起
  • 处理原则为:保护现场,停止设备,停止CPU,向操作员报告,等待人工干预

【中断源—程序性中断事件】

  • 处理器执行机器指令引起
    #除数为零、操作数溢出等算术异常:简单处理,报告用户;也可以由用户编写中断续元程序处理
    #非法指令、用户态使用特权指令、地址越界、非法存取等指令异常:终止进程
    #终止进程指令:终止进程
    #虚拟地址异常:调整内存后重新执行指令

【中断源—自愿性中断事件】

  • 处理器执行陷入指令请求OS服务引起;在操作系统中,它一般又被称作系统调用
    #请求分配外设、请求I/O、等等
    #处理流程是:陷入OS,保护现场,根据功能号查入口地址,跳转具体处理程序

【中断源—I/O中断事件】

  • 来源于外围设备报告I/O状态的中断事件
    #I/O完成:调整进程状态,释放等待进程
    #I/O出错:等到人工干预
    #I/O异常:等待人工干预

【中断源—外部中断事件】

  • 由外围设备发出的信号引起的中断事件
    #时钟中断、间隔时钟中断:记时与时间片处理
    #设备报到与结束中断:调整设备表
    #键盘/鼠标信号中断:根据信号做出相应反映
    #关机/重启动中断:写回文件,停止设备与CPU

【中断系统】

  • 中断系统是计算机系统中响应和处理中断的系统,包括硬件子系统和软件子系统两部分
  • 中断响应由硬件子系统完成
  • 中断处理由软件子系统完成

【中断响应处理与指令执行周期】

  • 在指令执行周期最后增加一个未操作,以响应中断
    在这里插入图片描述

【中断装置】

  • 计算机系统中发现并响应中断/异常的硬件装置称为中断装置
  • 由于中断源的多样性,硬件实现的中断装置有多重,分别处理不同类型的终端
  • 这些中断装置因计算机而异,通常有:
    #处理器外的中断:由中断控制器发现和响应
    #处理器内的异常:由指令的控制逻辑和实现线路发现和响应,响应机制成为陷阱
    #请求OS服务的系统异常:处理器执行陷入指令时直接触发,响应机制称为系统陷阱

【中断控制器】

  • 中断控制器:CPU中的一个控制部件,包括中断控制逻辑线路和中断寄存器
    #外部设备向其发出中断请求IRQ,在中断寄存器中设置已发生的中断
    #指令处理结束前,会检查中断寄存器,若有不被屏蔽的终端产生,则改变处理器内操作的顺序,引出操作系统中的中断处理程序

【陷阱与系统陷阱】

  • 陷阱与系统陷阱:指令的逻辑实现线路的一部分
    #执行指令出现异常后,会根据异常情况转向操作系统的异常处理程序
    #出现虚拟地址异常后,需要重新执行指令,往往越过陷阱独立设置页面异常处理程序
    #执行陷入指令后,越过陷阱处理,触发系统陷阱,激活系统调用处理程序

【中断响应过程】

  • 发现中断源,提出中断请求
    #发现中断寄存器中记录的中断
    #决定这些中断是否被屏蔽
    #当有多个要响应的中断源时,根据规定的优先级选择一个
  • 中断当前程序的执行
    #保存当前程序的PSW/PC到核心栈
  • 转向操作系统的中断处理程序

【中断的处理】

  • 中断处理程序
    操作系统处理中断事件的控制程序,主要任务是处理中断事件和恢复正常操作
  • 中断处理程序
    #保护未被硬件保护的处理器状态
    #通过分析被中断进程的PSW中断码字段,识别中断源
    #分别处理发生中的中断事件
    #恢复正常操作

【恢复正常操作】

  • 情况一:对于某些中断,在处理完毕后,直接返回刚刚被中断的进程
  • 情况二:对于其他一些中断,要中断当前进程的运行,调整进程队列,启动进程调度,选择下一个执行的进程并恢复其执行

【中断系统处理流程】
在这里插入图片描述

【中断屏蔽】

  • 当计算机检测到中断时,中断装置通过中断屏蔽位决定是否响应已发生的中断
  • 有选择的响应中断

【中断优先级】

  • 当计算机同时检测到多个中断时,中断装置响应中断的顺序
  • 有优先的的响应中断
  • 一种可能的处理次序
    #处理机硬件故障中断事件、自愿性中断事件、程序性中断事件、时钟中断等外部中断事件、输入输出中断事件、重启动和关机中断事件
  • 不同类型的操作系统有不同的中断优先级

【中断的嵌套处理】

  • 当计算机响应中断后,在中断处理过程中,可以再响应其他中断
  • 操作系统是性能攸关程序,且中断响应处理有硬件要求,考虑系统效率和实现代价问题,中断的嵌套处理应限制在一定层数内,如3层
  • 中断的嵌套处理改变中断处理次序,先响应的有可能后处理

【多中断的响应与处理】

  • 决定中断处理次序的因素
    #中断屏蔽可以使中断装置不响应某些中断
    #中断优先级决定了中断装置响应中断的次序
    #中断可以嵌套处理,但嵌套的层数应有限制
    #中断的嵌套处理改变了中断处理的次序

【多重中断处理-1】

  • X、Y两个中断同时发生
  • 先响应X
  • 因Y被屏蔽,继续处理X
  • 再响应并处理Y
    在这里插入图片描述

【多重中断处理-2】

  • X、Y两个中断同时发生
  • 根据中断优先级,先响应X
  • 因未屏蔽Y,再响应并处理Y
  • Y处理完成后,再处理X
    在这里插入图片描述
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

操作系统中的中断(详细介绍+图片理解) 的相关文章

  • 计算机系统层次存储结构

    问 xff1a 当前计算机系统一般会采用层次结构存储数据 xff0c 请介绍下典型计算机存储系统一般分为哪几个层次 xff0c 为什么采用分层存储数据能有效提高程序的执行效率 xff1f 所谓存储系统的层次结构 xff0c 就是把各种不同存
  • "R6002 floating point support not loaded"错误

    R6002 floating point support not loaded 错误 xff0c 在Debug模式下会弹出如下错误 xff1a floating point support not loaded 翻译为中文是 浮点指针支持未
  • docker 安装mysql:latest 问题

    背景 周末闲着没事 xff0c 然后想着在虚拟机用docker装个mysql吧 然后就开始安装了 正文 打开dockerhub com 在输入框输入mysql xff0c 选择mysql第一个 xff0c 进入后找到How to use t
  • TX2-刷机完成后安装程序ubuntu_linux命令&TX2学习总结

    Linux教程 菜鸟教程 xff1a http www runoob com linux linux tutorial html 认识linux ping命令 xff1a ping命令是常用的网络命令 ping网关 xff1a ping 1
  • 浅谈操作系统与内存

    浅谈操作系统与内存 对于计算机的发明 xff0c 相信大家都有耳闻那个占地面积按平米算的第一台计算机 在那个时候 xff0c CPU的资源是极其珍贵的 xff0c 随着这些年突飞猛进的发展 xff0c 一片指甲盖大小的民用级CPU一秒钟能执
  • linux系统编程之进程(八):守护进程详解及创建,daemon()使用

    一 xff0c 守护进程概述 Linux Daemon xff08 守护进程 xff09 是运行在后台的一种特殊进程 它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件 它不需要用户输入就能运行而且提供某种服务 xff0c 不
  • IMU&GPS融合定位::加速度计基本原理

    加速度计基本原理 核心 xff1a 牛顿第二定律 一 mems加速度计基本原理 加速度计基本结构如上图 xff0c 由上电容 中电容板 可移动 下电容板等组成 xff1b 当加速度达到一定值后 xff0c 中电容板会移动 xff0c 与上
  • 深入理解事件(Event)

    前言 在前一篇文章中讲到了Event 发布与订阅 一 里面用到了事件来实现一些发布与订阅 xff0c 当时对事件及其委托理解的还不是太深入 xff0c 可能在使用上有点捉急 这篇来好好讲讲事件 xff0c 以及通过一些小DEMO来加深理解
  • 数据结构知识体系框图

    数据结构知识体系框图 xff1a 静态顺序表 xff1a https blog csdn net adorable article details 78720919 静态顺序表之二 xff1a https blog csdn net ado
  • 想做嵌入式却没经验找不到工作!!!

    从大学三年级就想做嵌入式 xff0c 但是却到处打酱油 先是帮老师做Java项目 xff0c 后来又去外包公司做了一年的通信系统OAM代码维护 xff0c 啥技术也没有学到 现在年底裸辞出来又找不到合适的嵌入式工作 基础知识不够 xff0c
  • 学习一个陌生的开源库的方法建议

    转载 xff0c 初看这句话 xff0c 感觉没什么意义 xff0c 但当你在看开源库的例子的时候 xff0c 不妨多想想这句话 对于一个不熟悉的开源库和模块 xff0c 我觉的最好的学习方法莫过于 xff1a 1 使用库 xff0c 看库
  • 将函数实现放在头文件中

    研究一个开源算法库 xff0c 采用C 43 43 模板编程 xff0c 所有函数实现都放在了头文件中 xff0c 现在把模板去掉 xff0c 链接时发生冲突 xff0c 具体原因如下 xff1a 因为多个源文件包含了含有函数定义的头文件
  • 编译器错误消息: CS1617: 选项“6”对 /langversion 无效

    编译错误 说明 在编译向该请求提供服务所需资源的过程中出现错误 请检查下列特定错误详细信息并适当地修改源代码 编译器错误消息 CS1617 选项 6 对 langversion 无效 xff1b 必须是 ISO 1 ISO 2 3 4 5
  • 无法序列化会话状态

    添加购物车功能遇到返回错误500 xff0c 解决办法 xff1a 因为ajax post请求后 xff0c 只返回错误500的信息 xff0c 并不能清楚的知道具体问题 xff0c 所以要在js处理返回错误500的方法中添加上xhr re
  • C#获取网络图片

    简单获取图片 string url 61 zhi txt Text 图片地址 string dizhi 61 lujing Text 图片下载后保存路径及图片名称要写在一块 WebClient wc 61 new WebClient wc
  • 在vscode中使用Git

    用了git最方便的就是比如在公司写了很多代码后回到家打开vscode只需要点击一下pull就能全部同步过来 是不是很方便 毕竟之前我都是拿u盘拷贝回家或者存到云盘再下载下来 我这里用的是国内的码云托管的代码 xff0c xff0c gith
  • vscode同步设置&扩展插件

    首先安装同步插件 xff1a Settings Sync 第二步 xff1a 进入你的github如图 xff1a 打开设置选项 xff1a 新建一个token xff1a 如图 xff1a 记住这个token值 转到vscode 按shi
  • mysql 常用语句使用

    1 查询语句 SELECT FROM table 2 更改语句 UPDATE table SET name 61 39 123456 39 WHERE id 61 100 3 插入语句 INSERT INTO table VALUES 1
  • STM32学习第七天--串口调试助手没弄懂

    啊啊 啊 今天真的好沮丧 调代码足足调了一晚上 xff0c 不知道什么原因工程就是错 xff0c 最后好不容易啊 xff0c 在主函数加了个 include 34 stm32f10x lib h 34 就好使了 xff0c 真不知道为什么
  • swoole 相关

    安装虚拟机 VMware Workstation Pro 安装CentOS CentOS 7 x86 64 Minimal 1708 iso 安装FinalShell 教程地址 安装lnmp 教程地址 服务状态管理命令 1 安装lnmp 2

随机推荐

  • ffmpeg编程:读取摄像头信息,保存为裸yuv420p、yuyv422视频流

    1 源码下载 xff1a https download csdn net download dijkstar 10898462 2 编程环境使用Windows下的QT5 11 minGW32 xff0c 源码中已经放好了fmpeg的bin
  • C中__FILE__ __LINE__的用法

    include lt stdio h gt void main void printf 34 File s Successfully reached line d n 34 FILE LINE Other statements here l
  • ubuntu中添加和删除源

    添加PPA源的命令为 xff1a br sudo add apt repository ppa user ppa name 添加好更新一下 xff1a sudo apt get update 删除命令格式则为 xff1a br sudo a
  • jetson nano 部署yoloV3,yoloV4,yoloV3-tiny,yoloV4-tiny

    系统 ubuntu nbsp nbsp 自带cuda10 0 nbsp 1 下载与安装darknet git clone https github com AlexeyAB darknet cd darknet 2 以下步骤我都在直接进入c
  • 对比first-fit/best-fit/worst-fit/slab以及buddy这几种算法的特点

    以下均为自己对这些算法的理解 xff1a fitst fit算法 First fit算法 xff1a 连续物理内存分配算法的一种 xff0c 将空闲内存块按照地址从小到大的方式连起来 xff0c 具体实现时使用了双向链表的方式 当分配内存时
  • MIT6_0001F16_Pset2

    MIT6 0001F16 Pset2 完成Hangman Game的编写 xff0c 就是一个猜词游戏 span class token comment Problem Set 2 hangman py span span class to
  • 利用python进行数据分析 pdf

    利用python进行数据分析 链接 xff1a https pan baidu com s 1mFg7kB0WG6edKnhumMbbJg 提取码 xff1a 6kos 如果带来帮助 xff0c 可点赞或关注博主 xff01
  • 数据库系统概念第六版 第六章练习题6.11

    6 11 考虑下图所示的关系数据库 xff0c 主码加了下划线 给出关系代数表达式来表达下列的每一个查询 xff1a a 找出First Bank Corporation的所有员工姓名 b 找出First Bank Corporation所
  • 数据库实验4 SQL语言-SELECT查询操作

    数据库实验4 SQL语言 SELECT查询操作 1 首先按照第三章的jxgl数据库的模板创建jxgl数据库并插入数据 xff1a 创建数据库jxgl create database jxgl 创建相应的表 xff1a 创建student表
  • Docker安装RabbitMQ,RabbitMQ Management使用

    上一篇文章介绍了RabbitMQ的一些基本概念 xff0c 如果没看过没了解 xff0c 推荐先去了解一下 xff1a 下面我们一起来安装一下RabbitMQ并且访问一下它的Management吧 我这边是使用了Docker容器来安装和启动
  • 数据库系统概念第六版 第七章练习题 15 22

    数据库第七章理论习题 7 15 为医院构造一个包含一组病人和一组医生的E R图 为每个病人关联一组不同的检查和化验记录 说明 xff1a 医生和病人间存在联系 xff0c 同时病人有特有的检查和化验记录 xff0c 病人有病床 xff0c
  • 操作系统设计思想--主奴思想

    操作系统设计思想 主奴思想 对于操作系统而言 xff0c 如何稳定可靠运行无疑是最重要的 目前的方案均为将用户进程和其他用户进程 将用户进程和操作系统进行分离 实现操作系统可以管理用户进程 xff0c 但用户进程不能侵入内核 xff0c 同
  • 从零开始学GO ---- 错误处理

    从零开始学GO 错误处理 Go 语言通过内置的错误接口提供了非常简单的错误处理机制 error类型接口 在这个接口类型的声明中只包含了一个方法Error Error方法不接受任何参数 xff0c 但是会返回一个string类型的结果 它的作
  • 从零开始学GO ---- 接口

    从零开始学GO 接口 接口是一个编程规范 xff0c 一组方法签名的集合 Go的接口是非侵入式的设置 xff0c 一个具体类型实现接口不需要在语法上显式地声明 xff0c 只要具体类型的方法集是接口方法集的超集 xff0c 就代表该类型实现
  • Golang通过反射对结构体进行赋值和其他操作

    Golang通过反射对结构体进行赋值和其他操作 通过反射可以方便快捷地访问Golang的结构体字段 xff0c 并进行赋值或其他操作 当两个结构体内容相同但名字不同时 xff0c 如何快捷地进行赋值 xff1f 或者内容有交集 xff0c
  • 如何使用github来下载你需要使用的ros资源

    使用ros系统 xff0c 需要用到许多数据包 xff0c 有些时候你需要使用的ROS数据包并没有Debian包的形式 xff0c 这时你需要从数据源安装它 代码开发人员通常使用的有三种主流的版本控制系统 xff1a SVN xff0c G
  • VLC RTSP视频播放终极解决方案

    VLC播放RTSP视频流遇到的问题 摄像头是RTSP协议的 xff0c 需要在Android端实时显示摄像头视频流 xff0c 这里采用了开源的VLC播放器 xff0c 可能会有如下需求 xff1a 一 有截屏的需求 二 有屏幕录制的需求
  • docker push 实现过程

    这一篇文章分析一下docker push的过程 xff1b docker push是将本地的镜像上传到registry service的过程 xff1b 根据前几篇文章 xff0c 可以知道客户端的命令是在api client push g
  • FreeRTOS专题六:支持多优先级

    在 FreeRTOS 中 xff0c 数字优先级越小 xff0c 逻辑优先级也越小 xff0c 这与RT Thread 和 C OS刚好相反 就绪列表 pxReadyTasksLists configMAX PRIORITIES 是一个数组
  • 操作系统中的中断(详细介绍+图片理解)

    中断的概念 中断是指程序执行过程中 xff0c 遇到急需处理的事件时 xff0c 暂时中止CPU上现行程序的运行 xff0c 转去执行相应的事件处理程序 xff0c 待处理完成后再返回原程序被中断处或调度其他程序执行的过程操作系统是 中断驱