• 操作系统—IO设备

    • IO设备
    • IO控制方式
      • 1、程序中断控制方法
      • 2、中断驱动方法
      • 3、DMA
      • 4、通道控制方法
      • 举例子分析
    • IO子系统的层次结构
      • 举个例子

操作系统—IO设备

IO设备

按使用特性分类

  • 人机交互类外设:键盘、鼠标
  • 存储设备:磁盘
  • 网络通讯设备:网络接口啥的

按传输速率分类

  • 低速设备:每秒一个或几个字节,如键盘等等
  • 中速设备:每秒数千个字节,如打印机等等
  • 高速设备:几千兆字节,如磁带机

按信息交换的单位分类

  • 块设备:如磁盘,其特征是传输效率高,以及可寻址,即可以随机读写任意一块,换句话说类似数组随机读取指定索引
  • 字符设备:如打印机,效率低下,不可寻址,输入输出采用中断机制

IO控制方式

1、程序中断控制方法

cpu发起io指令,cpu一直等着io读取完毕,数据没准备好需要空等,也就是阻塞,数据准备好了也需要cpu去搬运,很明显,cpu和io的效率是天差地别,这个时候cpu利用率很低

2、中断驱动方法

cpu发起读命令,保存当前运气程序的上下文,转而去执行其他程序,每个指令末尾,cpu检查下中断是否发生

如果有那么保存现在执行程序的上下文,去执行之前那个程序。

虽然比程序中断法牛逼了点,在数据没有准备好,cpu不会空等,但由于每个字在存储器和IO设备之间传输都要经过cpu,即把数据传输进内存也是要cpu控制,每个指令还需要查看中断其实还是效率不高

3、DMA

首先DMA由这几个部分组成

  • 命令/状态寄存器:接收cpu发来的控制信息,或设备状态
  • 内存地址寄存器:输入时候,存放数据放入内存的起始地址
  • 数据寄存器:暂存设备到内存,内存到设备的数据
  • 数据计数器:存放本次传送的字节数

DMA方式的特点

  • 按块传输
  • 设备到内存,内存到设备
  • 一个或多个数据块开始,结束才需要cpu干预,块的传输是在DMA控制下

cpu发起io请求,把这个io请求给DMA,然后继续工作,DMA在内存和设备之间传输数据,不需要cpu参与,传输完成后给中断信号,只有开始和结束cpu才需要参与,而且传输数据无需cpu参与

4、通道控制方法

通道和DMA主要区别是,DMA需要cpu控制传输数据块大小,内存位置,而通道控制方法中都是由通道控制

一个通道可以控制多台设备,DMA只能一个

通道可以一次性读取一组数据块,DMA是一个数据块

举例子分析

程序控制:cpu轮询的去io这边看下,是否准备好数据

中断控制:io每次准备好一部分数据,就给cpu一个中断信号,然后让cpu从它哪里拿到内存中去

DMA:cpu找了个仆人DMA,交代好数据放在内存哪里,这次要传输的数据块大小,io把数据准备好就通知DMA,让DMA去拿到内存中去,每次处理好这次数据就给cpu一个信号

通道控制:cpu的这个仆人更加牛逼了,他能绝定数据放内存哪里,一次传输多少数据,报告时间也由它觉得,是传输了20%报告还是100%报告随它。而且它可以与多个设备交换

IO子系统的层次结构

用户层IO软件
设备独立软件
设备驱动软件
中断处理软件
硬件

- 用户io软件:实现和用户交换接口
- 设备独立软件:实现用户程序和设备驱动器的统一接口,设备命令,设备保护及设备分配与释放
- 设备驱动软件:和硬件相关,负责具体实现系统对设备发出的操作指令
- 中断处理软件;用于处理中断相关
- 硬件设备:包括一个机械部件(设备本身)和一个电子部件(控制器)

举个例子

上面太抽象了,得来个具体例子

当Java读取文件的时候,会通过操作系统系统的read命令接口,这就是用户层

操作系统的接口是统一接口,不管事socket还是文件系统read都能通过这个接口调用,首先通过设备独立层进行解析,这层类似于分发的作用,分发给不同的设备驱动软件

因为是操作磁盘读取,那么磁盘接收read和socket(网卡)接收read是会做出不同动作的,这层就是设备驱动层

然后就是执行read命令,需要中断指令,这就是中断处理软件

最后到了硬件也就是磁盘,硬件设备的控制器按照上层传达的命令操控硬件完成功能,这里是硬件层

