一、I/O设备的概念和分类

I/O即为 输入/输出input / output

I/O设备:将数据输入/数据计算机的设备

①使用特性分类:人机交互类设备、存储设备、网络通信设备

②按传输速率分类:低速(键鼠)、中速(打印机)、高速(移动硬盘)

③按信息交换单位分类:块设备(移动硬盘)、字符设备(键鼠)

二、I/O控制器

作为CPU和I/O设备机械部件之间的中介,用于实现CPU对I/O设备的控制。

1.I/O控制器的主要功能

①接收和识别CPU发出的命令:I/O控制器中有控制寄存器用于存放命令和参数

②向CPU报告设备的状态:I/O控制器中有状态寄存器用于记录I/O设备当前状态

③数据交换:I/O控制器中有数据寄存器用于暂存CPU和I/O设备之间的数据

④地址识别:CPU控制不同寄存器

2.I/O控制器的组成

①CPU与控制器的接口  ②I/O逻辑  ③控制器与设备接口

一个I/O控制器可能对应多个设备;寄存器可能存在多个,为了便于CPU操作,系统会才去以下方法对其编址:①内存映像I/O  ②寄存器独立编址

3.I/O控制方式

①程序直接控制方式

Ⅰ在等待I/O完成的过程中,CPU需要不断地轮询检查(会频繁占用CPU)

Ⅱ每次读/写都是一个字

Ⅲ数据会先经过CPU再写入内存/输出I/O设备

优点:实现简单

缺点:CPU和I/O设备只能串行工作,CPU需要一直轮询检查,长期处于忙碌状态,CPU利用率低

②中断驱动方式

ⅠCPU会在每个指令末尾检测中断每次中断会读入一个字的数据

Ⅱ中断处理过程中需要保存、恢复进程的运行环境(需要一定开销,频繁中断会降低系统性能)

Ⅲ数据会先经过CPU再写入内存/输出I/O设备

Ⅳ优点:CPU不再需要轮询,CPU可以与I/O设备并行工作,提升了CPU的利用率

缺点:每次仅能传送一个字,频繁中断会降低系统性能

③DMA方式

DMA:直接存储器存取,做出了以下改进

Ⅰ数据传输单位变为了(一次只能读取连续的块)

Ⅱ数据不再需要先经过CPU而是直接写入内存/输出设备

Ⅲ进一步降低CPU干预率

优点:进一步提升了数据传输效率,降低了CPU介入率

缺点:CPU每次发出一条I/O指令只能读/写一个/连续多个数据块

DMA控制器:

④通道控制方式

通道:一种硬件,可以识别和执行一系列的通道指令

通道仅能识别一些单一的指令,且与CPU共享内存

ⅠCPU占用率极低

Ⅱ每次读/写一组数据块

Ⅲ数据不再需要先经过CPU而是直接写入内存/输出设备

优点:CPU、通道、I/O可以并行工作,系统资源利用率高

缺点:实现复杂,需要专门的硬件支持

三、I/O层次

1.软件层次

层次 功能
用户层软件 实现与用户交互的接口,为用户提供相关的库函数
设备独立性软件

向上提供系统调用接口

实现设备保护(权限控制)

差错处理

设备的分配和回收

数据缓冲区管理

建立逻辑设备名物理设备名直接的映射(逻辑设备表LUT)

设备驱动程序

负责对硬件进行具体控制(由厂家设计)

驱动程序在系统中会以独立进程的方式存在

中断处理程序 处理设备中断信号
硬件 执行具体I/O操作

2.I/O核心子系统

①I/O调度

用某种算法确定一个顺序来处理I/O请求,于设备独立性软件层实现

如先来先服务算法、优先级算法、短作业优先算法等

②设备保护

设备有时被视为特殊的文件,以文件保护的方式为其提供访问权限控制。于设备独立性软件层实现

③假脱机技术

SPOOLing技术,实际是由软件模拟脱机技术,于用户层软件实现 。

系统会建立输入井输出井用以存放数据,同时以一个输入进程和一个输出进程来模拟外围控制机。

④设备分配与回收

设备独立性软件层实现

1.设备分配时考虑的因素

设备的固有属性:独占设备、共享设备、虚拟设备

设备分配算法:略

