1. 输入输出系统概述

  • 组成:外设、接口、总线、管理软件
  • 基本功能
    • 完成计算机内外的信息传递
    • 保证CPU正确选择输出设备
    • 利用缓冲等,实现主机与外设的速度匹配
  • 特点:异步性、实时性、设备无关性
  • 输入过程:CPU把地址值放入总线 --> CPU等候设备数据有效 --> CPU从总线读入数据存入寄存器
  • 输出过程:CPU把地址值放入总线 --> CPU把数据值放入总线 --> 设备等数据有效取走数据
  • IO系统性能:存储IO、通信IO
    • 连接特性:哪些设备可以和IO相连
    • IO系统容量:IO系统可以容纳的设备数
    • 响应时间:从用户输入命令到得到结果所花的时间(s)
    • 吞吐率:单位时间完成的IO操作次数(用IOP表示)

2. 输入输出方式

  • 无条件IO方式:执行IO指令时,CPU默认外设已经准备就绪,外设很难满足这一点
  • 程序控制IO方式:执行IO指令时,先获取设备状态(设备状态寄存器),决定下一步操作(程序决定)
    • 数据要经过CPU,CPU还要浪费大量时间查询设备状态
  • 中断IO方式:外设主动通知CPU接收或输出数据,有实时性
  • DMA方式:由硬件执行IO,外设准备好后通知DMA,DMA接管总线,完成数据交换
    • 既有中断的优点,又降低了服务的开销
  • 通道和IO处理机方式:外设种类很多速度差别很大,将外设管理工作从CPU总分离出来
    • 通道本身就是个简单的CPU,执行IO指令的处理机
    • IO处理机是通道的进一步发展,更像一个CPU了

3. 中断请求与响应

  • 概念:CPU由内部外部事件引起CPU中断正在运行的程序,具有随机性(符合输入输出系统特性)
  • 作用:主机与外设并行;故障处理;实时处理
  • 类型
    • 内部中断(软件、异常)
    • 外部中断(可屏蔽中断INTR、不可屏蔽中断NMI)
  • 基本功能
    • 中断信号的保持与清除:通过寄存器存起来,处理完清零
    • 中断优先级:硬件响应优先序、软件服务优先序(中断服务程序开头,设置自己的中断屏蔽位)
    • 中断源识别:系统分配给每个中断源的代号(中断号),中断号获取可以用硬件或软件方式
    • 中断处理
      • 响应:每执行完一条指令,就会判断是否有中断请求
      • 处理:保存断点(返回地址)、执行中断程序、返回断点
    • 中断控制
      • 中断触发方式:指外设以什么逻辑信号去申请中断(边沿触发、电平触发)
      • 中断排队方式:按优先级、循环轮流排队
      • 中断嵌套:中断正在执行的中断程序,不可屏蔽中断不能嵌套
      • 中断屏蔽:处理器内部有个触发器,“1”时才会响应外部中断

4. DMA方式

  • 原理:数据传送不经过CPU,由DMA控制器实现内存和外设、外设和外设之间的直接快速传递
  • 系统构成
    • DMA作为主设备之一
    • DMA与IO接口集成
    • DMA提供专门IO总线
  • DMA的两种工作状态:被动态(未获得总线控制权,受CPU控制)、主动态(获得总线控制权)
  • 传输步骤
    • 申请:一个设备接口试图通过总线向另一个设备发送数据,先向CPU发送DMA信号
    • 响应:CPU收到DMA信号,当前总线周期结束后,按DMA信号优先级响应相应的DMA控制器
    • 数据传送:DMA收到CPU响应,获得总线控制权,开始直接数据传送
    • 传送结束:设备向CPU发送DMA结束信号,交换总线控制权
  • DMA操作类型
    • 数据传送:源地址数据传到目的地址
    • 数据校验:不传输,只校验某数据块内部的每个字节
    • 数据检索:不传输,只在制定内存区域内查找某个关键字或某几个数据位是否存在
  • DMA操作方式
    • 单字节传输模式:每次DMA操作传送一个字节
    • 块传输模式:每次传送多个字节,有个当前字节计数器,+1 +1 +1
    • 请求传输模式:DMA控制器询问外设,当外设请求信号无效时,暂停传输(不释放总线);再次有效再继续传输
    • 级联传输模式:多个DMA级联,分布式
  • DMA传输模式
    • 停止CPU访问内存:传输速率高的设备传输时有优势
    • 周期挪用:DMA挪用一个或几个内存周期。若此时CPU不需要访存则不冲突,若冲突则DMA优先
    • DMA与CPU交替访存:直接交替访存,不需要浪费时间

