扩展阅读:什么是中断

如果用一句话概括操作系统的原理,那就是:整个操作系统就是一个中断驱动的死循环,用最简单的代码解释如下:

while(true){doNothing();
}

其他所有事情都是由操作系统提前注册的中断机制和其对应的中断处理函数完成的。我们点击一下鼠标,敲击一下键盘,执行一个程序,都是用中断的方式来通知操作系统帮我们处理这些事件,当没有任何需要操作系统处理的事件时,它就乖乖地待在死循环里不出来。

所以,中断非常重要,它是让我们理解整个操作系统的根基。

五花八门的中断分类

在Intel CPU手册中对中断的定义有一个官方的标准答案。如下图:

这段话概括起来的意思就是:中断可以分为中断和异常,异常又可以分为故障、陷阱和中止。

第一句话有点奇怪,啥叫中断又可以分为中断和异常呢?其他很多文章也是这么写的,不知道你有没有感到疑惑。

原文的意思准确的说就是,CPU提供了两种中断程序执行的机制,中断和异常。第一个中断是动词,第二个中断时真正的机制种类。

先说第一个机制---中断(interrupt),中断时一个异步事件,通常由I/O设备触发。比如点击一下鼠标,敲击一下键盘。

再说第二个机制--异常,异常是一个同步事件,是CPU在执行指令时检测到的反常条件。比如除法异常、错误指令异常、缺页异常等。

这两个机制,殊途同归,都是让CPU收到一个中断号,至于CPU收到这个中断号后干什么,我们暂且不管。

我们先看看收到中断号之前,中断和异常是怎么给CPU一个中断号的。先说中断。

有一个设备叫做可编程中断控制器,它有很多IRQ引脚线,接入了一堆能发出中断请求的硬件设备。当这些硬件设备给IRQ引脚发送一个信号时,由于可编程中断控制器提前被设置好了IRQ与中断号的对应关系,所以就转化成了对应的中断信号。把这个中断号存储在自己的一个端口上,然后给CPU的INTR引脚发送一个信号,CPU收到INTR引脚信号后,去刚刚的那个端口可读取到这个终端号的值。

你看,最终的目标,就是让CPU知道,有中断了,并且也知道中断号时多少。

比如按下图3中的键盘,最终到CPU那里的反应就是,得到了一个中断号0x21。

那异常的即使就更简单了,时CPU自己执行指令时检测到一些反常情况,然后自己给自己一个中断号,无须外界提供。

比如,CPU执行到了一个无效指令,则自己给自己一个中断号0x06,这个中断号是CPU提前就规定好写死了的硬布线逻辑。

好了,到目前位置,我们知道了无论是中断还是异常

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

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

相关文章

重生之我要学后端100--计算机网络部分概念(持续更新)

TCP/IP、DNS、负载均衡器等等 前言一、TCP/IP(传输控制协议/互联网协议)二、DNS(域名系统)三、负载均衡器其他网络概念 前言 了解网络基础知识对于后端开发者至关重要,因为这些知识有助于理解应用程序是如何在更广阔的…

中英双语介绍美国的州:麻省,马塞诸塞州(Massachusetts)

中文版 马萨诸塞州(Massachusetts)位于美国东北部的新英格兰地区,是美国历史最悠久、文化最丰富的州之一。以下是对马萨诸塞州各方面的详细介绍: 人口 截至2020年,美国人口普查数据显示,马萨诸塞州的人口…

C++ 之运算符

作用:用于执行代码的运算 主要的运算符类型: 运算符类型作用算术运算符用于处理四则运算赋值运算符用于将表达式的值赋给变量比较运算符用于表达式的比较,并返回一个真值或假植逻辑运算符用于根据表达式的值返回真值或假植 1 算术运算符 …

Spring MVC中的DispatcherServlet、HandlerMapping和ViewResolver的作用

在Spring MVC框架中,DispatcherServlet、HandlerMapping和ViewResolver是核心组件,它们各自承担着不同的角色和任务: 1.DispatcherServlet:它是Spring MVC生命周期中的前端控制器,负责接收HTTP请求并将它们分发给相应的…

5.x86游戏实战-CE定位基地址

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 本次游戏没法给 内容参考于:微尘网络安全 上一个内容:4.x86游戏实战-人物状态标志位 上一个内容通过CE未知的初始值、未变动的数值、…

机器学习SVR 随机森林 RBF神经网络做回归预测的MATLAB代码

SVR 参考这篇文章 Libsvm使用笔记【matlab】 close all; clc clear %% 下载数据 load(p_train.mat); load(p_test.mat); load(t_train.mat); load(t_test.mat); %% 数据归一化 %输入样本归一化 [pn_train,ps1] mapminmax(p_train); pn_train pn_train; pn_test mapminma…

设置用户访问hdfs

