计组+系统01:思维导图10分钟复习 I/O系统与中断

news2024/11/28 4:38:15

🪙前言

考研笔记整理,纯复习向,思维导图基本就是全部内容了,不会涉及较深的知识点~~🥝🥝

  • 第1版:查资料、画思维导图~🧩🧩

编辑: 梅头脑  BING AI

参考用书:王道考研《2024年 计算机组成原理考研复习指导》《2024年 操作系统考研复习指导》

参考视频:7.1_1_输入输出系统和IO控制方式_哔哩哔哩_bilibili


🦮思维导图

  • 🌸思维导图为整理王道教材计组第7章 I/O系统的所有内容+操作系统第5章的部分内容,如果看不清的话,可以试试存到本地然后放大~
  • 🌸博文后面会以大纲的形式复述一遍,面向复习,不会写得很详细;如果想仔细了解知识点,或许可以考虑以下两种方式~
    • 王道咸鱼老师的视频:7.1_1_输入输出系统和IO控制方式_哔哩哔哩_bilibili
    • 较为重要的内容有从网络找相关配图并给出原文链接,点击配图的链接可以传送到各位大佬的博文,也很适合快速复习~

📇目录

🪙前言

🦮思维导图

📇目录

🌵I/O设备

🪶按信息交换单位分类

🪶按资源分配管理分类

🌵I/O接口

🪶主要功能

🪶基本结构

🪶I/O指令

🪶端口及编址

🌵I/O方式

🪶程序查询方式

🪶程序中断方式

🪶DMA方式

🪶通道方式

🪶计算题目

🌵I/O软件层次结构

🪶层次结构

🪶系统处理流程

🪶设备独立性软件

🪶SPOOLing技术

🪶设备驱动接口

