计算机I/O原理

2023-05-16

cpu通过IO命令控制设备,cpu对设备的控制仅仅可以到达设备控制器,无法直接控制设备。设备无法直接和cpu通信,设备控制器通过中断机制向cpu反馈信息。即这个一个模型:
   

CPU----IO指令----->设备控制器<---交换数据--->设备


   

CPU<---中断--------设备控制器<---交换数据--->设备


这个模型的优点是简单且容易理解。尽管,设备种类繁多,设备到主机的连接所经过多个总线控制器(如USB接口的移动硬盘)的数目不同,设备的封装方式多样(如磁盘),IO传输数据是以CPU为核心的中断方式还是以存储器为核心的DMA方式。用这个模型足可以解释系统原理(当然如果你是写driver的话,还得了解更底层的技术细节)。在上面这个模型中可以看到,中断机制和总线结构是多道程序设计的基础。因为多道程序设计的关键是阻塞机制,可以从两点理解阻塞。


从底层计算机组成角度看,多道程序设计的目的是使cpu和设备可以并行工作,避免cpu执行IO操作时的空转和反复查询设备状态时的忙等待,从而提高CPU利用率。在此模型下,cpu和设备控制器之间交换数据,设备控制权和设备之间交换数据。设备控制器起到了隔立缓冲的作用。cpu通过IO指令操作设备控制器中的数据,状态,命令寄存器来间接操作设备。设备控制器和设备完成数据交换之后,设备控制器向CPU发出中断(注意中断源只能是设备控制器,而不是设备本身),cpu响应中断请求,暂停当下的处理,与设备控制器完成数据交换。有这样两种情景:



  • 一 IO read 情形:CPU 用IO指令操作设备控制器(状态,命令,数据寄存器),然后,CPU转去执行其他指令,与此同时,设备控制器读设备的数      据,当设备控制器读完数据后,向cpu发 出中断,cpu执行中断服务程序,在中断服务程序中,cpu用IO指令读设备控制器已缓冲好的数据。这      样,一个IO read 操作才算完成,如果有多组数据,这个过程重复至读完。




  • 二 IO write情形:CPU 用IO指令将数据传输给设备控制器,设置设备控制器状的状态,控制字等等 ,然后转去执行其他指令,与此同时,设备控制器向设备写数据,设备控制器写完数据后,通过中断通知cpu,通告的操作已完成,如果仍然有待写数据,重复这一过程,直至全部传输完毕。



从os角度看,进程A执行过程中,进行IO操作,IO操作引起进程A阻塞,等待一个外部事件的发生(外部事件发生后,该进程A才可以由阻塞态转为就绪态),同时,上下文切换,另一个进程B获得时间片执行。在此期间,阻塞态的进程A执行低层的IO处理(设备控制器和设备交换数据),进程B执行cpu操作。当进程A完成IO处理后,相应的外部事件(设备控制器发出中断请求信号)发生,当前运行的进程B被中断,进行外部事件处理,cpu和设备控制器之间传输数据,完成后,系统修改阻塞进程A的状态为就绪态。然后,依据剥夺或非剥夺调度算法,选择被中断的进程B,或刚解除阻塞的进程A,或其它就绪进程C执行。


注意上面的描述是以cpu为核心的总线结构,以存储器为为核心的总线结构的道理是一样的。


那么,打印机的例子怎么分析呢? 比如打印的数据位于内存中(以存储器为核心来考虑这个问题),这个过程其实是IO 写的情形。首先,打印进程在内存缓冲去区存储好待打印的部分数据,然后用IO指令操作打印机的控制器,打印进程阻塞,其它进程调度执行,打印机的控制器将内存中待打印的数据传输给打印机的缓存,当打印机控制器完成数据传输之后,向cpu发出中断,cpu中断当前进程的处理,将打印进程修改为就绪态,打印进程获得时间片之后,如果待打印数据全部已经传输完毕,则完成了打印任务,如果还有数据,在继续执行这一个过程直至数据全部传输完毕。打印机读取自身缓存中的数据打印之,这个打印的过程没有cpu的直接参与。


由此看出,IO指令和中断是计算机的神经系统,总线是循环系统。此外,我推测,早期的计算机(单道程序设计)没有阻塞的概念,自然没有中断和设备控制权这样的概念。 理解设备控制器有时候不能从实物角度出发,如移动硬盘,设备控制权和驱动器,磁盘体是封装在一起的,而且,中途还经过 usb总线控制权,PCI,ISA之类的总线控制权,所以这个模型是用来分析问题可以屏蔽底层技术细节,专注于系统原理。像打印机本身就是一个专用的计算机系统,内存和它交换数据可能经过DMA,其他总线控制权,以及打印机控制器。 为什么这种抽象的模型是有效的呢? 因为计算机是系统,你可以站在不同层次还分析问题,你所研究的结构是虚拟化的,底层是透明的。

