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

文章目录

  • 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操作而持续执行。
    超详细|一篇搞定操作系统——设备管理_第1张图片

二、操作系统设备管理的3个目标

  • 1)向用户提供使用外部设备的方便、统一的接口,按照用户的要求和设备的类型,控制设备工作,完成用户的输入输出请求。方便是指用户能独立于具体设备的复杂物理特性而方便地使用设备;统一是指对不同设备尽量能统一操作方式。方便和统一要求对用户屏蔽实现具体设备I/O操作的细节,呈现给用户的是一种性能理想化的、操作简便的逻辑设备。系统的这种性能亦称为设备的独立性(设备无关性)。
  • 2)充分利用中断技术、通道技术和缓冲技术,提高CPU与设备、设备与设备间的并行工作能力,充分利用设备资源,提高外部设备的使用效率。
  • 3)设备管理就是要保证在多道程序环境下,当多个进程竞争使用设备时,按照一定的策略分配和管理设备,以使系统能有条不紊地工作。

三、I/O设备说明

  • 1、外设的特点:种类多、 差异大(控制和速度)、并发要求
  • 2、I/O设备就像计算机系统的五官和四肢,理解I/O的工作过程与结构是理解OS的工作过程的关键,I/O技术很实用,与其他功能联系密切,特别是文件系统。
  • 3、I/O性能经常成为系统的瓶颈
    • CPU性能不等于系统性能
    • CPU性能越高,与I/O差距越大
    • 进程切换多,系统开销大

四、设备的分类
现代计算机系统总是配有各种类型的外部设备,除了显示器、键盘、打印机、磁带、磁盘外,又出现了光盘、绘图仪、图形数字化仪、鼠标器、激光打印机、声音输入输出设备等,种类繁多,可以从不同的角度对它们进行分类。
1、按设备从属关系分为两种:

  • 系统设备(标准设备):键盘、显示器等
  • 用户设备(非标准设备):绘图仪、扫描仪等
    2、按设备操作特性分为两种:
  • 存储设备:是计算机用来保存信息的设备,其特点是容量大。如磁盘、磁带等。
  • 输入输出设备:是用来接受计算机外部的信息或将计算机内部的信息送向计算机外部。如键盘、鼠标、打印机等。

3、按设备上数据组织和信息交换单位分为两种:

  • 块设备(高速设备):指以数据块为单位组织和传送数据的设备,如磁盘、磁带等。一般块的大小为512B–4KB,传输速率较高,通常每秒钟为几兆位,可进行寻址。
  • 字符设备(中低速设备):指以单个字符为单位存取信息的设备,如终端,打印机等。传输速率较低,不可寻址。

4、按设备共享属性和资源分配分为三种:

  • 独享设备:这类设备在一段时间内最多只能有一个进程占有并使用它。例如当某一进程正在使用某打印机时,其他进程就不能使用该打印机,否则将会得到混乱的输出结果。低速I/O设备一般是独占设备,如打印机,终端等。
  • 共享设备:这类设备允许多个进程共享,即多个进程的I/O传输可以交叉,在宏观上多个进程同时使用。例如,多个进程可以交替地从磁盘上读写信息。显然,这类设备具有较高的利用率,一般是高速外部设备,如磁盘是共享设备。应当指出,磁带机是不适于共享的。这是由于磁带机的机械运动速度慢,如果允许多个进程共享,则由于不同进程所访问磁带块的物理距离可能较远而大大降低设备的访问速度
  • 虚拟设备:在一类设备上模拟另一类设备的技术称为虚拟设备技术。通过虚拟技术将一台独占设备变换成若干台逻辑设备。
    • 通常是用高速设备来模拟低速设备,以此把原来低速的独占设备改造成为若干进程共享的高速共享设备。就好像把一台设备变成了多台虚拟设备,从而提高了设备的利用率。人们称被模拟的设备为虚拟设备。
    • SPOOLing技术是一类典型的虚拟设备技术。

4.2 输入输出系统

一、输入输出系统的结构
通常把输入输出系统的结构分成两大类:总线(串行)输入输出系统和主机(并行)输入输出系统。
1、总线(串行)输入输出系统:总线(串行)输入输出系统一般采用总线作为连接方式完成输入输出,如下图所示。
超详细|一篇搞定操作系统——设备管理_第2张图片
超详细|一篇搞定操作系统——设备管理_第3张图片
小型机:总线I/O系统结构

2、主机(并行)输入输出系统:当主机所配置的输入输出设备较多时,特别是配有较多的高速外设时,采用总线输入输出系统结构会加重CPU与总线的负担。因此,在这样的输入输出系统中不宜采用单总线结构,而是增加一级输入输出通道,用来代替CPU与各设备控制器进行通信,实现对控制器的控制。
超详细|一篇搞定操作系统——设备管理_第4张图片
在这里插入图片描述
二、设备控制器
1、设备控制器的概念

  • 设备控制器是主机与外围设备之间的接口,是一个可编址设备,每一个地址对应一个设备。它接收从CPU发来的命令,并去控制输入输出设备的工作,使CPU从繁杂的设备控制事务中解脱出来,提高CPU的使用效率。
  • 设备标识:系统按为每台设备分配惟一的号码,用做硬件(设备控制器)区分和识别设备的代号,称做设备绝对号(或绝对地址)。操作系统为每类设备也规定了一个编号,称做设备类型号。如在UNIX系统中,设备类型号也称做主设备号。