设备分配中的安全性安全分配方式(占用时会阻塞,所以不会导致死锁;但是会导致CPU和I/O设备只能串行工作)     不安全分配方式(进程不会被阻塞,会提升资源利用率,但是可能导致死锁)

2.设备分配方式

静态分配:进程运行前为其分配全部所需资源,运行结束后归还资源

破坏了请求和保持条件,不会产生死锁

动态分配:进程运行过程中动态的申请资源

3.分配管理中的数据结构

设备控制表(DCT):每个设备一张,用于记录设备情况,包含以下字段:设备类型、设备标识符(物理设备名)、设备状态、指向控制器的指针、重复执行次数或时间(重复执行多次后不成功才能认定此次I/O失败)、设备队列的队首指针(用于指向此时正在等待此设备的进程队列)

控制器控制表(COCT):每个控制器配置一张,操作系统通过此表的信息对控制器进行管理,包含以下字段:控制器标识符(唯一ID)、控制器状态、指向通道表的指针(由此指针找到更多通道信息)、控制器队列的队首指针、控制器队列的队尾指针(指向正在等待该控制器的进程队列)

通道控制表(CHCT):每个通道对应一张,操作系统通过此表的信息对通道进行管理,包含以下字段:通道标识符(唯一ID)、通道状态、与通道连接的控制器表首地址、通道队列的队首指针、通道队列的队尾指针

系统设备表(SDT):记录了系统中全部设备的情况

                         4.设备分配的具体步骤

①根据物理设备名查找SDT

②根据SDT找到DCT,若设备忙碌则将进程挂到等待队列上不忙碌直接分配

③根据DCT找到COCT,若控制器忙碌则将进程挂到等待队列上不忙碌直接分配

缺点:编程时需要使用物理设备名;若更换了物理设备程序将无法运行;即使有同类型的设备空闲进程依旧会被阻塞(指定一个)

改进:建立逻辑设备名与物理设备名之间的映射(在操作系统中建立逻辑设备表LUT)

⑤缓冲区管理

设备独立性软件层实现

缓冲区可以由专门的硬件缓冲区构成(速度快、成本高、容量小),也可以由内存充当缓冲区(需要软件对其进行管理)

作用:1.缓和CPU与I/O设备之间不匹配的矛盾

2.减少对CPU的中断频率

3.解决数据粒度不匹配的问题(如产生块输出字)

4.提高CPU和I/O之间的并行性

分类

                                1.单缓冲:操作系统在主存中为其分配一个缓冲区。缓冲区非空时不能充入数据,只能传出数据;缓冲区为空时可以充入数据,但是必须充满后才能传出数据

2.双缓冲:系统为其在主存中分配两个缓冲区,适用于用户进程连续从设备读取若干数据。

3.循环缓冲区:将多个大小相等的缓冲区链接成一个循环缓冲区

