当前位置: 首页 > news >正文

IO中断原理浅析

目录

什么是中断

什么是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.mrgr.cn/news/26172.html

相关文章:

  • 大模型从失败中学习 —— 微调大模型以提升Agent性能
  • YOLOv5 Detect.py 改变检测框box线条的粗细,隐藏检测框的检测信息,只显示检测框box
  • 构建蛋白质复合体结构中所有链序列的同源性矩阵
  • 移情别恋c++ ദ്ദി˶ー̀֊ー́ ) ——12.二叉树(习题)
  • (不用互三)从Prompt到创造:解锁AI的无限潜能
  • 爱 音 乐
  • Java高级Day40-QQ项目全代码
  • 程序员转行方向推荐
  • Java 创建对象内存分析
  • triton之ttir学习
  • [000-01-008].第05节:OpenFeign高级特性-日志打印功能
  • 树形结构构建的两种方式
  • 并发编程(九)
  • 免费的成绩查询微信小程序,让家长轻松掌握学生表现
  • 基于人工智能的自动驾驶系统项目教学指南
  • 机器学习文献|基于循环细胞因子特征,通过机器学习算法预测NSCLC免疫治疗结局
  • ESP8266+eclipse+AP+最简单webserver
  • 墨西哥海外仓市场如何?如何选择墨西哥海外仓系统?
  • vue权限菜单的详细开发步骤流程。
  • 《C++中动态数组的实现与探索》