2、设备控制器的功能:接收CPU命令,控制I/O设备工作,解放CPU。

  • 1)接收和识别命令:接收和识别CPU发来的命令,并对命令进行译码,命令寄存器或控制寄存器。
  • 2)数据交换:实现设备与内存和CPU间的数据传输,包括把计算机的数字信号转换成机械部分能够识别的模拟信号,或者反过来。
    CPU/内存 — 控制器的数据寄存器 — 设备
  • 3)设备状态的了解和报告:设备控制器有“状态寄存器”,记录设备的各种状态,以供CPU使用。
  • 4)地址识别:CPU通过“地址”与设备通信,设备控制器应能识别它所控制的设备地址以及其各寄存器的地址。
  • 5)数据缓冲:I/O设备的速率较低而CPU和内存的速率却很高,故在控制器中设置一缓冲器。在输出时,用此缓冲器暂存由主机高速传来的数据;在输入时,缓冲器则用于暂存从I/O设备送来的数据,待接收到一批数据后,再将缓冲器中的数据高速地传送给主机。
  • 6)差错控制:若发现传送中出现了错误,通常是将差错检测码置位,并向CPU报告,于是CPU将本次传送来的数据作废,并重新进行一次传送。

3、存储器映像I/O:为了实现与主机通信,每个控制器都有几个寄存器(控制寄存器、状态寄存器、数据寄存器),除控制寄存器外,很多设备还有数据缓冲区。系统为每个寄存器分配一个I/O端口号,把所有寄存器映像到存储器空间–存储器映像I/O,实现按地址访问。
超详细|一篇搞定操作系统——设备管理_第5张图片
4、设备控制器的结构

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

5、设备控制器的组成

  • 1)主机与设备控制器的接口。该接口用于实现CPU与设备控制器之间的通信。共有三类信号线:数据线、地址线和控制线。
  • 2)设备控制器与设备的接口。控制器中的输入输出逻辑根据处理器发送来的地址信号,去选择一个设备接口。一个设备接口连接一台设备。
  • 3)输入输出逻辑。输入输出 逻辑用于实现对输入输出设备的控制。
    超详细|一篇搞定操作系统——设备管理_第6张图片

三、输入输出通道

1、输入输出通道的概念

  • 通道:一种特殊的专门执行I/O指令的处理机,与主机共享内存,有自己的指令系统,能按照执行的要求独立完成I/O 操作。
  • 引入目的:解脱CPU对I/O的组织、管理,使CPU与外设能够并行工作。
  • 工作方式:CPU只需发送I/O命令给通道,通道通过调用内存中的相应通道程序完成任务。

2、输入输出通道的分类

  • 输入输出通道是用于控制外围设备的。根据信息交换方式的不同,把通道分成三种类型:
  • 1)字节多路通道:字节多路通道连接多个字符设备(低中速设备),不会丢失信息。
    数量可以从几十到数百个。
    含有许多非分配型子通道,各个设备按时间片轮转方式(同步时分多路复用)共享通道。
    超详细|一篇搞定操作系统——设备管理_第7张图片
  • 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、程序直接控制方式处理流程图:
超详细|一篇搞定操作系统——设备管理_第8张图片
4、程序直接控制方式的缺点:程序直接控制方式虽然控制简单,也不需要多少硬件支持,但明显地存在下述缺点:

  • l)CPU和外围设备只能串行工作。由于CPU的处理速度大大高于外围设备的数据传送和处理速度,所以,CPU的大量时间都处于等待和空闲状态,使CPU的利用率大大降低;
  • 2)CPU在一段时间内只能和一台外围设备交换数据信息,从而不能实现设备之间的并行工作;
  • 3)由于程序直接控制方式依靠测试设备标志触发器的状态位来控制数据传送,因此无法发现和处理由于设备或其它硬件所产生的错误。

程序直接控制方式只适用于CPU速度较慢,而且外围设备较少的系统,主要用于早期无中断的计算机系统。

二、中断控制方式
1、基本原理:

  • 为了减少程序直接控制方式中CPU等待时间,以及提高系统的并行工作程度,中断控制方式被用来控制外围设备和内存与CPU之间的数据传送。这种方式要求CPU与设备(或控制器)之间有相应的中断请求线,而且在设备控制器的控制状态寄存器有相应的中断允许位。
  • 中断方式下,包括以后其它的方式,设备控制器都能够主动向CPU发出中断信号,获得CPU的处理。

2、中断控制方式的传送结构:
超详细|一篇搞定操作系统——设备管理_第9张图片
3、工作过程:

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