通过上面分析,可以推理出四个待补充的东西:读者自个完成。


  • 1.多级时序系统,这个里面有一个总线通信控制和计算机时序控制。控制器中指令周期的机器控制方式。
  •   
    2.中断的分类。理解中断需要对中断进行分类,很多人不明白中断是无法对中断分类,os的trap和软中断,同步时间处理和缺页中断,访存时段页管理及其保护引起的中断,IO中断和外部事件处理。时钟中断和时间片轮转调度。

  • 3.IO Read&Write  mem Read&Write 四个时序图  。这是总线传输控制部分内容。


  • 4.IO控制方式:程序查询(忙等待),中断(基于字节,以CPU为核心),DMA(基于块,以存储器为核心),通道(IOP,IO处理器,外围处理器,有的书认为IOP就是通道,有的书不这样认为,我们不做区分)。IO传输和控制是计算机的外围处理(peripheral processing)。外围处理的发展趋势有这样的特点:CPU和IO的耦合越来越松散,CPU和IO的越来越相对独立,CPU处理和IO处理越来越并行,从以CPU为核心的总线结构向着以存储器为核心的架构发展。其实,CPU和IO之间的隔离的思想早就在批处理系统流行的年代就有了,而且,相当的成熟,如图所思(选自Tanenbaum的《现代操作系统》机械工业出版社第二版第5页)。SPOOLing技术和通道(IOP)技术与这个思想几乎完全重叠,只是材质和载体变了而已。请分析SPOOLing和通道(IOP)技术相关的知识。
    IBM1401 IBM 7094.jpg 

  •   
    6.IO软件层次的研究:

    • a.硬件(中断仲裁逻辑,中断允许寄存器,IO指令,设备控制器的状态,控制,数据寄存器,设备,数据总线)。如:磁盘,驱动器,控制器,DMA,数据总线,MDR,MAR等等。


    • b.中断机制(中断请求,中断响应,中断周期,中断允许寄存器,中断屏蔽,中断嵌套,保护断点,保护现场,中断仲裁,中断向量)。如:磁盘IO等等。


    • c.驱动(OS IO处理内核和中断机制之间的中间件,接受上层的请求调用中断处理程序,设备相关的软件,屏蔽底层硬件具体技术细节)。如:磁盘驱动程序等等。


    • d.设备无关(硬件资源虚拟化,统一的命名处理,向下一致的驱动接口,向上一致的API接口)。如:逻辑卷,盘符,按路径存取,文件等等。


    • e.应用软件。如:WPS软件等等。



  • 7.IO 编址:独立编址,统一编址,混合编址。


  • 8.从单道程序到多道程序设计的内存管理的演化历史  。 静态分区 (单)----> 静态分区 (多,针对物理地址空间编程,重定位问题)--------> 动态分区段式管理 (多,段基址寄存器和界限寄寄存器,PSW,驻于内存的进程的所占的存储空间之和必须小于等于物理存储)---------> swapping (多,整体的换入换出,驻于内存的单个进程所占的空间小于等于物理存储空间)-------> 虚拟存储页式管理 (多,部分(页)的换进换出,单个进程所占的空间可以大于物理存储空间) 此处几个说法不是很精确,进程所占的空间是指进程的地址空间即程序员的编程所使用的地址空间,而物理存储空间也并非实际的物理存储大小,而是指可物理上寻址的地址空间(如8,16,20,32,64位地址总线对应的不同的可寻址的地址空间),还有一个问题,可能有读者注意到系统软件占用的存储空间,实质上,系统软件占用地址空间位于进程的内核地址空间部分。 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

计算机I/O原理 的相关文章

