zoukankan      html  css  js  c++  java
  • 操作系统总结之 输入输出系统(上)

    主要内容:

    1  I/O系统的组成
    2  I/O 控制方式
    3  缓冲管理
    4  设备分配
    5  设备驱动
    6  磁盘存取设备管理
    

    1. I/O系统的基本功能

    1. 隐藏物理设备的细节
    2. 与设备的无关性
    3. 提高处理机和I/O设备的利用率
    4. 对I/O设备进行控制
    5. 确保对设备的正确共享
    6. 错误处理

    说明:1,2是为了方便用户使用I/O设备。3,4是用于提高CPU与I/O设备的利用率。5,6是为了用户在共享设备时提供方便,以保证系统能够有条不紊的运行,当系统发生错误时能够及时发现错误,甚至于自动修正错误。

    2. I/O系统的层次结构和模型

    (1)I/O软件的层次结构

    1.用户层I/O 软件
    2.设备独立性软件
    3.设备驱动程序
    4.中断处理程序
    

    这里写图片描述

    (2)I/O系统的分层

    (1) 中断处理程序。
    (2) 设备驱动程序。
    (3) 设备独立性软件。 
    

    3. I/O 设备分类

        1.按使用特性分
    

    1. 存储型设备
    2. 输入型设备(外设 => 主机)
    3. 输出型设备(主机 => 外设)
    4. 输入输出型设备

        2.按信息交换的单位分
    
    1. 块设备——以数据块为单位存储、传输信息
    2. 字符设备——以字符为单位存储、传输信息

      3.按外部设备的从属关系分
      
    3. 系统设备——指操作系统生成时,登记在系统中的标准设备
      (如终端、打印机、磁盘机等)

    4. 用户设备——指在系统生成时,未登记在系统中的非标准设备。对于这类设备的处理程序由用户提供,并将其纳入系统,由系统代替用户实施管理。

      如A/D,D/A转换器,CAD所用专用设备

       4. 按传输速率: (低速(<KB/s),中速,高速(>100KB/s))
      
       5. 按资源分配角度分:
      
    5. 独占设备——在一段时间内只能有一个进程使用的设备,一般为低速I/O设备。(如打印机,磁带等)

    6. 共享设备——在一段时间内可有多个进程共同使用的设备,多个进程以交叉的方式来使用设备,其资源利用率高。(如硬盘)

    7. 虚设备——在一类设备上模拟另一类设备,常用共享设备模拟独占设备,用高速设备模拟低速设备,被模拟的设备称为虚设备。(将慢速的独占设备改造成多个用户可共享的设备,提高设备的利用率)

    4. 设备控制器

       I/O设备一般由机械和电子两部分组成:

    1.机械部分是设备本身
    2. 电子部分叫做设备控制器或适配器。(在小型和微型机中,它常采用印刷电路卡插入计算机中)
    

    说明 :一般由它与CPU的接口,与I/O设备的接口和I/O逻辑三部分组成 !! !

    这里写图片描述

    说明 :

    • 控制器是CPU与I/O设备之间的接口;
    • 接收从CPU发来的命令, 并控制I/O设备工作。
    • 当控制器接受一条命令后,可独立于CPU完成指定操作,CPU可以转去执行其它运算。
    • 命令完成时,控制器产生一个中断,CPU响应中断,控制转给操作系统。
    • CPU通过读控制器寄存器中的信息,获得操作结果和设备状态

    设备控制器的功能:

    • 1.地址识别:
         识别I/O端口地址, 使I/O操作与设备对应。
    • 2.接收和识别命令指挥设备执行
         接收CPU通过I/O总线发来的命令和参数, 存储在控制器中相应的控制寄存器中, 并对它进行译码识别, 转换成适当的电信号, 通过控制器与设备的接口向设备发送, 指挥设备执行特定的操作。
    • 3.接收和记录设备的状态
         接收从设备发来的电信号, 进行转换和解释, 变为设备的状态信息, 将此结果记录在控制器的状态寄存器上, 供CPU了解。
    • 4.数据交换、数据缓冲、差错控制
         实现CPU↔控制器↔设备的数据交换, 从而实现了CPU到设备的数据传递和设备到CPU的数据传递。

    举例:
       典型的设备控制器是磁盘控制器, 它从I/O总线上接收发来的诸如“写这个数据块”之类的高级命令, 并对它进行译码识别, 转换成诸如“把磁头定位在正确的磁道上”和“把数据写入这个磁道”之类的低级磁盘操作的电信号, 指挥磁盘驱动器执行这些操作, 每执行一步都要将磁盘驱动器的发来的电信号进行转换和解释, 变为设备的数据状态信息, 将此结果记录在控制器的状态寄存器上, 供CPU了解。CPU根据此状态信息确定下一步如何操作。

    5.两种寻址方法

    ⑴专设I/O指令

       例指令IN完成输入,指令OUT完成输出操作.其地址码指出I/O设备的设备代码. 这是I/O空间独立于存储器空间的情况,即设备码的编码和存储器的存储单元的编码是平行存在的

    ⑵利用访存(取数/存数)指令完成I/O功能

       从主存的地址空间中分出一部分地址码作为I/O的设备代码,当访问到这些地址时,表示被访的不是主存储器,而是I/O设备寄存器

       (例如,设备的数据缓冲器或设备的状态寄存器). 这时I/O空间和存储器空间是合在一起的,即I/O设备和存储单元是统一编址的.

    6. I/O通道

       引入通道的目的: 为了使CPU从I/O事务中解脱出来,同时为了提高CPU与设备,设备与设备之间的并行工作能力
       原理:执行通道程序,向控制器发出命令,并具有向CPU发中断信号的功能。 一旦CPU发出指令,启动通道,则通道独立于CPU工作。一个通道可连接多个控制器,一个控制器可连接多个设备,形成树形交叉连接
    这里写图片描述

    通道程序:

    1.I/O处理机:由运算和控制逻辑,累加器,寄存器构成,有指令系统,由通道程序控制。
    2.通道程序:
        由通道指令组成;
            由CPU按数据传送的不同要求自动生成;
            放在主存中;
            其在主存中的起始地址通知I/O处理机:
    

    一次完整的通道程序使用过程:
    这里写图片描述

    通道类型

    1.字节多路通道:连接大量慢速外围设备而设置的,它可以分时地执行多个通道程序

       当一个通道程序控制某台设备传送一个字节后,通道硬件就控制转去执行另一个通道程序,控制另一台设备传送信息

       主要连接以字节为单位的低速I/O设备。如打印机,终端。以字节为单位交叉传输,当一台传送一个字节后,立即转去为另一台传送字节

    这里写图片描述

    2. 选择通道

      以成组方式工作的,即每次传送一批数据,故传送速度很高。在这段时间内只能为一台设备服务。当这台设备数据传输完成后,再选择与通道连接的另一台设备。

       主要连接磁盘,磁带等高速I/O设备。
    这里写图片描述

    3.成组多路通道

       它结合了选择通道传送速度高和字节多路通道能进行分时并行操作的优点。它先为一台设备执行一条通道指令,然后自动转接,为另一台设备执行一条通道指令。

       主要连接高速设备。数据多路通道实际上是对通道程序采用多道程序设计的硬件实现。
    这里写图片描述

    如果某一个通道挂掉了,那么与他相连的设备就挂掉了,那么进行如下改进:

    这里写图片描述

    7. I/O 控制方式

    1. 轮询的可编程I/O方式

    这里写图片描述

    2. 中断的可编程I/O方式

      当某进程要启动某个I/O设备工作时, 便由CPU向相应的设备控制器发出一条I/O指令, 然后立即返回继续继续执行原来的任务。设备控制器便按该指令的要求去控制指定的I/O设备。此时, CPU可以去做其它事情与I/O设备并行工作。
       例如, 在输入时, 当设备控制器收到CPU 发来的读命令后, 便去控制相应的输入设备读数据。数据进入数据寄存器后, 设备控制器通过中断控制器和控制总线向CPU发出中断信号, CPU响应中断, 读设备控制器状态检查是否出错, 若无错, 则通过数据总线从设备控制器中读出数据, 写入存储器。

    这里写图片描述

    8. DMA控制方式

    • DMA控制方式的引入
         中断方式是以字节(字)为单位进行I/O的, 每完成一个字节(字) CPU要处理一次中断, 这种方法用于块设备效率极低, 为了进一步减少CPU对I/O的干预, 提高CPU与I/O设备的并行读引入DMA控制方式。
    • DMA方式的特点为:
         数据传送的基本单位是数据块。
         数据是直接在设备─内存之间传送的。
         仅在传送一个或多个数据块的开始和结束时才需要CPU对I/O的干预, 传送工作本身是由DMA控制器完成的。
      这里写图片描述

      DMA方式与中断的主要区别

      • 中断方式的数据传送到存储器是由CPU控制完成的。
        而DMA方式的数据传送到存储器则不经过CPU , 由DMA控制器直接完成。
      • 中断方式在设备控制器的数据缓冲寄存区满后, 发中断请求, CPU进行中断处理将缓冲区数据传送到内存。
        而DMA方式则是在所要求传送的数据块全部传送到内存结束时, 发中断请求, CPU进行中断处理。
      • 大大减少了CPU进行中断处理的次数和时间。
  • 相关阅读:
    org.springframework.beans.BeanUtils属性赋值 Date类型处理转换为LocalDateTime, Date不能直接赋值给LocalDateTime
    python rabbitmq官方文档demo
    rabbitmq安装
    python 文件查找及截取字符串 (替换,分割) demo
    python pika rabbitmq demo
    python xlrd excel读取操作
    python pymysql 数据库查询操作
    GO语言学入门学习,学习资料推荐
    linux安装uwsgi错误:gcc returned 1 exit status error: lto-wrapper failed collect2:
    anconda的使用以及在conda环境中使用pip和conda使用安装依赖的区别和注意事项
  • 原文地址:https://www.cnblogs.com/Tattoo-Welkin/p/10335277.html
Copyright © 2011-2022 走看看