4、中断控制方式处理流程图:
超详细|一篇搞定操作系统——设备管理_第10张图片
5、中断控制方式的工作描述:

  • 1)中断控制方式下,当CPU发出启动设备和允许中断指令之后,它没有象程序直接控制方式那样循环测试状态控制寄存器的状态是否已处于“Done”。而是重新调度其它就绪进程执行。当设备将数据送入缓冲寄存器并发出中断信号后,CPU接收中断信号进行中断处理。当然,CPU在另外进程执行时,也可以启动不同设备的启动和允许中断指令,从而做到:设备与设备间的并行操作,以及设备和CPU间的并行操作。
  • 2)例如,从终端输入一个字符的时间约为100ms,将字符送入终端缓冲区的时间小于0.1ms。若采用程序I/O方式,CPU约有99.9ms的时间处于忙—等待中。采用中断驱动方式后,CPU可利用这99.9ms的时间去做其它事情,而仅用0.1ms的时间来处理由控制器发来的中断请求。可见,中断驱动方式可以成百倍地提高CPU的利用率。
  • 3)从I/O控制器的角度来看,I/O控制器从CPU接收一个读命令,然后从外围设备读数据。一旦数据读入到该I/O控制器的数据寄存器,便通过控制线给CPU发出一个中断信号,表示数据已准备好,然后等待CPU请求该数据。I/O控制器收到CPU发出的取数据请求后,将数据放到数据总线上,传到CPU的寄存器中。至此,本次I/O操作完成,I/O控制器又可幵始下一次I/O操作。
  • 4)从CPU的角度来看,CPU发出读命令,然后保存当前运行进程的现场,包括程序计数器及处理机寄存器,转去执行其他进程。在每个指令周期的末尾,CPU检查中断。当有来自I/O控制器的中断时,CPU保存当前正在运行进程的现场,转去执行中断处理程序处理该中断。这时,CPU从I/O控制器读一个字的数据传送到寄存器,并存入主存。接着, CPU恢复发出I/O命令的进程(或其他进程)的现场,然后继续运行。

6、中断控制方式的缺点:中断控制方式下,CPU的利用率大大提高且能支持多道程序和设备的并行操作,但仍然存在着许多问题:

  • 1)在I/O控制器的数据缓冲寄存器装满数据后将会发生中断,而数据缓冲寄存器通常较小,因此,在一次批量数据传送过程中,发生中断次数较多。这将耗去大量的CPU时间。
  • 2)现代计算机系统通常配置各种各样的外围设备。如果这些设备通过中断处理方式进行并行操作,则由于中断次数的急剧增加而造成CPU无法响应中断和出现数据丢失现象。
  • 3)在中断控制方式,都是假定设备速度非常低,CPU速度非常高。当设备把数据放入数据缓冲寄存器并发出中断信号后,CPU有足够时间在下一个数据进入寄存器之前取走这些数据。如果设备速度也非常高,则可能造成数据由于CPU来不及取走而丢失。中断方式一般用于低速外设。

三、DMA(直接存储器存取)控制方式
1、基本原理:

  • 在中断驱动方式中,I/O设备与内存之间的数据交换必须要经过CPU中的寄存器,所以速度还是受到限制,DMA(又称为直接存储器存取)方式的基本思想是在I/O设备和内存之间开辟直接的数据交换通路,彻底“解放” CPU。在DMA方式中,I/O控制器具有比使用中断控制方式更强的功能,除了控制状态寄存器和数据缓冲寄存器之外,DMA控制器中还包括传送字节计数器、内存地址寄存器等,因为DMA方式要挪用CPU的工作周期,把数据缓冲寄存器中的数据直接送到内存地址寄存器所指向的内存区域中的缘故。
  • DMA方式的特点是:基本单位是数据块;所传送的数据,是从设备直接送入内存的,或者相反;仅在传送一个或多个数据块的开始和结束时,才需CPU干预,整块数据的传送是在 DMA控制器的控制下完成的。
  • 除了在数据块传送开始时需要CPU的启动指令和在整个数据块传送结束时需发中断通知CPU进行中断处理之外,不再像中断控制方式时那样需要CPU的频繁干涉。

2、控制器结构:

  • DMA控制器用来代替CPU,控制内存和设备之间进行成批的数据交换。DMA控制器中设置如下四类寄存器:
    • 命令/状态寄存器(CR):用于接收CPU发来的I/O命令或有关控制信息,或设备的状态。
  • 内存地址寄存器(MAR):输入时,存放把数据从设备传送到内存的起始目标地址;输出时,存放由内存到设备的内存源地址。
  • 数据寄存器(DR):用于暂存从设备到内存,或从内存到设备的数据。
  • 字节计数器(DC):存放本次要读或写的字(节)数。

3、DMA方式的传送结构:
超详细|一篇搞定操作系统——设备管理_第11张图片
4、工作过程:
超详细|一篇搞定操作系统——设备管理_第12张图片

  • 1)当进程要求设备输入数据时,CPU把准备存放输入数据的内存始址及要传送的字节数分别送入DMA控制器中的内存地址寄存器和传送字节计数器;另外,还把控制状态寄存器中的中断允许位和启动位置1;从而启动设备开始进行数据输入。
  • 2)发出数据要求的进程进入阻塞状态,进程调度调度其它就绪进程占据CPU运行。
  • 3)输入设备输入一个单位数据到数据缓存寄存器,然后挪用一个CPU工作周期,将数据缓冲寄存器中的数据写入到内存地址寄存器指定的内存地址单元,然后将内存地址寄存器的内存地址加1,字节计数器里的值减1。
  • 4)如果字节计数器的值变为零,则本次I/O结束,否则输入设备再输入一个单位数据到数据缓存寄存器,然后挪用一个CPU工作周期,将数据缓冲寄存器中的数据写入到内存地址寄存器指定的内存地址单元,然后再将内存地址寄存器的内存地址加1,字节计数器里的值减1。
  • 5)如此,直到字节计数器的值为0。DMA控制器在传送字节数完成时,通过中断请求线发出中断信号,CPU收到中断信号后暂停当前进程的执行,转而执行相应的中断处理程序进行善后处理。
  • 6)中断处理结束后,CPU返回被中断进程处执行或调度新的进程执行。