随机推荐

  • 一段小程序,把某个文件从A路径按照某速度复制到B路径(python)

    usr bin env python coding cp936 import os time Begin set workpath原地址路径 Begin set workpath 61 34 192 168 0 88 bill bak 34
  • Ubuntu开机时直接进入命令行模式

    ubuntu16 04 xff0c 如下 执行下面命令即可在开机时直接进入命令行模式 xff1a sudo systemctl span class hljs operator span class hljs keyword set spa
  • CentOS6.8-minimal安装gnome桌面 安装NVC远程桌面连接

    一 安装桌面环境 64 1 安装桌面软件 yum groupinstall 34 Desktop 34 64 2 安装X Window组件 yum groupinstall 34 X Window System 34 64 3 安装字体 y
  • 在Manjaro中Debtap将deb文件转换成pkg文件后,怎么解压生成的.pkg.tar.xz包?

    接上篇博客 xff0c 本篇博客解决的问题如下 xff1a 在Manjaro中Debtap将deb文件转换成pkg文件后 xff0c 怎么处理生成的 pkg tar xz压缩包 xff1f 解决办法如下 xff1a 以我的mnetassis
  • ViewBinding和ButterKnife

    一 ViewBinding和ButterKnife比较 xff1a 传送门 1 ButterKnife一个好处就是不用写findViewById xff0c 另一个好处就是不用写setOnClickListener之类的 xff0c 满屏幕
  • 图的密度公式的解释

    一直不明白 xff0c 图的密度公式的含义 xff0c 如图所示 xff1a 分母 xff1a n n 1 2 xff0c 其实可以理解为两两相连的组合数量 比如说有6个节点 xff0c 那个两两相连的组合数为6 5 2 61 15 分子自
  • 【论文阅读】Cancelable Iris Biometric

    1 介绍 如果同时使用密钥和虹膜生物测定 xff0c 则错误拒绝率将增加 xff0c 因为恢复的密钥和汉明匹配距离都受到来自虹膜图案的噪声的影响 2 方法论 2 1 免注册转换 xff08 Registration free transfo
  • 阿里云服务器VNC连接Timed out waiting for a response from the computer报错解决方案

    首先要说明一点 xff0c 如果你是初学者 xff0c 第一次使用阿里云服务器并想获得可视化界面过程中遇到连接问题 xff0c 你可以参考以下方案 因为想要处理网页自动化测试的同时查看效果 xff0c 所以我想搞个VNC Viewer来显示
  • 发现scikit-image

    我是图形方面的新手 xff0c 写错的地方还请大家勘正 不记得从哪看到openCV与python的东西 xff0c 突然产生兴趣 xff0c 我喜欢python3 xff0c 但openCV偏偏最高只有python 2 7的支持 openC
  • Jetpack的学习

    一 ViewModel ViewModel的一个重要作用就是帮助Activity分担一部分的工作 xff0c 专门存放关于界面相关的数据 只要界面上能看到的数据 xff0c 都应该存放到ViewModel中 另外一个很重要的特性就是当手机屏
  • 【centOS 7一个解决“network.service: control process exited, code=exited status=1”方法】

    当我们用finalshell时 xff0c 发现连接不上 xff0c 用ip addr查看时 xff0c ens33没有ip xff0c 查看日志 一开始以为是没有开始网卡 xff0c 于是进入修改网卡配置参数 xff0c 修改 ONBOO
  • Ubuntu 20.04桌面文件夹图标消失及文件系统无法打开

    前言 之前遇到过服务器上桌面图标突然消失的情况 在更换系统语言之后 xff0c 桌面出现过一次这种情况 xff0c 经过重启之后就恢复了 再后来又莫名其妙出现了这么个问题 xff0c 最开始搜索的解决方案是 让你打开任务管理器 gnome
  • vim打造最强systemverilog编辑器

    更多分享内容可访问我的个人博客 https www niuiic top 更新 xff1a 1 对自动补全部分进行加强 xff0c 可以无限自定义snippets和keywords 补全能力完胜vscode 2 使用svlangserver
  • 修改CentOS VNC分辨率

    修改VNC分辨率有两个地方 1 etc sysconfig vncservers 2 usr bin vncserver 有些机器直接设置了这里就行 xff0c 有些要通过设置2才行
  • Debian11系统安装与配置Elasticsearch7.17.6

    安装方式 xff1a 使用安装包进行离线安装 1 下载安装包 下载地址 xff1a Elasticsearch 7 17 6 Elastic 选择DEB X86 64 xff0c 下载后得到文件elasticsearch 7 17 6 am
  • Windows Server 2012 R2 管理员密码忘记如何修改密码

    管理员密码忘记如何修改 人非圣贤孰能无过 有时我们经常会遇到忘记密码的尴尬场景 尤其是本机的管理员密码忘记 xff0c 那么如何更改恢复呢 xff1f xff08 如果你安装系统的过程中本身没有设置过密码 xff0c 那密码就为空或者为Ad
  • XPath 简单语法 (三)

    XPath表达式 2008 02 27 16 55 XML 文档对象模型 DOM 能够以编程方式读取 处理和修改 XML 文档 XPath 表达式 XPath 表达式使用路径表示法 xff08 与 URL 中使用的路径表示法类似 xff09
  • Error: cannot open display: localhost:0.0

    https stackoverflow com questions 12356425 error cannot open display localhost0 0 trying to open firefox from centos 6 在
  • MySQL 5.6 源码目录结构

    基于MySQL 5 6 26源码 源码目录 xff1a BUILD 构建工程的脚本 client 客户端 cmake cmd line utils 命令行工具 dbug 调试库 Docs 文档 extra 一些相对独立的次要工具 inclu
  • 计算机I/O原理

    cpu通过IO命令控制设备 xff0c cpu对设备的控制仅仅可以到达设备控制器 xff0c 无法直接控制设备 设备无法直接和cpu通信 xff0c 设备控制器通过中断机制向cpu反馈信息 即这个一个模型 CPU IO指令 gt 设备控制器