超详细|一篇搞定操作系统——设备管理

文章目录

  • 4.1 设备管理概述
  • 4.2 输入输出系统
    • 4.2.2 输入输出系统的控制方式
  • 4.3 设备分配与回收
  • 4.4 设备处理与I/O软件

操作系统全家桶:传送门
一、操作系统引述:https://blog.csdn.net/diviner_s/article/details/108829327
二、处理器管理:https://blog.csdn.net/diviner_s/article/details/108940809
三、存储器管理:https://blog.csdn.net/diviner_s/article/details/112245241
四、设备管理:https://blog.csdn.net/diviner_s/article/details/112250905
五、文件管理:https://blog.csdn.net/diviner_s/article/details/112253441
六、用户接口:https://blog.csdn.net/diviner_s/article/details/112255959

4.1 设备管理概述

一、设备管理基本功能

  • 外设管理:是指计算机系统中除了CPU和内存以外的所有输入、输出设备的管理。

  • 主要功能包括:缓冲管理、设备分配与回收、设备处理和虚拟设备。

  • 除了进行实际I/O操作的设备外,也包括:设备控制器、DMA控制器、中断控制器、通道。

  • 早期,计算机设计者没有将CPU的执行与I/O操作分开,甚至大多数人认为,输入输出与计算的时间应该是同一数量级。
    后来,他们意识到,CPU要比I/O操作速度高几个数量级。于是,硬件和软件设计师开始寻找一种技术:CPU计算可以不用等待I/O操作而持续执行。

    • I/O设备一般由机械和电子两部分组成,机械部分是设备本身工作的部分,电子部分称做设备控制器或适配器。操作系统总是通过设备控制器实施对设备的控制和操作。
    • 有的外设把设备控制器做在设备里,与主机相连接采用简单而且统一的接口,如USB接口。
    • 有的外设则必须配套专门的控制适配器,一般做成电路板卡的形式插入主板的总线插槽中。如显示卡、声卡、 卡。

    5、设备控制器的组成

    • 1)主机与设备控制器的接口。该接口用于实现CPU与设备控制器之间的通信。共有三类信 线:数据线、地址线和控制线。
    • 2)设备控制器与设备的接口。控制器中的输入输出逻辑根据处理器发送来的地址信 ,去选择一个设备接口。一个设备接口连接一台设备。
    • 2)数组多路通道:用于连接多台高、中速的外围设备,其数据传送是按数组方式进行的。
      • 含有多个非分配型子通道,时间片轮转方式(同步时分多路复用)共享通道。既具有很高的数据传输速率,又有令人满意的通道利用率。
    • 3)数组选择通道:可以连接多台高速设备。
      • 不划分子通道,只有一个通道。
      • 有很高的传输速率,但是,它每次只允许一个设备传输数据,通道利用率很低。

    4.2.2 输入输出系统的控制方式

    • 设备管理的主要任务之一是控制设备和内存或CPU之间的数据传送。数据传送控制方式是指CPU何时、怎样去驱动外设,如何控制外设与主机之间的数据传递。

    • 选择和衡量控制方式的原则:
      1)效率高,不出错;
      2)开销小,所需的控制程序少;
      3)使得I/O设备尽量忙,而CPU等待时间少。

    • 常用数据传送控制方式有4种:
      1)程序直接控制方式;
      2)中断控制方式;
      3)DMA方式;
      4)通道控制方式。

    • 在这四种方式中,CPU的工作过程完全不同,所需的硬件支持也不同。

    一、程序直接控制方式(循环测试I/O方式)
    1、基本原理:早期计算机使用,这种方式的控制者是用户进程,由用户进程来直接控制内存或CPU和外围设备之间的信息传送。

    • 例如:计算机从外部设备读取数据到存储器,每次读一个字的数据。对读入的每个字,CPU需要对外设状态进行循环检查,直到确定该字已经在I/O控制器的数据寄存器中。
    • 在程序直接控制方式中,由于CPU的高速性和I/O设备的低速性,致使CPU的绝大部分时间都处于等待I/O设备完成数据I/O的循环测试中,造成了 CPU资源的极大浪费。在该方式中,CPU之所以要不断地测试I/O设备的状态,就是因为在CPU中没有釆用中断机构,使I/O设备无法向CPU 告它已完成了一个字符的输入操作。

    2、工作过程:

    • 1)当用户进程需要输入数据时,它通过CPU发出启动设备准备数据的启动命令“Start”,然后,用户进程进入测试等待状态。
    • 2)在等待时间内,CPU不断地用一条测试指令检查描述外围设备的工作状态的控制状态寄存器。
    • 3)外围设备只有将数据传送的准备工作做好之后,才将该寄存器置为完成状态。从而,当CPU检测到控制状态寄存器为完成状态,也就是该寄存器发出“Done”信 之后,设备开始往内存或CPU传送数据。反之,当用户进程需要向设备输出数据时,也必须同样发启动命令启动设备和等待设备准备好之后才能输出数据。
    • 4)除了控制状态寄存器之外,在I/O控制器中还有一类称为数据缓冲寄存器的寄存器。在CPU与外围设备之间传送数据时,输入设备每进行一次操作,首先把所输入的数据送入该寄存器,然后,CPU再把其中数据取走。反之,当CPU输出数据时,也是先把数据输出到该寄存器之后,再由输出设备将其取走。只有数据装入数据缓冲寄存器之后,控制状态寄存器的值才会发生变化。

    3、程序直接控制方式处理流程图:

    • l)首先,进程需要数据时,通过CPU发出“Start”指令启动外围设备准备数据。该指令同时将控制状态寄存器中的中断允许位打开,以便需要时中断程序可以被调用执行。
    • 2)在进程发出指令启动设备之后,该进程暂停执行,放弃处理机,变为阻塞状态,等待输入完成。接着系统通过进程调度调度其它就绪进程占据处理机执行。
    • 3)当输入完成时,I/0控制器通过中断请求线向CPU发出中断信 。CPU在接收到中断信 之后,暂停当前进程,然后执行中断处理程序对数据传送工作进行相应的处理。并将原先阻塞的的进程变为就绪状态。
    • 4)在以后的某个时刻,进程调度会选中提出请求并得到了数据的就绪进程,该进程从约定的内存特定单元中取出数据继续工作。

    4、中断控制方式处理流程图:

    • 1)中断控制方式是在数据缓冲寄存器满后发出中断信 ,要求CPU进行中断处理。DMA方式是在所要求传送的数据块全部传送结束时,要求CPU进行中断处理。这就大大减少了CPU进行中断处理的次数。
    • 2)中断控制方式的数据传送是在中断处理时由CPU控制完成的。DMA方式则是在DMA控制器的控制下不经过CPU控制完成的。这就排除了因并行操作设备过多时,CPU来不及处理或因速度不匹配而造成数据丢失等现象。
      • 反映设备的特性、设备和I/O控制器的连接情况。包括设备标识、使用状态和等待使用该设备的进程队列等。
      • 系统中每个设备都必须有一张DCT,且在系统生成时或在该设备和系统连接时创建,但表中的内容则根据系统执行情况而被动态地修改。
      • DCT包括以下内容:
        1)设备标识符,设备标识符用来区别设备。
        2)设备类型,反映设备的特性,例如是终端设备、块设备或字符设备等。
        3)设备地址或设备 ,每个设备都有相应的地址或设备 。这个地址既可以是和内存统一编址的,也可以是单独编址的。
        4)设备状态,指设备是处理工作还是空闲中。
        5)等待队列指针,等待使用该设备的进程组成等待队列,其队首和队尾指针存放在DCT中
        6)I/O控制器表指针,指向与该设备相连接的I/O控制器的I/O控制器表。

      2、控制器控制表(COCT)

      • 每个控制器一张,它反映I/O控制器的使用状态,以及和通道的连接情况等(在DMA方式时,该项是没有的)。

      3、通道控制表(CHCT)

      • 只在通道控制方式的系统中存在,每个通道一张。CHCT包括通道标识符、通道忙/闲标识、等待获得该通道的进程等待队列的队首指针与队尾指针等。

      4、系统设备表(SDT)

      • 整个系统只有一张,记录已被连接到系统中的所有物理设备的情况,并为每个物理设备设一表目项。
      • SDT的每个表目项包括的内容有:
        1)DCT指针,该指针指向有关设备的设备控制表。
        2)正在使用设备的进程标识。
        3)设备类型和设备标识符,该项意义与DCT中相同。
      • SDT的主要意义在于反映系统中设备资源的状态,即系统中有多少设备,有多少是空闲的,而又有多少已分配给了哪些进程。

      SDT、DCT、COCT及CHCT如图所示:

      三、设备分配考虑的因素
      1、设备的使用性质(固有属性)

      • 1)独享设备:在一段时间内最多只能有一个进程占有并使用它。
      • 2)共享设备:这类设备允许多个进程共享,即多个进程的I/O传输可以交叉,在宏观上多个进程同时使用。
      • 3)虚拟设备:在一类设备上模拟另一类设备的技术称为虚拟设备技术。实际上通过虚拟技术将一台独占设备变换成若干台逻辑设备。

      2、系统采用的设备分配算法

      • 1)先请求先分配策略:系统按提出I/O请求的先后顺序,将进程发出的I/O请求命令排成队列,其队首指向被请求设备的DCT。当该设备空闲时,系统从该设备的请求队列的队首取下一个I/O请求消息,将设备分配给发出这个请求消息的进程。
      • 2)优先级高者先分配:这种策略和进程调度的优先数法是一致的,即发出I/O请求命令的进程优先级越高,它的I/O请求就优先予以满足。对于相同优先级的进程来说,则按先请求先分配策略分配。该分配策略把请求某设备的I/O请求命令按进程的优先级组成队列,从而保证在某设备空闲时,系统能从I/O请求队列队首取下一个具有最高优先级进程发来的I/O请求命令,并将设备分配给发出该命令的进程。

      3、设备分配应防止死锁发生

      • 1)静态分配:作业开始运行之前,系统将作业所需设备一次性分配完成,作业运行结束收回,设备利用率较低,主要用于独占设备的分配。
      • 2)动态分配:是指进程在运行过程中,根据需要进行设备分配。进程需要使用设备时,向系统提出设备请求,由系统按相应的算法为进程分配所需的设备、设备控制器及通道,用完后立即释放。

      4、设备独立性:

      • 1)基本概念:设备独立性(也叫设备无关性),是指应用程序中使用的设备独立于具体使用的物理设备。在应用程序中,使用逻辑设备名来请求使用某类设备。而系统中,每台设备都有一个唯一的名字,也叫物理设备名,在实际执行指令时,在由系统将程序中的逻辑设备名转换为具体使用的物理设备名。
        系统因此必须具有将逻辑设备名称转换为某物理设备名的功能,类似于存储器管理中逻辑地址和物理地址的概念。
      • 2)设备独立性的好处:
        ① 设备分配时的灵活性;
        ② 易于实现I/O重定向(指用于I/O操作的设备可以更换即重定向,而不必改变应用程序)。
      • 3)设备独立性软件:驱动程序是一个与硬件(或设备)紧密相关的软件。为了实现设备独立性,必须再在驱动程序之上设置一层软件,称为设备独立性软件。
        至于设备独立性软件和设备驱动程序之间的界限,根据不同的操作系统和设备有所差异,主要取决于操作系统、设备独立性和设备驱动程序的运行效率等多方面因素的权衡,因为对于一些本应由设备独立性软件实现的功能,可能由于效率等诸多因素,实际上设计在设备驱动程序中。
      • 4)逻辑设备名到物理设备名映射的实现:
        ① 逻辑设备表:为了实现设备的独立性,系统设置一张逻辑设备表(LUT),用于将应用程序中所使用的逻辑设备名映射为物理设备名。在该表中每个表目中包含了三项:逻辑设备名、物理设备名和设备驱动程序的入口地址。当进程用逻辑设备名请求分配I/O设备时,系统为它分配相应的物理设备,并在LUT上建立一个表目,填上应用程序中使用的逻辑设备名和系统分配的物理设备名,以及该设备驱动程序的入口地址。当以后进程再利用该逻辑设备名请求I/O操作时,系统通过查找LUT,便可找到物理设备和驱动程序。
        ② LUT的设置:可采取两种方式。
        • 第一种方式是在整个系统中只设置一张LUT。由于系统中所有进程的设备分配情况都记录在同一张LUT中,因而不允许在LUT中具有相同的逻辑设备名,这就要求所有用户都不使用相同的逻辑设备名。在多用户环境下这通常是难以做到的,因而这种方式主要用于单用户系统中。
        • 第二种方式是为每个用户设置一张LUT。每当用户登录时,便为该用户建立一个进程,同时也为之建立一张LUT,并将该表放入进程的PCB中。

      四、设备分配程序的改进
      上述设备分配程序的问题:进程以物理设备名提出I/O请求,采用单通路I/O系统结构,容易产生“瓶颈”现象。可以从两方面对基本的设备分配程序加以改进,以使独占设备的分配程序具有更强的灵活性,并提高分配的成功率。
      1、增加设备的独立性:进程使用逻辑设备名请求I/O,这样,系统首先从SDT中找出第一个该类设备的DCT。若该设备忙,又查找第二个该类设备的DCT,仅当所有该类设备都忙时,才把进程挂在该类设备的等待队列上;而只要有一个该类设备可用,系统便进一步计算分配该类设备的安全性。
      2、考虑多通路情况:为了防止在I/O系统中出现“瓶颈”现象(通道不足),通常都采用多通路的I/O系统结构。此时对控制器和通道的分配同样要经过几次反复,即若设备(控制器)所连接的第一个控制器(通道)忙时,应查看其所连接的第二个控制器(通道),仅当所有的控制器(通道)都忙时,此次的控制器(通道)分配才算失败,才把进程挂在控制器(通道)的等待队列上。而只要有一个控制器(通道)可用,系统便可将它分配给进程。

      4.4 设备处理与I/O软件

      I/O软件系统的层次:

    3、设备驱动程序在系统中的逻辑位置:

    • 通常,设备驱动程序与设备类型一一对应。
    • 主设备 表示设备类型,而次设备 表示该类型的一个设备。

    1、设备驱动程序的统一接口

    • 新的驱动程序遵循驱动程序接口的约定
    • I/O设备如何命名
    • 保护问题等

    2、缓冲技术

    • 1)缓冲技术的引入:中断和通道的引入为CPU与外设之间的并行操作提供了可能性,但CPU与外部设备之间速度的不匹配,以及外部设备频繁地中断CPU的运行,仍会降低CPU的使用效率。

      • 缓冲是计算机系统中常用的技术。一般,凡是数据到达速度和离去速度不匹配的地方都可以采用缓冲技术。操作系统中以缓冲方式实现设备的输入输出操作,其目的主要是缓解处理机与设备之间速度不匹配的矛盾,并减少对CPU的I/O中断次数,从而提高资源利用率和系统效率。
    • 2)缓冲的主要目的:
      ① 缓解CPU与I/O设备间速度不匹配的矛盾。
      ② 提高它们之间的并行性。
      ③ 减少对CPU的中断次数,放宽CPU对中断响应时间的要求。

    • 3)缓冲区的设置

      • 缓冲区可以由硬件(缓冲寄存器)实现,也称为硬缓冲。硬缓冲区通常设在设备中,如设在硬盘中。

      • 缓冲区也可以由软件实现,即在内存空间中开辟专门用于数据传输过程中暂存数据的区域,也成为软缓冲。

      • 以下主要介绍软缓冲区。
        4)缓冲的种类
        ① 单缓冲:只有一个缓冲区(单个与单向)。

      工作缓冲区:系统(或用户进程)从这三种队列中申请和取出缓冲区,并用得到的缓冲区进行存数、取数操作,在存数、取数操作结束后,再将缓冲区放入相应的队列。这些缓冲区被称为工作缓冲区。在缓冲池中,有四种工作缓冲区,它们是:

      • 用于收容设备输入数据的收容输入缓冲区hin;
      • 用于提取设备输入数据的提取输入缓冲区sin;
      • 用于收容CPU输出数据的收容输出缓冲区hout;

    4、SPOOLing系统的使用(共享打印机)

    • 以打印机为例进一步说明SPOOLing的工作原理:
      • 1)当某进程要求打印输出时,操作系统并不是把某台实际打印机分配给该进程,而是在磁盘输出井中为其分配一块区域,该进程的输出数据高速存入输出井的相关区域中,而并不直接在打印机上输出。
      • 2)输出井上的区域相当于一台虚拟的打印机,各进程的打印输出数据都暂时存放在输出井中,形成一个输出队列。
      • 3)最后,由SPOOLing的缓输出程序依次将输出队列中的数据实际地打印输出。

    5、SPOOLing系统的使用(共享打印机)说明:

    • 用户进程请求打印输出时,SPOOLing系统同意打印输出,但并不真正把打印机分配给该用户进程,而只做两件事:
      • 1)由输出进程在输出井中为之申请一个空闲磁盘块区,并将要打印的数据送入其中。
      • 2)输出进程再为用户进程申请一张空白的用户请求打印表,并将打印要求填入其中,再将该表挂到请求打印队列上
    • 如果打印机空闲,输出进程将从请求打印队列的队首取出一张请求打印表,根据表中的要求将要打印的数据从输出井传送到内存缓冲区,再由打印机进行打印。打印完后,输出进程再查看请求打印队列中是否还有等待打印的请求表。若有,又取出队列中的第一张表,并根据其中的要求进行打印,如此下去,直至请求打印队列为空,输出进程才将自己阻塞起来。仅当下次再有打印请求时,输出进程才被唤醒。

    6、SPOOLing系统的特点

    • 1)提高了I/O的速度。对数据所进行的I/O操作,已从对低速设备进行的I/O操作,演变为对输入井或输出井中数据的存取,如同脱机输入输出一样,提高了I/O速度,缓和了CPU与低速I/O设备之间速度不匹配的矛盾。
    • 2)将独占设备改造为共享设备。在SPOOLing系统中,实际上

      声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年1月4日
下一篇 2021年1月4日

相关推荐