5、DMA控制方式处理流程图:
超详细|一篇搞定操作系统——设备管理_第13张图片
6、DMA方式与中断控制方式的主要区别:

  • 1)中断控制方式是在数据缓冲寄存器满后发出中断信号,要求CPU进行中断处理。DMA方式是在所要求传送的数据块全部传送结束时,要求CPU进行中断处理。这就大大减少了CPU进行中断处理的次数。
  • 2)中断控制方式的数据传送是在中断处理时由CPU控制完成的。DMA方式则是在DMA控制器的控制下不经过CPU控制完成的。这就排除了因并行操作设备过多时,CPU来不及处理或因速度不匹配而造成数据丢失等现象。
  • 3)中断控制方式一次可以完成一个字节/字的输入输出工作,而DMA方式一次可以完成一组连续地址空间数据的输入输出工作。
    超详细|一篇搞定操作系统——设备管理_第14张图片

7、DMA方式的局限性:

  • 1)首先,DMA方式对外围设备的管理和某些操作仍由CPU控制。在大中型计算机中,系统所配置的外设种类越来越多,数量也越来越大,因而,对外围设备的管理的控制也就愈来愈复杂。
  • 2)其次,多个DMA控制器的同时使用显然会引起内存地址的冲突并使得控制过程进一步复杂化。
  • 3)同时,多个DMA控制器的同时使用使硬件成本增加。
  • 因此,在大中型计算机系统中(近年来甚至在那些要求I/O能力强的微机系统中,例如在COMPAQ的Systempro386系列微机系统中),除了设置DMA器件之外,还设置专门的硬件装置 — 通道。

四、通道控制方式
1、基本原理:

  • 通道控制方式与DMA方式相类似,也是一种以内存为中心,实现设备和内存直接交换数据的控制方式。不同的是DMA方式中,数据的传送方向、存放数据的内存始址以及传送的数据块长度等都由CPU控制,而在通道方式中,这些都由专管输入/输出的硬件 — 通道来进行控制。
  • 此外,DMA方式时一个DMA控制器一般连接一台设备,而通道控制方式可以做到一个通道控制多台设备与内存进行数据交换,从而,通道方式进一步减轻了CPU的工作负担,增加了计算机系统的并行工作程度。
  • 通道是一个独立于CPU的专用的输入/输出处理机,它控制设备与内存直接进行数据交换,有自己的通道指令,这些通道指令受CPU启动,在操作结束时向CPU发中断信号。

2、通道连接控制结构:

  • 在一般大型计算机系统中,主机对外部设备的控制可以分成三个层次来实现,即通道,控制器和设备。
  • 1)树形连接
    超详细|一篇搞定操作系统——设备管理_第15张图片
    2)交叉连接:增加冗余,提高安全性和容错性
    超详细|一篇搞定操作系统——设备管理_第16张图片
  • 一旦CPU发出启动通道指令,通道就可以独立于CPU工作。通道控制设备控制器工作,设备控制器用来控制设备的电路部分。这样,一个通道连接多个控制器,而一个控制器又连接若干台同类型的外部设备。
  • 为了启动外部设备工作,在主机和设备之间必须有一条通路。由于通道和控制器的数量一般比设备的数量少,如果连接不当,往往会导致出现“瓶颈”现象。故一般设备的连接采用交叉连接,其好处是:
    1)提高系统的可靠性。当某条通路因控制器或通道故障而断开时,可使用其他通路。
    2)提高设备的并行性。对于同一个设备,当与它相连的某一条通路中的控制器或通道被占用时,可以选择另一条空闲通路,减少了设备因等待通路所需要花费时间。

3、I/O通道作用:

  • I/O通道是指专门负责输入/输出的处理机。I/O通道方式是DMA方式的发展,它可以进一步减少CPU的干预,即把对一个数据块的读(或写)为单位的干预,减少为对一组数据块的读(或写)及有关的控制和管理为单位的干预。同时,又可以实现CPU、通道和I/O设备三者的并行操作,从而更有效地提高整个系统的资源利用率。
  • 在通道方式下,CPU只需发出启动指令,指出通道相应的操作和I/O设备,该指令就可启动通道并使该通道从内存中调出相应的通道指令执行。通道指令一般包含被交换数据在内存中应占据的位置、传送方向、数据块长度以及被控制的I/O设备的地址信息、特征信息(例如是磁带设备还是磁盘设备)等,通道指令在通道中没有存储部件时便存放在内存中。

4、工作过程:

  • 1)当进程要求设备输入数据时,CPU发出start指令指明I/O操作、设备号和对应通道;只有要求数据的进程在调度程序选中它之后,才能对所得到的数据进行加工处理。
  • 2)对应通道接收到CPU发来的启动指令start之后,把存放在内存中的通道指令程序读出,设置对应设备的I/O控制器中的控制状态寄存器;
  • 3)设备根据通道指令的要求,可以把一批数据送往内存中不同的指定区域;
  • 4)若数据传送结束,通过中断请求线发出中断信号请求CPU做中断处理;
  • 5)与DMA方式相同,中断处理结束后CPU返回被中断进程处继续执行或重新调度进程执行。

