操作系统(五)I/O设备
一、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设备相关推荐
- 个人移动设备(BYOD):中小企业应知道的五项移动设备威胁
个人移动设备 ( BYOD) 的出现,让企业因而敞开大门,各种威胁得以因员工疏失所造成的网络漏洞进入企业.所谓的BYOD 就是员工携带个人设备进入公司网络.这是 IT 消费化的潮流之一,在此潮流之下, ...
- Google:五亿Android设备激活
就在苹果的下一代iPhone手机要发布的时候,Google宣称有五亿Android设备被激活,而且,每天都有130万部Android设备激活 google没能够从人们对苹果第六代iPhone的热情关注 ...
- 五种IO模型:操作系统五种IO模型大全
文章目录 五种IO模型:操作系统五种IO模型大全 一.IO模型简介 1.1 操作系统的内存简介 1.1.1 操作系统的应用与内核 1.1.2 内核空间与用户空间 1.1.3 CPU指令等级 1.1.4 ...
- vue项目中获取当前设备 操作系统及版本,设备型号,ip,地区信息
1.获取ip,地区信息 使用搜狐IP地址查询接口(?后边设置编码)须连网! http://pv.sohu.com/cityjson http://pv.sohu.com/cityjson?ie=utf ...
- 在华硕玩家国度魔霸新锐2021的Windows 11操作系统中禁用BitLocker设备加密
在华硕玩家国度魔霸新锐2021的Windows 11操作系统中禁用BitLocker设备加密 How to disable BitLocker on Windows 11 for ASUS ROG S ...
- 第五篇 USB设备枚举过程(1)
上一篇:https://blog.csdn.net/qq_40088639/article/details/109741653 总述 1. 设备枚举的整个过程 USB设备枚举过程,可大致分为下面的几个 ...
- userAgent,JS用户代理检测——判断浏览器内核、浏览器、浏览器平台、windows操作系统版本、移动设备、游戏系统
1.识别浏览器呈现引擎 为了不在全局作用域中添加多余变量,这里使用单例模式(什么是单例模式?)来封装检测脚本.检测脚本的基本代码如下所示: 1 var client = function() { 2 ...
- 如何安装Windows操作系统(五)驱动安装
VMware的驱动安装选项在这里. 自定义安装截图,安装过程就不截图了. 完成后提示机器重启!!!! 其他的驱动安装方法 安装前后的情况对比.安装完驱动后机器的性能可以得到提升或更好的支持硬件. PS ...
- 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 ...
- 操作系统——中断处理程序及设备驱动程序
中断处理程序及设备驱动程序 中断是指CPU在执行一个程序时,对系统中发生的某个事件做出的一个反应,它在操作系统中有着重要的有着重要的地位,时多道程序得以实现的基础. 引入缓冲区的原因: 外部中断:简称 ...
最新文章
- UploadHandleServlet
- 我们正在经历一个应用疲惫时代?
- 数据结构之二叉树的定义和性质
- 《那些年啊,那些事——一个程序员的奋斗史》——122
- mysql优化之 EXPLAIN(一)
- python开发服务程序_Python 编写Windows服务程序:将Python作为Windows服务启动 | 学步园...
- 在远程登录时绕过SSL验证的方法
- java服务端验证框架_SpringBoot服务端数据校验过程详解
- 几个轻巧好用的代码检查工具!
- 施耐德c语言编程软件,施耐德PLC讲座 IEC语言梯形图
- Kindle阅读软件,手机阅读器软件、mobi、azw3、epub格式书籍阅读器软件分享
- 解决U盘写保护,成功擦除
- Android 字体库的使用-引入外部字体
- 改图片分辨率怎么改?教你一招一分钟修改图片dpi
- 面试总结+感悟+分享
- 麦克风有电流声怎么办?
- 追剧人的福利来了,这几款APP让你痛快追剧
- Egret eui.TextInput组件输入后未清掉焦点,微信浏览器切换后台再切回,点击会一直唤醒输入法的Bug
- TiDB 在特来电的实践
- 你对贝叶斯统计都有怎样的理解?