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

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

  • 相关阅读:
    Python网络物品采购系统毕业设计源码031035
    Spring Boot Admin 监控指标接入Grafana可视化
    sqlite加载csv文件,并做数据分析
    web api 在线更新设备代码
    Web1.0、Web2.0 和 Web3.0 的区别
    PHP学习笔记(观隅反三)
    Excel - 如何给单元格加上下拉框
    【spring源码探索】一分钟搞懂RefreshScope的作用及实现原理
    系统篇: ubuntu 下利用 apt 安装与卸载详解
    计算机硬件的读写速度差异
  • 原文地址:https://blog.csdn.net/weixin_37878740/article/details/125986990