5、通道和DMA控制器的区别:

  • 1)DMA控制器是借助硬件完成数据交换;通道是执行通道程序完成数据交换。
  • 2)一个DMA控制器只能连接同类设备,且如果是多台,只能以串行方式工作;一个通道可以连接多个不同类型的设备控制器,而一个设备控制器又可以管理一台或多台外设。
  • 3)DMA控制器需要CPU对多个外设进行初始化(包括DMA控制器本身);CPU只需发一个I/O指令启动通道,由通道自己完成对外设的初始化。

4.3 设备分配与回收

在这里插入图片描述
一、设备分配的数据结构(设备信息描述)
为了实现设备、控制器、通道资源的分配与回收,系统需要记录有关的信息。通常设备管理要建立以下数据结构,以实施有效的管理。
1、设备控制表(DCT)

  • 反映设备的特性、设备和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如图所示:
超详细|一篇搞定操作系统——设备管理_第17张图片
二、设备分配程序(三步)
超详细|一篇搞定操作系统——设备管理_第18张图片
1、查找系统设备表,找到设备的设备控制表,确认设备是否可以分配,并完成分配。
2、通过设备控制表中的控制器控制表指针找到设备连接的控制器的控制器控制表,确认设备控制器是否可以分配,并完成分配。
3、如果有通道,再通过控制器控制表中的通道控制表指针找到设备控制器连接的通道的通道控制表,确认通道是否可以分配,并完成分配。
显然,一个进程只有获得了通道(有通道结构)、控制器和所需设备三者之后,才具备了进行I/O操作的物理条件。

三、设备分配考虑的因素
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软件系统的层次:超详细|一篇搞定操作系统——设备管理_第19张图片
一、中断处理程序
1、中断及中断源的概念

  • 中断:指某事件发生时,CPU中止现行程序的执行,专去执行相应的事件处理程序,处理完后返回断点继续执行。
  • 中断源:引起中断发生的事件成为中断源。

2、中断分类

  • 硬中断:IO中断、定时器引起、调试程序设置断点
  • 软中断:程序中执行了中断指令引起的中断
  • 内中断:主存保护、地址越界

3、中断优先级

  • 决定中断优先级因素:
    1)中断源的紧迫性。如电源故障等影响全局的中断,优先级高;IO中断优先级低。
    2)设备工作速度。高速设备应及时响应。
    3)数据恢复的难易程度。

4、中断处理过程
5、中断屏蔽

二、设备驱动程序
1、设备驱动程序的基本概念:

  • 设备驱动程序是一种可以使计算机和设备通信的特殊程序,相当于硬件的接口,操作系统只有通过这个接口,才能控制硬件设备的工作。假如某设备的驱动程序未能正确安装,便不能正常工作。
  • 比如:让声卡播放音乐,它会先发送相应指令到声卡驱动程序,声卡驱动程序接收后,将其翻译成声卡才能听懂的电子信号命令,从而让声卡播放音乐。因此,驱动程序被誉为“硬件的灵魂”、“硬件和系统之间的桥梁”等。

2、设备驱动程序的主要任务:

  • 设备驱动程序又称为设备处理程序,它是I/O进程与设备控制器之间的通信程序,又由于它常以进程的形式存在,可简称之为设备驱动进程。其主要任务是接收上层软件发来的抽象I/O要求,如read或write命令,在把它转换为具体要求后,发送给设备控制器,启动设备去执行;此外,它也将从设备控制器发来的信号传送给上层软件。
  • 由于驱动程序与硬件密切相关,故应为每一个设备配置一种驱动程序,有时也可为非常类似的两个设备配置一个驱动程序。例如,打印机和显示器需要不同的驱动程序,但SCSI磁盘驱动程序通常可以处理不同大小和不同速度的多个SCSI磁盘,甚至还可以处理SCSI CD-ROM。
    超详细|一篇搞定操作系统——设备管理_第20张图片

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

  • 通常,设备驱动程序与设备类型一一对应。
  • 主设备号表示设备类型,而次设备号表示该类型的一个设备。
  • 设备驱动程序层的目的是对核心I/O子系统隐藏设备控制器的差别。
    超详细|一篇搞定操作系统——设备管理_第21张图片

4、设备驱动程序的功能:

  • 1)接收由设备独立性软件发来的命令和参数,并将命令中的抽象要求转换为具体要求。例如,将磁盘块号转换为磁盘的盘面、磁道号及扇区号。
  • 2)检查用户I/O请求的合法性,了解I/O设备的状态,传递有关参数,设置设备的工作方式。
  • 3)发出I/O命令。如果设备空闲,便立即启动I/O设备去完成指定的I/O操作;如果设备处于忙碌状态,则将请求者的请求块挂在设备队列上等待。
  • 4)及时响应由控制器或通道发来的中断请求,并根据其中断类型调用相应的中断处理程序进行处理。
  • 5)对于设置有通道的计算机系统,驱动程序还应能够根据用户的I/O请求,自动地构成通道程序。