操作系统---IO设备相关推荐

  1. 18 操作系统第五章 设备管理 IO设备的基本概念和分类 IO控制器 IO控制方式 IO软件层次结构 IO核心子系统 假脱机技术 设备的分配与回收 缓冲区管理

    文章目录 1 IO设备的基本概念和分类 1.1 什么是I/O设备 1.2 I/O设备分类 2 IO控制器 2.1 I/O设备组成 2.2 I/O控制器功能 2.3 I/O控制器的组成 2.4 寄存器编 ...

  2. 【操作系统】IO设备

    第五章 IO设备 文章目录 第五章 IO设备 I/O设备的基本概念和分类 I/O控制器 I/O软件层次结构 I/O核心子系统 假脱机技术(SPOOLing技术) 设备的分配与回收 缓冲区管理 I/O设 ...

  3. IO设备在OS中的权衡

    IO设备是操作系统的中断源之一,IO设备包括磁盘,时钟,中断源,显示器,按照数据传送的基本单元分为块设备和字符设备.本文从磁盘这一个IO设备来归纳操作系统中IO设备从硬件到软件的工作方式. 硬件水平观 ...

  4. Linux内核:IO设备通信的控制方式

    IO设备与主机(CPU.内存)之间的通信不是直接的,而是通过设备控制器,设备控制器是IO设备和主机之间的中介.IO设备和进程之间的数据传送方式主要有4种: 1.程序控制方式:又被称为"忙等& ...

  5. KVM中的网络IO设备虚拟化方式

    在KVM虚拟化的架构里,对CPU的虚拟化采用的是硬件辅助的方式(Intel VT-x,AMD-V),效率比较高,内存的虚拟化有Intel EPT技术的支持,效率也没有问题:那么对于像磁盘驱动器,网卡等 ...

  6. 【操作系统】设备驱动

    本文为学习李治军老师<操作系统原理.实现与实践>第八章的总结,主要讲述显示器.键盘设备驱动. 参考资料: 哈工大李治军老师操作系统mooc视频: 实践项目解析. 第八章 设备驱动 设备驱动 ...

  7. 移动磁盘由于IO设备错误,要怎样寻回文件

    J盘打不开由于IO设备错误,是因为这个I盘的文件系统内部结构损坏导致的.要恢复里面的数据就必须要注意,这个盘不能格式化,否则数据会进一步损坏.具体的恢复方法看正文 工具/软件:流星数据恢复软件 步骤1 ...

  8. 如何找回由于IO设备错误移动磁盘的文件

    由于IO设备错误说明这个盘的文件系统结构损坏了.在平时如果数据不重要,那么可以直接格式化就能用了.但是有的时候里面的数据很重要,那么就必须先恢复出数据再格式化.具体恢复方法可以看正文了解(不格式化的恢 ...

  9. 移动硬盘由于IO设备错误,无法运行此项请求文件怎样恢复

    由于IO设备错误,无法运行此项请求说明这个盘的文件系统结构损坏了.在平时如果数据不重要,那么可以直接格式化就能用了.但是有的时候里面的数据很重要,那么就必须先恢复出数据再格式化.具体恢复方法可以看正文 ...

  10. 5.1.1 IO设备的概念与分类

    目录 思维导图 什么是IO设备 按使用特性分类 按传输速率分类 按信息交换的单位分类 思维导图 什么是IO设备 按使用特性分类 按传输速率分类 按信息交换的单位分类

最新文章

  1. [转]Java中常用的集合—初学者的你不可错过的精编整理
  2. dx9 lock unlock效率太低_巧用“动作经济原则”,员工不累,效率加倍!
  3. mysql查询2020年之前_2020年成人高考成绩如何查询?2020年成考录取结果如何查询?...
  4. 音视频技术开发周刊 | 204
  5. LightOJ-1220 Mysterious Bacteria (素数打表+欧几里得算法+唯一分解定理)给出x,求x=a^p,最大的指数
  6. extjs grid 整行变颜色_EXTJS根据值Value改变gridpanel单元格背景颜色或者设置整行字体颜色...
  7. 关闭线程 C语言,如何用C语言实现多线程
  8. flutter initializing gradle终极解决方案
  9. 八、面向对象三大特征(二)—— 继承
  10. 通过 SiteServer CMS 推进政府网站集约化、集群化建设
  11. \t\t中国历代皇帝列表,中国皇帝列表,中国历代时间表,中国各朝代列表
  12. 如何构建创新文化——技术视角
  13. 什么是计算机剪贴板(粘贴板)?
  14. 荣耀智慧屏x1和小米4a哪个好?
  15. 软测(三)测试用例基本介绍
  16. 运筹学作业——社会网络中的信息传播优化问题
  17. 掘金总点赞量前 5000 排行发布 | 掘金总关注量前 5000 排行
  18. Laravel实现dingo+JWT api接口之实战篇
  19. echarts 随屏幕大小改变大小chart.resize()
  20. go语言编程入门_Go编程入门

热门文章

  1. 小米全系列机型代码查询与 制作rom分区架构图示
  2. php中的opendir函数,php中opendir函数的用法详解
  3. 高速PCB设计系列基础知识
  4. 图灵之谜-《艾伦·图灵传》序
  5. kali msfconsole命令详解以及靶机攻破实战
  6. java后台生成内嵌logo的二维码图片以及添加文字
  7. 【ES6-阮一峰博客阅读笔记】
  8. 3、tiny yolov2 训练
  9. 如何快速的开发一个完整的iOS直播app
  10. 如何安装pygame模块