IO中断原理浅析

news2024/12/23 17:39:44

目录

什么是中断

什么是IO中断

无中断的情况

有中断的情况


什么是中断

       中断是指,在程序运行过程中,系统出现一个必须由CPU立即处理的情况,此时CPU暂时中止程序的执行转而处理这个新情况的过程叫做中断。

什么是IO中断

        I/O中断通过中断处理器执行中断操作。当外部设备的I/O模块准备好时,它会发送给CPU一个中断信号,CPU则会“立即”做出响应,暂停当前程序的处理去服务该I/O设备的程序。

无中断的情况

1)当我们程序需要从硬盘读取一个文件时,会先检查内核缓存中是否有数据,若没有数据,则执行实际I/O操作。在I/O操作执行时,我们的用户线程将阻塞等待数据从硬盘写到内存中。对于用户来说线程是被阻塞的。
2)在实际的I/O操作过程中,若没有中断操作,CPU会不断轮询检查I/O操作是否完成,若I/O操作没有完成则继续调度其他线程,过一会儿再来检查。若操作完成,CPU将线程加入到线程就绪队列中并恢复线程上下文信息。
3)线程处于就绪队列,可以被操作系统调度从而继续执行读操作,此时会将数据从操作系统内核缓存读取到用户缓存中。

有中断的情况

1)当我们程序需要从硬盘读取一个文件时,会先检查内核缓存中是否有数据,若没有数据,则执行实际I/O操作。在I/O操作执行时,我们的用户线程将阻塞等待数据从硬盘写到内存中。对于用户来说线程是被阻塞的。
2)在实际的I/O操作过程中,CPU向I/O模块(DMA控制器)发送读指令,然后就去调度其他线程。
3)当I/O模块(DMA控制器)I/O执行完成后,会产生中断信号在通知CPU,CPU将线程加入到线程就绪队列中并恢复线程上下文信息。
4)线程处于就绪队列,可以被操作系统调度从而继续执行读操作,此时会将数据从操作系统内核缓存读取到用户缓存中。

个人理解:其实相当于一种阻塞唤醒机制,在被唤醒之前,CPU不用一直自旋重试询问数据是否已准备完成。

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

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

相关文章

操作系统的重点笔记-1

一、操作系统的设计目标 1.易用性 使计算机易于使用,提供文件抽象后,对文件的操作就是对磁盘的操作,不再需要考虑如何通过控制磁盘移动,实现对磁盘某个信号的读写细节 2.高效性 完成特定功能的效率,如时间效率&…

音视频开发之旅(93)-图像超分增强之Real-ESRGAN

目录 1、背景和问题 2、高清-低清 数据集构建 3、Real-ESRGAN模型结构 4、源码分析 5、不足与局限性 6、资料 一、背景和问题 图像超分一直是一个活跃的研究课题,旨在从低分辨率(LR)重建高分辨率(HR)图像。在数…

中秋节了,送大家一个月饼

按F12,直接在浏览器控制台输入下面代码,你就会得到下面的月饼 console.log("%c\uD83E\uDD6E","font-size: 20em")

pandas中基于范围条件进行表连接

来自:Python大数据分析 费弗里 表连接是我们日常开展数据分析过程中很常见的操作,在pandas中基于join()、merge()等方法,可以根据左右表连接依赖字段之间对应值是否相等,来实现常规的表连接。 但在有些情况下,我们可能…

JDBC与MyBatis:数据库访问技术的变迁【后端 15】

JDBC与MyBatis:数据库访问技术的变迁 JDBC的基本使用 Java Database Connectivity (JDBC) 是Java提供的一种标准API,用于与数据库进行交互。它提供了一系列的接口和类,使得开发人员能够直接使用Java代码来编写SQL语句并执行数据库操作。JDBC…

Sequential的使用和搭建实战

一、Sequential 是什么 Sequential 主要出现在 Keras 库中,这是一个用于构建和训练深度学习模型的高级 API。Sequential 类允许你按顺序构建神经网络模型,其中每一层都按照给定的顺序逐层堆叠。这种模型适用于大多数线性堆叠的神经网络结构。Sequential…

GEE 迭代删除谷歌资产文件夹

在Google Earth Engine (GEE) 中管理大量地理空间数据时,我们可能会遇到需要清理不再需要的资产的情况。但需要提前删除子文件后才可删除文件夹,才可释放存储空间,删除过时的数据。本文将介绍如何在GEE中迭代删除资产文件夹。 代码详解 以下…

3个方法教大家如何在Excel表格中添加水印

在Excel表格中添加水印是一种常见的需求,但是Excel并没有像word文档一样的直接添加水印的功能,怎么办? 今天小编来分享一个方法,也能实现Excel表格的添加水印~ 一、使用文本框插入文字水印 1、插入选项卡 进入excel的操作界面&…