🔚结语


  • 🌵I/O设备

    • 🪶按信息交换单位分类

      • 字符设备【例,键盘】:传输效率较低,不可寻址,通常采用中断I/O方式
      • 块设备【例,磁盘】:传输速率较高,可寻址,通常采用DMA控制方式 

      图源:5.1.1 什么是I/O设备?有几类I/O设备?BitHachi的博客-CSDN博客

    • 🪶按资源分配管理分类

      • 独占设备【例,打印机】:临界资源,可能导致死锁,需要资源调度算法
      • 共享设备【例,磁盘】:一段时间允许多个资源访问,每个时刻只有一个进程访问,不会死锁;必须支持可寻址,随机访问
      • 虚拟设备【例,spooling技术】:将一台独占物理设备虚拟化为多台逻辑设备

  • 🌵I/O接口

    • 🪶主要功能

      • 数据传输:数据信息、状态信息、控制信息等
      • 控制和定时:解决主机与外设时序配合问题
      • 数据缓冲:匹配CPU与外设传输速度
      • 信号格式转换:匹配计算机与外设信号格式
    • 🪶基本结构

      • 主机侧【系统总线】

        • 数据线
          • 数据寄存器:CPU读写,存放输入输出数据,实现数据缓冲
          • 状态寄存器:CPU读取,存放外设的执行结果和状态信息
          • 控制寄存器:CPU写入,存放外设的启动命令和更改外设的模式
        • 地址线
          • 地址译码与I/O控制逻辑:I/O接口寄存器地址
        • 控制线
          • 地址译码与I/O控制逻辑:读/写信号、仲裁信号【例,中断请求信号】、握手信号
      • 设备侧【接口电缆】

        • 外设界面控制逻辑【驱动程序协助】
          • 控制线:控制寄存器中的命令字进行译码
          • 数据线:收集并发出数据缓冲线到外设的数据
          • 状态线:收集外设状态到状态寄存器

      图源:IO 设备的分类与概念、IO控制器_io控制器和io设备的区别-CSDN博客 

    • 🪶I/O指令

      • 功能:对数据缓冲寄存器、状态/控制寄存器的访问操作,通常发生在通用寄存器和I/O端口之间
      • 权限:只能在操作系统内核的底层I/O软件中使用,是一种特权指令
    • 🪶端口及编址

      • 端口
        • 概念:接口电路中可被CPU直接访问的寄存器,例如数据缓冲寄存器、状态/控制寄存器
        • 分类:数据端口【读写操作】、状态端口【读操作】、控制端口【写操作】
      • 接口
        • 概念:若干I/O端口+相应的控制逻辑=I/O接口,I/O接口也叫做【设备控制器】或【I/O适配器】
      • 编址
        • 统一编址:I/O端口当作内存的地址进行分配,通过地址码区分存储单元和I/O设备,使用统一的访存指令可访问I/O端口
        • 独立编址:I/O端口的地址空间与主存地址空间是两个独立的地址空间,需要设置专门的I/O指令访问I/O端口 

       图源:IO 设备的分类与概念、IO控制器_io控制器和io设备的区别-CSDN博客 


  • 🌵I/O方式

    • 🪶程序查询方式

      • 主要特点:(1)控制完全由CPU执行程序实现,CPU与I/O串行工作;(2)数据传送由软件完成
      • 响应时间:(1)独占查询;(2)定时查询
    • 🪶程序中断方式

      • 主要特点:数据准备阶段CPU与I/O并行工作,传送与主程序串行工作
      • 响应时间:对于可屏蔽中断请求的响应,发生在指令的执行周期结束时【指令周期=取指周期+间址周期+执行周期+中断周期】
      • 适用:针式打印机等不是很占用CPU工作时间的低速设备,或键盘、鼠标等需要CPU立即响应的设备
      • 中断分类【广义中断】
        • 内部异常:是CPU执行指令引起的中断
          • 故障【软件中断】:指令执行引起的异常,如缺页、除数为0、运算溢出等
          • 自陷【软件中断】:用于在用户态下调用操作系统内核程序
          • 终止【硬件中断】:CPU遇到无法执行的硬件故障,如控制器出错,存储器校验错
          • 备注:内核调用操作系统是自陷中断,内核态转用户态是操作系统实现,用户态转内核态是硬件实现
        • 外部异常【狭义中断】:非CPU执行指令引起的中断
          • 可屏蔽中断INTR
          • 不可屏蔽中断NMI
      • 基本步骤
        • 中止现行程序
        • 处理中断请求
        • 返回断点,继续执行原程序
      • 中断识别
        • 软件识别:异常状态寄存器,检测异常和中断类型
        • 硬件识别:CPU通过中断源获得中断类型号,据此计算出对应向量的地址,查询中断向量表计算出对应中断服务程序的入口地址,送入PC
        • 备注:中断向量表存放在内存中,通常开机时操作系统初始化
      • 单重中断
        • 响应过程【硬件实现】
          • 关中断:保存程序的断点和现场信息,不能相应更高级中断源的中断请求
          • 保存断点:将原程序的断点和程序状态【PC寄存器和PSW寄存器】的内容保存在栈和特定寄存器中
          • 引出中断服务程序:识别中断源,将对应的服务程序入口地址送入程序计数器PC
        • 处理过程【系统实现】
          • 保存现场【工作的通用寄存器】
          • 执行中断服务程序
          • 恢复现场
          • 开中断、中断返回:继续执行原程序

        图源:I/O方式 —— 程序中断方式_starter_zheng的博客-CSDN博客

      • 多重中断
        • 中断响应优先级
          • 不可屏蔽中断 > 内部异常 > 可屏蔽中断,内部异常:硬件故障 > 软件故障
          • DMA中断 > I/O设备传送,IO设备传送:高速 > 低速,输入 > 输出【避免数据覆盖】,实时 > 普通
          • 访管【用户态系统调用】 > 程序性【进程抢占CPU】
        • 中断屏蔽技术实现
          • 屏蔽字触发器:改变可屏蔽中断的优先级,1表示屏蔽该中断源的请求,0表示可以正常申请;中断源不能中断自身,因此也设置为1
          • 屏蔽器寄存器:所有屏蔽触发器组合在一起
        • 处理过程【系统实现】
          • 保存现场【工作的通用寄存器】和屏蔽字
          • 开中断:允许更高请求得到相应,实现中断嵌套
          • 执行中断服务程序
          • 关中断:保证恢复现场和屏蔽字时不被中断
          • 恢复现场和屏蔽字
          • 开中断、中断返回:继续执行原程序
    • 🪶DMA方式

      • 主要特点:(1)数据准备阶段CPU与I/O并行工作,传送与主程序并行工作(2)内存与外设数据传送不再经过CPU(3)数据传送由硬件完成
      • 响应时间:对于DMA请求的响应,发生在任意一个机器周期结束时【取指、间址、执行周期后均可】;部分题型表示可以发生在总线周期结束时,可使DMA占有总线
      • 适用:磁盘、声卡、显卡、网卡等高速设备大批量数据的传送,具有DMA接口的设备才能产生DMA请求
      • 组成
        • 主存地址寄存器:存放要交换数据的主存地址
        • 传送长度计数器:记录传送数据的长度,自动发送中断请求信号
        • 数据缓冲寄存器:暂存每次传送的数据
        • DMA请求触发器:I/O设备准备好数据后,给出控制信号使DMA请求触发器置位
        • 中断机构:一个数据块传送完成后触发中断机构,向CPU提出中断请求
        • 控制/状态逻辑
      • 传送方式
        • 停止CPU访存:DMA使用时,CPU停止访问
        • 周期挪用:CPU与IO同时访存时,I/O设备挪用一个或几个存取周期
        • 交替访存:C1周期专供DMA访存,C2周期专供CPU访存
      • 传送路径:
        • 可以参考 王道书6.1.3 三总线结构

          图源:总线_YuanbaoQiang的博客 

      • 传送过程
        • 预处理:由CPU完成测试、初始化等必要的准备工作;I/O设备准备好数据后向DMA控制器发送请求,DMA数据缓冲寄存器写满后向CPU发送总线请求
        • 数据传送:以单字节或字为基本单位,或以数据块为基本单位【如硬盘】传送数据,传送期间总线控制权由DMA控制器掌握
        • 后处理:DMA控制器向CPU发出中断请求,CPU执行中断服务程序做DMA结束处理
        • 注意:区分 DMA请求【数据预处理与传送阶段,优先级高于CPU,根据传送方式决定访存周期】 与 DMA中断【后处理阶段,数据块传送结束,申请中断】

         图源:计算机组成原理 输入输出系统3 DMA方式_CASTANEA的博客

    • 🪶通道方式

      • 主要特点:(1)CPU、通道、I/O设备三者并行操作(2)I/O通道方式是DMA方式的发展
      • 备注:这个好像不是考纲考点~
    • 🪶计算题目

      • I/O时间占CPU时间【08年】【16年】【18年】
        • 时间百分比(%) = CPU每秒处理中断的时钟周期(Hz) / CPU每秒时钟频率(Hz)= 每秒中断时钟周期(s)/ 单位时间(s)
        • CPU每秒处理中断的时钟周期(Hz) = 外设每秒中断次数(Hz) x CPU每次处理中断时钟周期
        • 外设每秒请求中断次数(Hz) = 外设每秒传输数据速率(B/s) / 外设每次传送数据块大小(B)= 单位时间(s) / 外设每次准备数据块的时间(s)
        • 外设每次准备数据块的时间(s)= 外设每次传送数据块大小(B)/ 外设每秒传输数据速率(B/s),注:CPU 检查时间 ≤ 外设准备数据块的时间,否则会覆盖
        • CPU每次处理中断时钟周期 = CPU执行中断指令数量(条)x 每条指令时钟周期CPI
      • DMA每秒请求次数【12年】【22年】
        • DMA周期挪用每秒请求次数(次)= 外设每秒请求数据量(B)/ DMA缓冲区寄存器容量(B)
        • 磁盘每秒请求数据量(B)= 磁盘页面大小(B)x 每秒访问磁盘次数(次)
        • CPU每秒访问磁盘次数(次)= CPU每秒访存次数(次)x Cache缺页率(%) x 主存缺页率(%)
      • one more thing
        • 这个是课上机智的咸鱼为了理解18年真题带我们画的配图,虽然咸鱼教的很好,但我也不确定自己水水的浆糊脑袋有没有理解到位,可能会有错误...不过应该可以贴在这里吧——


  • 🌵I/O软件层次结构

    • 🪶层次结构

      • 用户层I/O软件:用户可调用与I/O操作有关的库函数【系统调用】
      • 设备独立性软件:使应用程序独立于系统程序
      • 设备驱动程序:可与硬件直接交互,根据系统指令驱动I/O设备工作
      • 中断处理程序:可与硬件直接交互,保存断点,转入中断服务程序
      • 硬件:执行具体I/O操作

      图源:操作系统17———IO系统之概述_冰炭不投day的博客-CSDN博客 

    • 🪶系统处理流程

      • 用户I/O层软件→设备独立性软件→设备驱动程序→中断处理程序→硬件
    • 🪶设备独立性软件

      • 高速缓存与缓冲区
        • 高速缓存:提高磁盘I/O速度
          • 设置硬件【例,快表】
          • 内存的空间作为缓冲池,供请求和分页系统和磁盘I/O时共享【常见】
        • 缓冲区:高、低速设备的通信
          • 硬件缓冲器
          • 内存缓冲区
            • 单缓冲区,处理用时:Max(处理时长,输入时长)+传送时长
            • 双缓冲区,处理用时:Max(处理时长+传送时长,输入时长)
            • 循环缓冲:缓冲区构成循环队列
            • 缓冲池
              • 缓冲队列:空缓冲队列、输入队列、输出队列;
              • 缓冲区
                • 收容收入【空缓冲队列→输入队列】
                • 提取收入【输入队列→空缓冲队列】
                • 收容输出【空缓冲队列→输出队列】
                • 提取输出【输出队列→空缓冲队列】
      • 设备分配与回收
        • 设备分配的数据结构
          • 设备控制表【对应设备数量】
            • 设备类型
            • 设备标识符【物理名称】
            • 设备状态【等待/不等待、忙/闲】
            • 指向控制器表的指针
            • 重复执行的次数或时间【多次I/O不成功则判定失败】
            • 设备队列的队首指针【进程PCB组成队列】
          • 控制器控制表【控制设备与内存交换数据】
            • 控制器标识符
            • 控制器状态
            • 与控制器连接的通道表指针
            • 控制器队列的队首指针
            • 控制器队列的对位指针
          • 通道控制表【一个通道可为多个控制器控制表服务】
            • 通道标识符
            • 通道状态
            • 与通道连接的控制器表首址
            • 通道队列的队首指针
            • 通道队列的对位指针
          • 系统设备表【系统只有一张】:记录已连接到系统中所有物理设备的情况
        • 设备分配原则
          • 静态分配:一次性分配所有资源,不会死锁,但效率低
          • 动态分配:在进程执行过程中根据执行需要进行,算法不合适可能死锁,但效率高
        • 设备分配算法先请求先分配、优先级高者优先等
        • 设备分配安全性
          • 安全分配方式:进程I/O请求后便进入阻塞态,CPU与设备串行运行,效率很低
          • 不安全分配方式:进程I/O请求后仍继续运行,有可能会造成死锁,需要设计合适的设备分配算法
      • 🪶SPOOLing技术

        • 输入:I/O设备的输入数据经过内存的输入缓冲区传送到输入井,挂在输入队列;CPU需要输入数据时,从输入井读入内存
        • 输出:I/O设备的输出数据经过内存传送到输出井,挂在输出队列;输出设备空闲时,从输出井经过输出缓冲区送到输出设备

        图源:操作系统知识点串联_King来写代码的博客-CSDN博客

      • 🪶设备驱动接口

        • 统一设备驱动城区与操作系统的接口
        • 用户编程时使用的设备与实际设备无关【独立性】