4.缓冲池:由系统中共用的缓冲区组成,按使用情况可以分为:空缓冲队列、装满输入数据的缓冲队列(输入队列)、装满输出数据的缓冲队列(输出队列

同时根据缓冲区的实际使用情况可以分为:用于收容输入数据的工作缓冲区(hin)、用于提取输出数据的工作缓冲区(sin)、用于收容输出数据的工作缓冲区(out)、用于提取输出数据的工作缓冲区(sout)

缓冲池工作时,会从队列中取出合适的缓冲区,将其装载到缓冲池中,完成工作后再放回合适的队列中

操作系统(五)I/O设备相关推荐

  1. 个人移动设备(BYOD):中小企业应知道的五项移动设备威胁

    个人移动设备 ( BYOD) 的出现,让企业因而敞开大门,各种威胁得以因员工疏失所造成的网络漏洞进入企业.所谓的BYOD 就是员工携带个人设备进入公司网络.这是 IT 消费化的潮流之一,在此潮流之下, ...

  2. Google:五亿Android设备激活

    就在苹果的下一代iPhone手机要发布的时候,Google宣称有五亿Android设备被激活,而且,每天都有130万部Android设备激活 google没能够从人们对苹果第六代iPhone的热情关注 ...

  3. 五种IO模型:操作系统五种IO模型大全

    文章目录 五种IO模型:操作系统五种IO模型大全 一.IO模型简介 1.1 操作系统的内存简介 1.1.1 操作系统的应用与内核 1.1.2 内核空间与用户空间 1.1.3 CPU指令等级 1.1.4 ...

  4. vue项目中获取当前设备 操作系统及版本,设备型号,ip,地区信息

    1.获取ip,地区信息 使用搜狐IP地址查询接口(?后边设置编码)须连网! http://pv.sohu.com/cityjson http://pv.sohu.com/cityjson?ie=utf ...

  5. 在华硕玩家国度魔霸新锐2021的Windows 11操作系统中禁用BitLocker设备加密

    在华硕玩家国度魔霸新锐2021的Windows 11操作系统中禁用BitLocker设备加密 How to disable BitLocker on Windows 11 for ASUS ROG S ...

  6. 第五篇 USB设备枚举过程(1)

    上一篇:https://blog.csdn.net/qq_40088639/article/details/109741653 总述 1. 设备枚举的整个过程 USB设备枚举过程,可大致分为下面的几个 ...

  7. userAgent,JS用户代理检测——判断浏览器内核、浏览器、浏览器平台、windows操作系统版本、移动设备、游戏系统

    1.识别浏览器呈现引擎 为了不在全局作用域中添加多余变量,这里使用单例模式(什么是单例模式?)来封装检测脚本.检测脚本的基本代码如下所示: 1 var client = function() { 2 ...

  8. 如何安装Windows操作系统(五)驱动安装

    VMware的驱动安装选项在这里. 自定义安装截图,安装过程就不截图了. 完成后提示机器重启!!!! 其他的驱动安装方法 安装前后的情况对比.安装完驱动后机器的性能可以得到提升或更好的支持硬件. PS ...

  9. IOT-OS之RT-Thread(十五)--- SDIO设备对象管理 + AP6181(BCM43362) WiFi模块

    文章目录 一.AP6181 Wi-Fi模块简介 1.1 AP6181 硬件接口 1.2 AP6181 驱动层级 二 SDIO设备对象管理 2.1 SDIO Bus Driver 2.1.1 Host ...

  10. 操作系统——中断处理程序及设备驱动程序

    中断处理程序及设备驱动程序 中断是指CPU在执行一个程序时,对系统中发生的某个事件做出的一个反应,它在操作系统中有着重要的有着重要的地位,时多道程序得以实现的基础. 引入缓冲区的原因: 外部中断:简称 ...

最新文章

  1. UploadHandleServlet
  2. 我们正在经历一个应用疲惫时代?
  3. 数据结构之二叉树的定义和性质
  4. 《那些年啊,那些事——一个程序员的奋斗史》——122
  5. mysql优化之 EXPLAIN(一)
  6. python开发服务程序_Python 编写Windows服务程序:将Python作为Windows服务启动 | 学步园...
  7. 在远程登录时绕过SSL验证的方法
  8. java服务端验证框架_SpringBoot服务端数据校验过程详解
  9. 几个轻巧好用的代码检查工具!
  10. 施耐德c语言编程软件,施耐德PLC讲座 IEC语言梯形图
  11. Kindle阅读软件,手机阅读器软件、mobi、azw3、epub格式书籍阅读器软件分享
  12. 解决U盘写保护,成功擦除
  13. Android 字体库的使用-引入外部字体
  14. 改图片分辨率怎么改?教你一招一分钟修改图片dpi
  15. 面试总结+感悟+分享
  16. 麦克风有电流声怎么办?
  17. 追剧人的福利来了,这几款APP让你痛快追剧
  18. Egret eui.TextInput组件输入后未清掉焦点,微信浏览器切换后台再切回,点击会一直唤醒输入法的Bug
  19. TiDB 在特来电的实践
  20. 你对贝叶斯统计都有怎样的理解?

热门文章

  1. python卡方拟合优度检验_如何使用Python中的科学库执行卡方拟合优度检验?
  2. xshell xftp 5系列
  3. java 格式化日期字符串
  4. 【AD】导出原理图的PDF格式
  5. 2021-01-12 PMP 群内练习题 - 光环
  6. WPS OFFICE关闭热点和广告推送
  7. JSON所有key值转大写(转小写)
  8. 数据结构-串、数组、广义表
  9. 物联网(loT) 的技术架构
  10. composer安装laravel下载不了