5、设备处理方式:

  • 不同的操作系统中采用的设备处理方式并不完全相同。根据在设备处理时是否设置进程,以及设置什么样的进程而把设备处理方式分成以下三类:
    • 1)为每一类设备设置一个进程,专门用于执行这类设备的I/O操作。比如,为所有的交互式终端设置一个交互式终端进程;为同一类型的打印机设置一个打印进程。
    • 2)在整个系统中设置一个I/O进程,专门用于执行系统中所有各类设备的I/O操作。也可以设置一个输入进程和一个输出进程,分别处理系统中所有各类设备的输入和输出操作。
    • 3)不设置专门的设备处理进程,而只为各类设备设置相应的设备处理程序(模块),供用户进程或系统进程调用。

6、设备驱动程序的特点:

  • 设备驱动程序属于低级的系统例程,它与一般的应用程序及系统程序之间有下述明显差异:
    1)驱动程序主要是指在请求I/O的进程与设备控制器之间的一个通信和转换程序。
    2)驱动程序与设备控制器和I/O设备的硬件特性紧密相关,因而对不同类型的设备应配置不同的驱动程序。
    3)驱动程序与I/O设备所采用的I/O控制方式紧密相关。
    4)驱动程序与硬件紧密相关,其中一部分必须用汇编语言编写。目前有很多驱动程序的基本部分已固化在ROM中。
    5)驱动程序应允许可重入。一个正在运行的驱动程序常会在一次调用完成前被再次调用。
    6)驱动程序不允许系统调用。

7、设备驱动程序的处理过程:

  • 不同类型的设备应有不同的设备驱动程序,但大体上都分成两部分:能够驱动I/O设备工作的驱动程序和设备中断处理程序(处理I/O完成后的工作)。
  • 设备驱动程序的主要任务是启动指定设备。但在启动之前,还必须完成必要的准备工作,如检测设备状态是否为“忙”等。在完成所有的准备工作后,才向设备控制器发送一条启动命令。以下是设备驱动程序的处理过程:
    1)将抽象要求转换为具体要求:用户及上层软件对设备控制器的情况毫无了解,只能发出抽象要求(命令),但这些命令无法传送给设备控制器。因此需要将这些抽象要求转换为具体要求。这一转换工作只能由驱动程序完成,在OS中只有驱动程序才同时了解抽象要求和设备控制器中的寄存器情况;也只有它才知道命令、参数和数据应分别送往哪个寄存器。
    2)检查I/O请求的合法性
    3)读出和检查设备的状态
    4)传送必要的参数:对于许多设备,特别是块设备,除必须向其控制器发送启动命令外,还需传送必要的参数。例如在启动磁盘进行读/写之前,应先将本次要传送的字节数和数据应到达的主存始址,送入控制器的相应寄存器中。
    5)工作方式的设置
    6)启动I/O设备:驱动程序发出I/O命令后,基本的I/O操作是在设备控制器的控制下进行的。通常,I/O操作所要完成的工作较多,需要一定的时间,如读/写一个盘块中的数据,此时驱动(程序)进程把自己阻塞起来,直到中断到来时才将它唤醒。

8、有关标准设备的设备驱动程序:

  • 从理论上讲,所有硬件设备都需要安装相应的驱动程序才能正常工作。但像CPU、内存、主板、软驱、键盘、显示器等设备却并不需要安装驱动程序也可以正常工作,而显卡、声卡、网卡等却一定要安装驱动程序,否则便无法正常工作。
  • 这主要是由于这些硬件对于一台个人电脑来说是必需的,所以早期的设计人员将这些硬件列为BIOS能直接支持的硬件。换句话说,上述硬件安装后就可以被BIOS和操作系统直接支持,不再需要安装驱动程序。从这个角度来说,BIOS也是一种驱动程序。
  • 但是对于其他的硬件,例如:网卡,声卡,显卡等等却必须要安装驱动程序,不然这些硬件就无法正常工作。

9、驱动程序的类别:

  • 1)官方正式版:稳定性、兼容性好、推荐普通用户使用
  • 2)微软WHQL认证版:微软对各硬件厂商驱动的一个认证
  • 3)第三方驱动:比官方正式版更完善、整体性能性能更加强劲,对于品牌机用户来说,首选驱动是第三方驱动,第二选才是官方正式版驱动;对于组装机用户,第三方驱动的选择可能相对复杂一点,因此官方正式版驱动仍是首选。
  • 4)发烧友修改版:例如一些显卡驱动
  • 5)Beta测试版:稳定性不够、兼容性不够、常会有一些bug

10、一些驱动程序网站或来源:

  • 驱动之家网站:http://www.mydrivers.com/
    超详细|一篇搞定操作系统——设备管理_第22张图片
  • 安装驱动常用的第三方工具
    超详细|一篇搞定操作系统——设备管理_第23张图片

三、与设备无关的操作系统I/O软件

  • 与设备无关的操作系统I/O软件的功能示意图:
    超详细|一篇搞定操作系统——设备管理_第24张图片

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

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