🔚结语

😶‍🌫️博文到此结束,写得模糊或者有误之处,欢迎小伙伴留言讨论与批评,督促博主优化内容{例如有错误、难理解、不简洁、缺功能}等~

🌟博文若有帮助,欢迎小伙伴动动可爱的小手默默给个赞支持一下,收到点赞的话,博主肝文的动力++~

🌸博主也有整理数据结构学习笔记,在这里:

数据结构_梅头脑_的博客-CSDN博客https://blog.csdn.net/weixin_42789937/category_12262100.html?spm=1001.2014.3001.5482icon-default.png?t=N7T8https://blog.csdn.net/weixin_42789937/category_12262100.html?spm=1001.2014.3001.5482

😔默默吐槽,这个排版真是...啊我自己都看不下去,下次想想插图有没有什么更好的办法...

🙈发现有小伙伴留言点赞有点开心,想了很久还是修改了排版——发现用块引用以后配图问题就好多了,虽然还是有点怪怪的,但至少不是那种别扭到自己都看不下去那种了~~

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

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

相关文章

Deep Java Library(六)DJLServing自定义模型,自定义Translator注意事项

DJLServing自定义模型中自定义Translator注意事项需要仔细读一下DJLServing源码中的ServingTranslatorFactory类,,一开始不了解以为DJLServing选择Translator像玄学,后来看了像迷宫一样ServingTranslatorFactory类大致明白了,以下…