如果hadoop没有启Kerberos或者从Kerberos获取的用户为null,那么获取HADOOP_USER_NAME环境变量,并将它的值作为Hadoop执行用户。如果我们没有设置HADOOP_USER_NAME环境变量,那么程序将调用whoami来获取当前用户,并用groups来获取用…

JVM相关总结

JVM的些许问题 1.JVM内存区域划分 2.JVM类加载过程 3.JVM的垃圾回收机制 1.JVM的内存区域划分 一个运行起来的Java进程就是一个JVM虚拟机,需要从操作系统申请一大片内存,就会把内存划分成几个区域,每个区域都有不同的作用 常见的面试题 2.JVM类加载过程 熟练背诵 ! ! !…

printf内幕----编程内幕(1)

曾几何时,您有没有在夜深人静的时候想过一个问题,printf内部究竟做了什么?为何可以输出到屏幕上显示出来? 先看看这段熟悉的代码: // // Created by xi.chen on 2017/9/2. // Copyright © 2017 All rights rese…

WordPress中文网址导航栏主题风格模版HaoWa

模板介绍 WordPress响应式网站中文网址导航栏主题风格模版HaoWa1.3.1源码 HaoWA主题风格除行为主体导航栏目录外,对主题风格需要的小控制模块都开展了敞开式的HTML在线编辑器方式的作用配备,另外预埋出默认设置的编码构造,便捷大伙儿在目前…

入门JavaWeb之 JDBC 连接数据库

JDBC:Java Database Connectivity,Java 数据库连接 需要 jar 包支持: java.sql javax.sql mysql-connector-java(连接驱动,必须导入) 在 MySQL 先建个 jdbc 数据库后 USE jdbc; 执行后再 CREATE TABLE…

15- 22题聚合函数 - 高频 SQL 50 题基础版

目录 1. 相关知识点2. 例子2.15 - 有趣的电影2.16 - 平均售价2.17 - 项目员工 I2.18 - 各赛事的用户注册率2.19 - 查询结果的质量和占比2.20 - 每月交易 I2.21 - 即时食物配送 II2.22 - 游戏玩法分析 IV 1. 相关知识点 函数 函数含义order by排序group by分组between 小值 an…

Chrome备份数据

Chrome备份数据 1、 导出谷歌浏览器里的历史记录 参考:https://blog.csdn.net/qq_32824605/article/details/127504219 在资源管理器中找到History文件,文件路径: C:\Users\你的电脑用户名\AppData\Local\Google\Chrome\User Data\Default …

堆排序思想分享

人不走空 🌈个人主页:人不走空 💖系列专栏:算法专题 ⏰诗词歌赋:斯是陋室,惟吾德馨 目录 🌈个人主页:人不走空 💖系列专栏:算法专题 ⏰诗词歌…

丢失的数字(MissNumber)

丢失的数字 给定一个包含 [0, n] 中 n 个数的数组 nums ,找出 [0, n] 这个范围内没有出现在数组中的那个数。 示例 1: 输入:nums [3,0,1] 输出:2 解释:n 3,因为有 3 个数字,所以所有的数字都…

五、Pentium 微处理器保护模式存储管理,《微机系统》第一版,赵宏伟

一、分段存储管理 Pentium支持分段存储管理、分页存储管理和段页式存储管理。 1.1 分段存储管理的基本思想 一个程序由多个模块组成。 每一个模块都是一个特定功能的独立的程序段。 段式管理:把主存按段分配的存储管理方式。 程序模块→段→段描述符→段描述符…

【设计】在Java后端开发时使用JSONObject完全替代JAVABean(DTO,VO)是否可行?

其实这样做你是得不偿失,不过也要看什么项目,如果你的项目只在只需要实现功能,不在乎健壮性,可持续性那就完全可以。因为我现在公司老项目所有用的POJO的地方都是用JSONObject。代码可读性几乎为0。你用了可能丧失以下功能&#x…

【微服务】后台管理项目多数据源管理方案实战

目录 前言 1、使用Spring提供的AbstractRoutingDataSource 2、使用MyBatis注册多个SqlSessionFactory 3、使用dynamic-datasource框架 前言 Java后台使用MyBatis-plus 快速访问多个数 据源,这里分享三种常用的多数据源管理方案 1、使用Spring提供的AbstractRout…

【C++深度探索】继承机制详解(一)

hello hello~ ,这里是大耳朵土土垚~💖💖 ,欢迎大家点赞🥳🥳关注💥💥收藏🌹🌹🌹 💥个人主页:大耳朵土土垚的博客 &#x1…

代码托管服务:GitHub、GitLab、Gitee

目录 引言GitHub:全球最大的代码托管平台概述功能特点适用场景 GitLab:一体化的开发平台概述功能特点适用场景 Gitee(码云):中国本土化的代码托管服务概述功能特点适用场景 功能对比结论 引言 在现代软件开发中&#…