2、缓冲技术

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

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

  • 3)缓冲区的设置

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

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

    • 以下主要介绍软缓冲区。
      4)缓冲的种类
      ① 单缓冲:只有一个缓冲区(单个与单向)。
      在这里插入图片描述
      在单缓冲情况下,输入时通道先将数据送入缓冲区,CPU从缓冲区取数据处理。通道再送入后续数据,如此反复直到输入完成。输出情形正好相反。
      由于缓冲区属于互斥区,所以单缓冲并不能明显改善CPU与外部设备的并行性。
      ② 双缓冲:两个缓冲区(双向)
      在双缓冲情况下,分别设置输入缓冲区和输出缓冲区,CPU和通道可以分别访问两个缓冲区,即:在CPU访问一个缓冲区的同时,通道可以访问另一个缓冲区。
      双缓冲只是一种说明设备和设备、CPU和设备并行操作的简单模型,并不能用于实际系统中的操作。这因为计算机系统中的外围设备较多,另外双缓冲也很难匹配设备和处理机的处理速度。现代计算机系统一般使用多缓冲或缓冲池结构。
      双缓冲工作示例:
      超详细|一篇搞定操作系统——设备管理_第25张图片
      ③ 多缓冲:是把多个缓冲区连接起来组成两部分,一部分专门用于输入,另一部分专门用于输出的缓冲结构。常组织成循环队列的结构,也称为循环缓冲。
      超详细|一篇搞定操作系统——设备管理_第26张图片
      ④ 缓冲池:把多个缓冲区连接起来统一管理,既可用于输入又可用于输出的缓冲结构
      超详细|一篇搞定操作系统——设备管理_第27张图片
      缓冲首部:包括设备号、设备上的数据块号(块设备时)、互斥标识位以及缓冲队列连接指针和缓冲区号等。
      超详细|一篇搞定操作系统——设备管理_第28张图片
      缓冲队列:系统把各缓冲区按使用状况连成三种队列:

      • 空白缓冲队列em,其队首指针为F(em),队尾指针为L(em);
      • 装满输入数据的输入缓冲队列in,其队首指针为F(in),队尾指针为L(in);
      • 装满输出数据的输出缓冲队列out,其队首指针为F(out),队尾指针为L(out)。
        超详细|一篇搞定操作系统——设备管理_第29张图片

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

      • 用于收容设备输入数据的收容输入缓冲区hin;
      • 用于提取设备输入数据的提取输入缓冲区sin;
      • 用于收容CPU输出数据的收容输出缓冲区hout;
      • 用于提取CPU输出数据的提取输出缓冲区sout。
        超详细|一篇搞定操作系统——设备管理_第30张图片

      缓冲操作:系统对缓冲区的使用分为四种操作:

      • 收容输入:当输入进程需要输入数据时:系统从空缓冲队列em的队首摘下一个空缓冲区,作为收容输入工作缓冲区hin,将数据输入其中,再将它挂在输入缓冲队列in的末尾。
      • 提取输入:当计算进程需要输入数据进行计算时:系统从输入缓冲队列in的队首取得一个输入缓冲区,作为提取输入工作缓冲区sin,计算进程从中提取数据,当进程用完该缓冲区数据后,再将它挂到空缓冲区队列em的末尾。
      • 收容输出:当计算进程需要输出数据时:系统从空缓冲队列em的队首取得一个空缓冲区,将它作为收容输出工作缓冲区hout,向hout中输出数据后,再将它挂在输出缓冲队列out的末尾。
      • 提取输出:当要进行输出操作时:从输出缓冲队列out的队首取得一个输出缓冲区,作为提取输出工作缓冲区sout,当数据提取完毕后,再将该缓冲区挂在空缓冲区队列em的末尾。

3、出错报告:根据错误产生的原因,可把I/O错误分为两类:

  • 程序设计错误
  • 实际I/O错误

4、分配和释放独占设备

  • 方法一:让进程直接打开设备文件
  • 方法二:设立专门机制负责独占设备的申请和释放

5、提供与设备无关的块大小

  • 不同磁盘的扇区大小可能不同。通过这部分软件的作用,可隐藏这些差异,向高层提供统一的盘块大小。

四、用户级I/O软件
多数I/O软件都在操作系统中,用户空间中也有一小部分。通常,它们以库函数形式出现,用户可以通过系统调用使用。
用户空间中另一个重要的I/O软件是SPOOLing系统。

1、虚拟设备分配

  • 系统中独占设备的数量有限,且独占设备的分配往往采用静态分配这一方式,使得许多进程会因为等待某些独占设备而处于等待状态,而分得独占设备的进程,在其整个运行期间往往占有这个设备,而不是经常使用,因而使这些设备的利用率很低。为克服这一缺点,可通过共享设备来模拟独占设备以提高设备利用率及系统效率,就有了虚拟设备。
  • 虚拟设备是指使用共享设备(外存)代替独占设备工作,也就是指代替独占设备工作的那部分外存存储空间及有关的控制结构。对虚拟设备采用的是虚拟分配,其过程是:当进程中请求独占设备时,系统将共享设备的一部分存储空间分配给它。进程与设备交换信息时,系统把要交换的信息存放在这部分存储空间,在适当的时候再对信息作相应的处理。

2、SPOOLing技术基本概念

  • 为了缓和CPU的高速性与I/O设备低速性间的矛盾而引入了脱机输入输出技术。该技术是利用专门的外围控制机,将低速I/O设备上的数据传送到高速磁盘上;或者相反。当系统中引入了多道程序技术后,完全可以利用其中的一道程序,来模拟脱机输入时的外围控制机的功能,把低速I/O设备上的数据传送到高速磁盘上;再用另一道程序来模拟脱机输出时外围控制机的功能,把数据从磁盘上传送到低速输出设备上。这样便可在主机的直接控制下,实现脱机输入输出功能。此时的外围操作与CPU对数据的处理同时进行,这种在联机情况下实现的同时外围操作称为SPOOLing,或称为假脱机输入输出操作。
  • SPOOLing技术是为解决独占设备数量少、速度慢、不能满足众多进程的要求,而且在进程独占设备期间设备利用率又比较低的情况而提出的一种设备管理技术。
  • SPOOLing技术是一种虚拟设备技术,其核心思想是:在一台共享设备(通常是高速、大容量的磁盘)上模拟独占设备的操作,把一台低速的独占设备改造成为若干台可并行操作的虚拟设备,即把独占设备变成逻辑上的共享设备。