SAP-写了一个FUNCTION,用于读取订单中,指定工序的状态。

需求 在开发一个涉及工序的Report的过程中发现,SAP仅提供了Function去获取订单的状态,没有提供获取订单工序状态的Function。考虑到后续开发的过程中,还需要复用到这个功能,于是打算按这个需求去开发一个Function,传入AFVC表的主键,返回的是把该工序的全部已激活的状态,…

八 动手学深度学习v2 ——卷积神经网络之卷积+填充步幅+池化+LeNet

目录 1. 图像卷积总结2. 填充和步幅 padding和stride3. 多输入多输出通道4. 池化层5. LeNet 1. 图像卷积总结 二维卷积层的核心计算是二维互相关运算。最简单的形式是,对二维输入数据和卷积核执行互相关操作,然后添加一个偏置。核矩阵和偏移是可学习的参…

储能直流侧计量表DJSF1352

安科瑞 华楠 具有CE/UL/CPA/TUV认证 DJSF1352-RN导轨式直流电能表带有双路直流输入,主要针对电信基站、直流充电桩、太阳能光伏等应用场合而设计,该系列仪表可测量直流系统中的电压、电流、功率以及正反向电能等。在实际使用现场,即可计量总…

概念解析 | U-Net:医学图像分割的强大工具