Google大数据架构技术栈

数据存储层 Colossus Colossus作为Google下一代GFS(Google File System)。 GFS本身存在一些不足 单主瓶颈 GFS 依赖单个主节点进行元数据管理,随着数据量和访问请求的增长,出现了可扩展性瓶颈。想象一下,只有一位…

攻防世界 CTF Pwn(一)

前言 攻防世界是一个专注于网络安全的在线学习和竞赛平台,由赛宁网安推出,旨在为网络安全爱好者提供丰富的学习资源和实战竞赛环境。该平台自2018年9月推出以来,已经吸引了超过18万用户注册使用,月活跃用户超过5万。 平台的主要…

BBOT:一款递归型互联网OSINT资源情报工具

关于BBOT BBOT是一款递归型互联网OSINT资源情报工具,该工具深受Spiderfoot项目的启发,旨在自动化侦察、漏洞奖励项目和ASM。 功能介绍 1、支持多个目标 2、网页截图 3、 Web安全测试模块套件 4、由 NLP 提供支持的子域名变异 5、Neo4j 的本机输出&#…

【LeetCode】每日一题 2024_9_13 预算内的最多机器人数目(滑动窗口、单调队列)

LeetCode 启动! 每日一题的题解重新开始连载! 题目:预算内的最多机器人数目 题目链接:2398. 预算内的最多机器人数目 题目描述 代码与解题思路 func maximumRobots(chargeTimes []int, runningCosts []int, budget int64) (an…

【微服务】Ribbon(负载均衡,服务调用)+ OpenFeign(服务发现,远程调用)【详解】

文章目录 1.Ribbon(负载均衡,服务调用)1.1问题引出1.2 Ribbon负载均衡1.3 RestTemplate整合Ribbon1.4 指定Ribbon负载均衡策略1.4.1 配置文件1.4.2 配置类1.4.3 定义Ribbon客户端配置1.4.4 自定义负载均衡策略 2.OpenFeign面向接口的服务调用…

【计算机网络】HTTP相关问题与解答

此篇文章内容会不定期更新,仅作为学习过程中的笔记记录 目录 一、HTTP请求和响应报文是怎样的? 1、请求报文 2、响应报文 二、HTTP请求方法有哪些? GET HEAD POST PUT DELETE PATCH OPTIONS TRACE CONNECT 三、GET请求与POST请…

Day 不知道是几|贪心算法part1

贪心算法 贪心算法一般分为如下四步: 将问题分解为若干个子问题 找出适合的贪心策略 求解每一个子问题的最优解 将局部最优解堆叠成全局最优解 这个四步其实过于理论化了,我们平时在做贪心类的题目 很难去按照这四步去思考,真是有点“鸡肋”。…

c++中模版进阶和继承

类型参数非类型模版参数 //类型参数非类型模版参数 template<class T,int N> class Array { public:Array() {} private:T _a[N]; }; int main() {Array<int, 100> a1;return 0; } 注意&#xff1a; 1. 浮点数、类对象以及字符串是不允许作为非类型模板参数的。…

【兼容性记录】video标签在 IOS 和 安卓中的问题

业务需求背景&#xff1a;由于业务中涉及到有视频播放的内容&#xff0c;所以就使用了 video 标签去做&#xff0c;但是 video 标签在 ios 设备和安卓设备中的默认行为不一致&#xff0c;故记录下解决方法&#xff08;折中办法&#xff09;。 ios 自动全屏 ios 设备点击播放视频…

STC分散文件加载

一、什么是分散加载文件&#xff1f; 分散加载文件通常以.sct结尾&#xff0c;英文名是&#xff1a;Linker Control File, scatter loading&#xff0c;链接器根据这个文件的配置来分配各个节区的地址空间&#xff0c;并且生成分散加载代码&#xff0c;因此我们只要修改分散加载…

另一款插件开发中......

欢迎插眼&#xff01;&#xff01;&#xff01; 一款关于源码阅读和笔记记录的插件。发个图&#xff0c;还在开发中......Command Assist的难点是第一次接触IDEA插件&#xff0c;不管是项目工程结构&#xff0c;还是开发发布流程都比较陌生&#xff0c;然后是功能点里面的终端…

编码规范之注释、条件语句中限制代码行数和避免硬编码

对于软件开发管理来说&#xff0c;制订编码规范是一个历久弥新的话题。每一个大有为开发头目&#xff0c;都强调编码规范。或者程序员也互相攻讦&#xff08;jie&#xff0c;第二声&#xff0c;阳平&#xff09;&#xff0c;说你写的代码很乱&#xff0c;不规范&#xff0c;很难…