操作系统(五)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)

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

  • 0
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值