注1:本文系“概念解析”系列之一,致力于简洁清晰地解释、辨析复杂而专业的概念。本次辨析的概念是:U-Net。 U-Net:医学图像分割的强大工具 U-Net Architecture Explained - GeeksforGeeks 在医学图像分析的领域,一种称为U-Net的深度学习模型已经成为了一个标准工具。U-Net…

牛客练习赛115 A Mountain sequence

题目: 样例: 输入 3 5 1 2 3 4 5 3 3 3 3 3 1 2 1 输出 16 1 3 思路: 依据题意,再看数据范围,可以知道暴力肯定是不可能了,然后通过题目意思,我们可以排列模拟一下,这里排列所得结…

Decord库快速抽帧

Decord比Opencv块6倍!! 1. 使用教程 读取视频 # 1、读取使用 from decord import VideoReader from decord import cpu, gpuvr VideoReader(tiny-Kinetics-400\\abseiling\\_4YTwq0-73Y_000044_000054.mp4, ctxcpu(0))print(video frames:, len(vr)…

ArcGIS API for JavaScript 4.x 实现动态脉冲效果

1. 设计思路 主要通过定时刷新,每一次的脉冲渲染圈不停的放大,并且透明度缩小,直到达到一定的大小再退回0。 2. 实现代码 import MapView from "arcgis/core/views/MapView"; import GraphicsLayer from "arcgis/core/laye…

数学建模B多波束测线问题B

数学建模多波束测线问题 1.问题重述: 单波束测深是一种利用声波在水中传播的技术来测量水深的方法。它通过测量从船上发送声波到声波返回所用的时间来计算水深。然而,由于它是在单一点上连续测量的,因此数据在航迹上非常密集,但…

云备份——服务端客户端联合测试