【重学计算机】机组D8章:输入输出系统的更多相关文章

  1. 【重学计算机】操作系统D3章:存储管理

    1. 存储管理的基本概念 逻辑地址:用户地址,从零开始编号 一维逻辑地址:(地址) 二维逻辑地址:(段号: 段内地址) 主存储器的复用方式 按分区:主存划分为多个固定/可变分区,一个程序占一个分区 按 ...

  2. 【重学计算机】操作系统D1章:计算机操作系统概述

    1. 计算机软硬件系统 冯诺伊曼结构 以运算单元为核心,控制流由指令流产生 程序和数据存储在主存中 主存是按地址访问,线性编址 指令由操作码和地址码组成 数据以二进制编码 其他:参考<重学计算机 ...

  3. 【重学计算机】机组D7章:总线

    1. 系统总线的特性及应用 总线概念:将计算机系统中各部件连接起来 总线分类:(外部/内部,系统/非系统,串行/并行,同步/异步...) 按用途分类: 存储总线:cpu与存储器 系统总线:连接存储总线 ...

  4. 【重学计算机】机组D4章:存储系统

    1. 存储系统层次结构 主存速度缓慢的原因:主存增速与CPU不同步,执行指令期间多次访问主存 主存容量不足的原因: 存在制约主存容量的技术因素:如由CPU.主板等相关技术指标规定了主存容量 应用对主存 ...

  5. 【重学计算机】机组D6章:中央处理器

    1. CPU的组成与功能 2. 数据通路 概念:执行部件间传送信息的路径,分共享通路(总线)和专用通路 抽象模型:时钟驱动下,A --> 组合逻辑 --> B D触发器定时模型: 时钟触发 ...

  6. 【重学计算机】机组D5章:指令系统

    1. 指令系统基本概念 指令集:一台机器所有指令的集合.系列机(同一公司不同时期生产):兼容机(不同公司生产) 指令字长:指令中包含的二进制位数,有等长指令.变长指令. 指令分类 根据层次结构:高级. ...

  7. 【重学计算机】计组D2章:数据表示

    1.基本概念 真值:+0101,-0100:机器数: [x]原=0101 2.几种机器数 原码:x = -0101,[x]原 = 1101 反码:x = -0101,[x]反 = 1010 补码:x ...

  8. 【重学计算机】计组D1章:计算机系统概论

    1.冯诺依曼计算机组成 主机(cpu+内存),外设(输入设备+输出设备+外存),总线(地址总线+数据总线+控制总线) 2.计算机层次结构 应用程序-高级语言-汇编语言-操作系统-指令集架构层-微代码层 ...

  9. 【重学计算机】操作系统D4章:设备管理

    1. IO的控制方式 演进过程:轮询 --> 中断 --> DMA --> IO通道 经典布局:南北桥 PS:详见<计算机组成原理> 2. IO的实现 软件实现层次:硬件 ...

随机推荐

  1. 如何查看selenium的版本号

    方法一: 打开cmd,输入python >>> import selenium >>> help(selenium) Help on package seleniu ...

  2. 搭建 vue2 单元测试环境(karma+mocha+webpack3)

    从网上找了很多例子关于单元测试,都是如何新建项目的时候的添加单元测试,用vue-cli中怎么添加,但是我的项目已经生成了,不能再一次重新初始化,这时如何添加单元测试,这里面遇到了好多坑,写在这里记录一 ...

  3. bzoj 3343 教主的魔法 分块

    修改直接对整块打标记,两边暴力. 查询需要保证每个整块有序,所以在修改时排序就好啦 #include<cstdio> #include<cstring> #include< ...

  4. laravel5.5解决小程序登陆态的问题

    修改一个文件 : vendor\laravel\framework\src\Illuminate\Session\Middleware\StartSession.php 找到getSession()方 ...

  5. Windows上安装配置SSH教程(6)——综合应用:在Windows上实现SSH远程登陆与文件传输

    ----------------- 声明:本教程现已经弃用.由于客户端同时安装Cygwin和OpenSSH for Windows会出现问题(Cygwin的shell下无法使用ssh命令),建议直接在 ...

  6. selenium+python,解决selenium弹出新页面,无法定位元素的问题(报错:Unable to locate element:元素)

    1.问题发生描述: 从一个页面进行点击等操作,页面跳转到第二个页面,对第二个页面中的元素,采取任何措施定位都报错,问题报错点如下: 2.出现问题的原因: 窗口句柄还停留在上一个页面,对于当前新弹出的页 ...

  7. javascript模块化编程 从入门到实战

    <!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset="UTF-8& ...

  8. 了解Scala反射

    本篇文章主要让大家理解什么是Scala的反射, 以及反射的分类, 反射的一些术语概念和一些简单的反射例子. 什么是反射 我们知道, Scala是基于JVM的语言, Scala编译器会将Scala代码编 ...

  9. 基于async/non-blocking高性能redis组件库BeetleX.Redis

    BeetleX.Redis是基于async/non-blocking模式实现的高性能redis组件库,组件支持redis基础指令集,并封装更简便的List,Hashset和Subscribe操作.除了 ...

  10. 我是如何将博客转成PDF的

    前言 只有光头才能变强 之前有读者问过我:"3y你的博客有没有电子版的呀?我想要份电子版的".我说:"没有啊,我没有弄过电子版的,我这边有个文章导航页面,你可以去文章导航 ...