3、SPOOLing系统的组成

  • SPOOLing系统主要有以下三部分:
    • 1)输入井和输出井。这是在磁盘上开辟的两个大存储空间。输入井是模拟脱机输入时的磁盘设备,用于暂存I/O设备输入的数据;输出井是模拟脱机输出时的磁盘,用于暂存用户程序的输出数据。
    • 2)输入缓冲区和输出缓冲区。为了缓和CPU和磁盘之间速度不匹配的矛盾,在内存中要开辟两个缓冲区:输入缓冲区和输出缓冲区。输入缓冲区用于暂存由输入设备送来的数据,以后再传送到输入井。输出缓冲区用于暂存从输出井送来的数据,以后再传送给输出设备。
    • 3)输入进程SPi(预输入进程)和输出进程SPo(缓输出进程)。利用这两个进程来模拟脱机I/O时的外围控制机。
    • 其中,进程SPi模拟脱机输入时的外围控制机,将用户要求的数据从输入机通过输入缓冲区再送到输入井,当CPU需要输入数据时,直接从输入井读入内存;进程SPo模拟脱机输出时的外围控制机,把用户要求输出的数据先从内存送到输出井,待输出设备空闲时,再将输出井中的数据经过输出缓冲区送到输出设备上。
      超详细|一篇搞定操作系统——设备管理_第31张图片

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系统中,实际上没有为任何进程分配设备,而只是在输入井或输出井中为进程分配一个存储区和建立一张I/O请求表。这样,便把独占设备改造为共享设备。
  • 3)实现了虚拟设备功能。宏观上是多个进程在同时使用一台独占设备,而对于每一个进程而言,都认为自己是独占了一个设备。当然,该设备只是逻辑上的设备。SPOOLing系统实现了将独占设备变换为若干台对应的逻辑设备的功能。

补充:一些设备接口技术
1、USB设备管理

  • 诞生背景:键盘、鼠标、打印机、扫描仪、数码相机、MP3随身听等设备接踵而至,这么多的设备,如何接入个人计算机?
  • 1994年,由康柏、IBM、Intel和Microsoft共同推出的以便于安装使用,取代以往的串口、并口和PS/2接口。
  • 1996年发布USB1.0标准,但Win95不支持USB,因此USB1.0成为一张废纸。
  • 1998年发布USB1.1标准,USB技术更加成熟可靠;接着发布Win98,正式对USB接口提供支持,USB才真正发展起来。
  • USB(Universal Serial Bus):通用串行总线
    使用一个4针插头,最多可连接127台外设
  • USB 3.0使用9针设计,功能更强大
    • 支持热插拔,即插即用
    • 无需外接电源(提供5v电源)
    • 连接灵活
  • USB的标准:
    • 1996年发布的USB1.0(1.5Mbps) 1998年发布的USB1.1(12Mbps)
    • 2000年发布的USB2.0(480Mbps) 2008年发布的USB3.0(5Gbps)
    • 这些标准最大的差别就在于数据传输率方面,在其它方面也有不同程度的改进。

2、IEEE1394(Firewire)

  • IEEE1394,又称作“ Firewire ”即“火线”。
  • 早在1985年,苹果公司就已经开始着手研究“火线”技术,并取得了很大成效;它是IEEE(电 气与电子工程师协会)于1995年正式制定的总线标准。
  • 由于IEEE1394的数据传输速率相当快,因此有时又叫它“高速串行总线”。1394a,最高速400Mbps,1394b,最高速800Mbs,IEEE1394-2008,最高可3.2Gbps。可是在PC方面尚未形成气候。
  • IEEE1394在其它方面却比USB更受青睐,例如信息家电和高端服务器等领域,IEEE1394就以其超快的速度成为该领域的唯一选择。
    超详细|一篇搞定操作系统——设备管理_第32张图片
    超详细|一篇搞定操作系统——设备管理_第33张图片

3、PNP与热插拔

  • 即插即用PNP:将设备连接到计算机后,不需要进行驱动程序安装,也不需要对设备参数进行复杂的设置,设备就能够自动识别所连接的计算机系统,同时根据投影环境的光线,自动调整好设备的相关参数,确保设备完成连接之后,就能正常使用。
  • 热插拔(hot-plugging或Hot Swap):允许用户在不关闭系统,不切断电源的情况下取出和更换损坏的硬盘、电源或板卡等部件,从而提高系统对灾难的及时恢复能力、扩展性和灵活性等。
  • 普通电脑里,USB接口设备和IEEE 1394接口设备等都可以实现热插拔,服务器里可实现热插拔的部件主要有硬盘、CPU、内存、电源、风扇、PCI适配器、网卡等。购买服务器时一定要注意哪些部件能够实现热插拔,这对以后工作至关重要。

你可能感兴趣的:(操作系统概论,操作系统)