一,准备工作 服务端清空备份文件信息、备份文件夹、压缩文件夹 客户端清空备份文件夹 二,开始测试 服务端配置文件 先启动服务端和客户端 向客户端指定文件夹放入稍微大点的文件,方便后续测试断点重传 2.1 上传功能测试 客户端自动上传成功…

【Altium Designer】AD20教程,实战,作图(一)

文章目录 完整制图方法1、建立一个完整的PCB工程,需要有sch文件、pcb文件、schlib文件、pcblib文件,后面两个不是必须的,后面两个用来自己创建库里面没有的东西。2、这个时候就可以画 原理图 ,这里我提一下库这个东西。3、画原理图4、编译原理…

系统架构设计师(第二版)学习笔记----计算机语言

【原文链接】系统架构设计师(第二版)学习笔记----计算机语言 文章目录 一、计算机语言的组成1.1 计算机语言的分类 二、机器语言2.1 机器语言指令信息2.2 机器语言指令格式的种类 三、汇编语言3.1 汇编语言中语句种类3.2 汇编语言指令和伪指令的语句格式…

数字孪生的深海迷航

上世纪70年代,美国宇航局(NASA)筹划构建复杂的大型载人航天器。当时科学家们发现,航天任务进行当中,航天器的维护和修理面临着环境复杂、危险性高、故障不易排查等问题。 与其“盲人摸象”式的找故障,不如干…

WRF DA环境需求、系统安装、调试与运行丨WRF DA变分资料同化、WRF DA混合同化新方法

目录 专题一 资料同化的基本理论与方法 专题二 WRF DA的环境需求、系统安装、调试与运行 专题三 观测资料与质量控制 专题四 WRF DA同化系统的配置、背景误差的构造 专题五 WRF DA变分资料同化、WRF DA混合同化新方法 专题六 变分同化的单点试验、混合同化的单点试验 专…

机器学习——Logistic Regression

0、前言: Logistic回归是解决分类问题的一种重要的机器学习算法模型 1、基本原理: Logistic Regression 首先是针对二分类任务提出的一种分类方法如果将概率看成一个数值属性,则二元分类问题的概率预测就可以转化为一个回归问题。这种思路最…

B Antiamuny wants to leaern binary search again

题目&#xff1a; C/C: int f(int l,int r,int x) { // l < x < rint cnt 0;while(l < r) {cnt;int mid (l r) / 2;if (mid x) break;if (mid < x) l mid 1;else r mid - 1;}return cnt; } 样例&#xff1a; 输入 5 3 7 2 6 12 2 2 10 3 6 14 8 5 8 1 输…

java实现调用百度地图

这里使用的springbootthymeleaf实现&#xff0c;所以需要有springboot技术使用起来更方便 当然&#xff0c;只使用html加js也可以实现&#xff0c;下面直接开始 首先我们需要去百度地图注册一个AK&#xff08;百度地图开放平台 | 百度地图API SDK | 地图开发&#xff09; 找到左…

神经网络与强化学习:揭示AI的超能力

文章目录 神经网络&#xff1a;模拟人脑的工具强化学习&#xff1a;通过试错学习结合神经网络和强化学习价值网络策略网络结合训练 应用领域游戏机器人控制金融交易 未来趋势自动化和自主系统个性化和自适应系统跨学科研究 结论 &#x1f389;欢迎来到AIGC人工智能专栏~神经网络…

谷粒商城----缓存与分布式锁

1、缓存使用 为了系统性能的提升&#xff0c;我们一般都会将部分数据放入缓存中&#xff0c;加速访问。而 db 承担数据落盘工作。 哪些数据适合放入缓存&#xff1f;  即时性、数据一致性要求不高的  访问量大且更新频率不高的数据&#xff08;读多&#xff0c;写少&…

day3_C++

day3_C 思维导图用C的类完成数据结构 栈的相关操作用C的类完成数据结构 循环队列的相关操作 思维导图 用C的类完成数据结构 栈的相关操作 stack.h #ifndef STACK_H #define STACK_H#include <iostream> #include <cstring>using namespace std;typedef int datat…