第6章输入输出系统

本文详细解读了I/O系统的功能,包括提高设备利用率、提供统一接口、隐藏设备细节和与设备无关性。重点介绍了I/O控制方式(程序I/O、中断I/O、DMA和通道)及其优缺点,涵盖了设备分类、设备控制器、内存映像I/O、设备驱动程序和缓冲区管理等内容。

6.1 I/O系统的功能

I/O设备就是可以将数据输入到计算机,或者可以接收计算机输出数据的外部设备,属于计算机中的硬件部件。

I/O系统指对计算机系统中除CPU和内存外的所有其他设备的管理。

  1. I/O系统的目标
  1. 提高设备的利用率:
    1)尽量提高CPU与I/O设备之间的并行工作程度
    2)主要技术:中断技术、DMA技术、缓冲技术
  2. 为用户提供方便、统一的界面:
    1)方便,是指用户能独立于具体设备的复杂物理特性之外而方便地使用设备.
    2)统一,是指对不同的设备尽量使用统一的操作方式,例如各种字符设备用 一种I/O操作方式。
  1. I/O系统的功能
  1. 隐藏物理设备的细节——方便用户使用IO设备
    1)I/O设备的类型非常多,且彼此间在多方面都有差异。
    2)OS通过对设备加以抽象,隐藏物理设备的实现细节,仅向进程提供少量的、抽象的命令。如:read, wirte等。
  2. 与设备的无关性——方便用户使用IO设备
    1)用户使用抽象的逻辑设备名来使用设备
    2)不必指定是哪一台打印机
  3. 提高处理机和I/O设备的利用率
    1)充分利用各种技术(通道、中断、缓冲等)提高CPU与设备、设备与设备之间的并行工作能力,提高资源利用率。提高并行性、 均衡性(使设备充分忙碌)。
  4. 对I/O设备进行控制
    1)使用驱动程序实现I/O设备的控制。
  5. 确保对设备的正确共享
    1)设备包括独占设备和共享设备
    2)各类不同设备的分配和回收。独占设备和共享设备的共享
  6. 错误处理

6.2 I/O设备和设备控制器

6.2.1 I/O设备分类

  1. 按信息交换的单位分类
  1. 块设备: 指以数据块为单位来组织和传送数据信息的设备。
    磁盘设备的基本特征是:
    1)传输速率较高,通常每秒钟为几M位;
    2)它是可寻址的,即可随机地读/写任意一块;
    3)磁盘设备的I/O采用DMA方式;
  2. 字符设备:指以单个字符为单位来传送数据信息的设备。
    字符设备的基本特征是:
    1)传输速率较低;
    2)不可寻址,即不能指定输入时的源地址或输出时的目标地址;
    3)字符设备的I/O常采用中断驱动方式。
  1. 按使用特性分类
  1. 存储设备: 用于存储信息的设备。例如磁盘、光盘等,传输速度快,通常以多字节组成的块为单位进行数据交换。
  2. I/O设备: 用于计算机与用户之间交互的设备。包括输入设备和输出设备,如键盘、鼠标、打印机等。这类设备数据交换速度相对较慢,通常是以字符为单位进行数据交换。
  1. 按信息传输速率分类
  1. 低速设备: 传输速率(每秒几字节-几百字节),如键盘、鼠标等。
  2. 中速设备: 传输速率(每秒几千字节-几万字节),如打印机。
  3. 高速设备: 每秒几十万字节-几兆字节每秒,如光盘机、磁盘机及磁带机等。

6.2.2 设备控制器

  1. I/O设备由两部分组成:
  1. I/O操作的机械部件:机械部件即设备本身(物理装置);
  2. 执行控制IO的电子部件:电子部件称为设备控制器(或适配器);
  1. 设备并不是直接与CPU进行通信,而是与设备控制器通信。
  2. I/O设备通过设备控制器与计算机的数据总线和地址总线相连接。
  3. 某些设备(如磁盘设备)有内置的控制器。
  4. 设备控制器由三部分组成:
  1. 设备控制器与CPU的接口。用于实现CPU与设备控制之间的通信。包括信号线、寄存器。
  2. 设备控制器与设备的接口。一个设备控制器,可以连接一个或多个设备。在控制器中有一个或多个设备接口。
  3. I/O逻辑。负责接收和识别CPU的各种命令,用于实现对设备的控制。对地址进行译码,再根据译出的命令对所选设备进行控制。控制器中有地址译码器,识别设备的地址。
    在这里插入图片描述
  1. IO功能执行过程:
  1. OS发送命令。通过向控制寄存器写命令字来执行IO功能。
  2. 命令执行。控制器收到命令后,CPU可以转向进行其他工作,而让设备控制器自行完成具体IO操作。
  3. 中断返回。命令执行完毕后,控制器发出一个中断信号,CPU从控制器寄存器中读取信息,获得执行结果和设备的状态信息。
  4. 把串行的位流转换为字节块,并进行必要的错误修正。控制器按位进行组装,然后存入控制器内部的缓冲区中形成以字节为单位的块,在对块验证检查无错误时,再将它复制到内存中。
    在这里插入图片描述
  1. 设备控制器功能
  1. 接收和识别CPU发出的命令:如CPU发来的read/write命令,I/O控制器中会有响应的控制寄存器来存放命令和参数。
  2. 向CPU报告设备的状态:I/O控制器中会有相应的状态寄存器用于记录IO设备的当前状态。
  3. 数据交换:数据寄存器,输出时,数据寄存器用于暂存CPU发来的数据,之后再由控制器传送给设备。输入时,数据寄存器用于暂存设备发来的数据,之后CPU从数据寄存器中取走数据。
  4. 地址识别:为了区分设备控制器中的各个寄存器,也需要各个寄存器设备一个特定的地址,I/O控制器通过CPU提供的地址来控制CPU要读写的是哪个寄存器。

6.2.3 内存映像I/O

  1. 控制器通过寄存器与CPU通信;
  2. I/O端口地址:接口电路中每个寄存器具有唯一的地址;
  3. 所有I/O端口地址形成IO端口空间。
  4. 两种编址方式——I/O端口地址:
  1. 内存映像I/O:寄存器占用内存地址的一部分;
  2. 寄存器独立编址:另一些计算机则采用I/O专用地址。
  1. 内存映像:
  1. 内存单元地址和设备控制器中的寄存器地址统一编制。
  2. 当k值处于0~n-1范围时,被认为是内存地址,若k大于等于n时,被认为是某个控制器的寄存器地址。
  3. 内存映像I/O统一了对内存和控制器的访问方法,简化I/O的编程。
    在这里插入图片描述
  1. 编址方式——I/O专用地址——利用特定的I/O指令
  1. 分配给系统中所有端口的地址空间完全独立,与内存地址空间无关。使用专门的I/O指令对端口进行操作。例如:store cpu_reg,k。
  2. 优点:外设不占用内存的地址空间;编程时,易于区分是对内存操作还是对I/O端口操作;
  3. 缺点:访问内存和访问设备需要两种不同的指令。

6.3 I/O控制方式

6.3.1 I/O设备控制方式

  1. 发展宗旨:尽量减少主机对I/O控制的干预,把主机从繁忙的IO事务中解决出来。

  2. 四种IO控制方式:

  1. 使用轮询的程序控制方式,传送单位:字(符)
  2. 中断I/O控制方式,传送单位:字(符)
  3. 直接DMA控制方式,传送单位:数据块
  4. 通道控制方式

6.3.1.1 程序I/O方式

  1. 程序控制方式:

早期的计算机系统中,无中断机构,处理机对I/O设备的控制方法,CPU对I/O设备的控制采取程序直接控制方式,又称轮询方式(Polling)由程序直接控制内存或CPU和外围设备之间的信息传送。
在这里插入图片描述

6.3.1.2 中断 I/O控制方式

  1. 中断方式:广泛采用中断的I/O控制方式
  1. 进程需要数据时,通过CPU发出指令,启动外围设备准备数据。
  2. 进程进入阻塞状态,等待输入完成,进程调度。
  3. 当设备完成了一个字节数据的I/O时,数据进入数据缓冲寄存器,设备控制器产生一个中断信号,CPU读入数据。
  4. 中断处理程序完成后,CPU继续执行原来的程序。
    在这里插入图片描述
  1. 中断方式特点:
  1. CPU与I/O设备并行工作
  2. 仅当输完一个数据时,才 需CPU花费极短的时间去做些中断处理。
  3. 提高了系统的资源利用率及吞吐量。
  4. 中断驱动I/O是以字(符)为单位进行I/O的,若将这种方式用于块设备的I/O,显然将会是极其低效的。
  1. 中断在OS中有着重要的地位,它是多道程序得以实现的基础。进程之间的切换通过中断来完成。
  2. 中断是设备管理的基础,为提高处理机的利用率和实现CPU与I/O设备并行执行,也需有中断的支持。
  3. 中断处理程序是I/O系统中最低的一层,它是整个I/O系统的基础。
  4. 中断源:信号CPU外部还是CPU内部。
    在这里插入图片描述
  5. 中断向量表和中断优先级
  1. 中断服务程序:发生中断时所执行的中断代码。
  2. 中断向量:是指中断服务程序入口地址。如:偏移量与段基
    值,一个中断向量占据4字节空间。
  3. 中断向量表:中断类型号与相应中断源的中断处理程序入口地址之间的连接表。
  1. 中断机制的过程:例如:当进程请求I/O 操作时,如putchar(),该进程变为阻塞,直到完成I/O.
  1. 程序执行完当前一条指令后,测定是否有未响应的中断;
  2. 保护被中断进程的CPU环境程序状态字,程序计数器;
  3. 转入相应的设备处理程序信号源-中断程序入口地址;
  4. 中断处理;
  5. 恢复CPU的现场并退出中断;
  1. 中断处理流程:

在这里插入图片描述

6.3.1.3 DMA方式

  1. DMA方式-直接存储器访问方式(Direct Memory Access)
  1. 中断方式每当完成一个字(节)的I/O时,控制器向CPU请求一次中断。
  2. DMA方式进一步提高了CPU与I/O设备的并行操作程度。
  1. DMA控制器的组成:
  1. 主机与DMA控制器的接口;
  2. DMA控制器与块设备的接口;
  3. I/O控制逻辑。
  4. DMA控制器中设置四类寄存器:DR、MAR、DC、CR
    在这里插入图片描述
  1. DMA工作过程:

CPU要从磁盘读入一数据块时,便向磁盘控制器发送一条读命令。该命令被送入命令寄存器CR中。同时,需要将本次要读入数据在内存的起始目标地址送入寄存器MAR中。
在这里插入图片描述

  1. DMA方式的特点:
  1. 数据传输的基本单位是数据块,即在CPU与I/O设备之间,每次传送至少一个数据块;
  2. 所传送的数据是从设备直接送入内存的,或者相反。
  3. 仅在传送一个或多个数据块的开始和结束时,才需CPU干预,整块数据的传送是在控制器的控制下完成的。

6.3.1.4 I/O通道

  1. I/O通道设备的引入
  1. 当主机所配置的外设很多时,CPU的负担仍然很重。为此,在CPU和设备控制器之间又增设了I/O通道。
  2. IO通道是一种特殊的处理机,通道可以识别和执行一系列通道指令,并通过执行IO程序来控制IO操作。其目的是使一些由CPU处理的IO任务转由通道来承担。
    在这里插入图片描述
    在这里插入图片描述
IO控制方式完成一次读写的过程每次IO的数据传输单位数据流向优缺点
程序直接控制方式CPU发出I/O命令后需要不断轮询字或字符设备->cpu->内存(或相反)优点:实现简单。缺点:cpu和I/O设备只能串行工作,cpu需要一直长期处于“忙等”状态,cpu利用率低
中断驱动方式cpu发出I/O命令后可以做其他事,本次I/O完成后设备控制器发出中断信号字或字符设备->cpu->内存(或相反)优点:比程序直接控制相比,cpu不再需要不停地轮询,cpu和I/O可并行工作,cpu利用率提升。缺点:频繁的中断处理会消耗较多的cpu时间。
DMA方式cpu发出I/O命令后可以做其他事,本次I/O完成后DMA控制器发出中断信号数据块设备->内存(或相反)优点:数据传输以块为单位,进一步提升数据传输率,cpu和I/O设备的并行性得到提升。缺点:cpu每发出一条I/O指令只能读写一个或多个连续的数据块,如果需要读写多个离散数据块,cpu要分别发出多条I/O指令,进行多次中断处理才能完成。
通道方式cpu发出I/O命令后可以做其他事。通道会执行通道程序以完成I/O,完成后通道向cpu发出中断信号一组块设备->内存(或相反)优点:每次读写一组数据块,数据再通道的控制下运行,cpu、通道、IO设备可并行工作,资源利用率高。缺点:需要硬件,麻烦。

6.3.2 IO系统的硬件结构

  1. 单总线型I/O系统,微机IO系统

在这里插入图片描述
设备控制器也称为接口卡、适配器

  1. 大型机I/O系统,主机IO系统

在这里插入图片描述
I/O系统共分四级:最低级为I/O设备,设备控制器,I/O通道,CPU(最高级)

总结
3. IO系统的目标

  1. 提高设备的利用率
    1)尽量提高CPU与I/O设备之间的并行工作程度
    2)主要技术:中断技术、DMA技术、缓冲技术。
  2. 为用户提供方便、统一的界面
    1)方便,是指用户能独立于具体设备的复杂物理特性之外而方便地使用设备;
    2)统一,是指对不同的设备尽量使用统一的操作方式,例如各种字符设备用 一种I/O操作方式。
  1. I/O 软件的功能

(1)提供使用I/O设备的用户接口: 命令接口和编程接口
(2)设备分配和释放:使用设备前,需要分配设备和相应控制器
(3)设备的访问和控制: 包括并发访问和差错处理
(4)I/O缓冲和调度:目标 是提高I/O访问效率

  1. I/O软件组织成以下4个层次

(1) 用户空间的I/O软件
(2) 与设备无关的I/O软件(设备独立软件)
(3) 设备驱动程序
(4) 中断处理程序
其中,(2),(3),(4)属于OS的内核部分:属于IO系统,或称为IO核心子系统。

6.4 设备驱动程序

6.4.1 I/O系统的层次结构

  1. 用其下层提供的服务,实现某些功能,并屏蔽实现的具体细节,向高层提供服务。
  2. 用户层软件:实现了与用户的接口,用户可直接使用该层所提供的、与IO操作相关的库函数对设备进行操作。
  3. 例如:putchar(c);用户层软件将用户请求翻译成格式化IO请求,并通过“系统调用”请求OS内核的服务。

在这里插入图片描述

  1. 设备独立性软件,又称为设备无关性软件,与设备的硬件特性无关的功能几乎都在这一层实现。
  2. 功能:逻辑设备与物理设备的映射,根据设备类型选择设备驱动程序,设备的分配和回收,缓冲区管理等。
  3. 设备驱动程序:与硬件直接相关,具体实现系统对设备发出的操作指令,驱动IO设备工作的驱动程序。
  4. 当IO任务完成时,IO控制器会发送一个中断信号,系统会根据中断信号类型找到相应的中断处理程序并执行。

在这里插入图片描述

6.4.2设备驱动程序

设备驱动程序:主要负责对硬件设备的具体控制,将上层发出的一系列命令转化成特定设备“能听得懂”的一系列操作,包括设备设备寄存器,检查设备状态等。

  1. 思考:为何不同的设备需要不同的设备驱动程序?

不同的IO设备有不同的硬件特性,具体细节只有设备的厂家 才知道,因此,厂家需要根据设备的硬件特性设计并提供相应的驱动程序。

  1. 设备驱动程序的功能
  1. 接收上层发来的命令和参数。例:接收read()命令,将命令中的抽象要求转换为与设备相关的低层操作序列。
  2. 检查用户I/O请求的合法性。了解I/O设备的工作状态,传递与I/O设备操作有关的参数,设置设备的工作方式。
  3. 发出I/O命令。如果设备空闲,便立即启动I/O设备,完成指定的I/O操作;如果设备忙碌,则将请求者的请求块挂在设备队列上等待。
  4. 及时响应由设备控制器发来的中断请求,并根据其中断类型,调用
    相应的中断处理程序进行处理
  1. 驱动程序与I/O设备所采用的I/O控制方式紧密相关,常用的I/O控制方式是中断驱动和DMA方式。

6.4.3 设备驱动程序的处理过程

  1. 系统完成I/O请求的处理过程:
  1. 用户进程发出I/O请求, count = write(fd, buffer, nbytes)
  2. 系统接受这个I/O请求
  3. 设备驱动程序具体完成I/O操作
  4. I/O操作完成后用户进程继续执行。
    在这里插入图片描述
  1. 设备驱动程序的处理过程

启动指定设备,完成上层指定的I/O工作。但在启动之前,应先完成必要的准备工作,如检测设备状态是否为“忙”等;

  1. 将抽象要求转换为具体要求。
  2. 对服务进行效验。
  3. 检查设备的状态。
  4. 传送必要的参数。
  5. 启动I/O设备。
    在这里插入图片描述

6.5 与设备无关的IO软件

设备独立性(设备无关性):应用程序中所用的设备,不局限于某个具体的物理设备,通过设备逻辑名来使用设备,必须在设备驱动程序上再设置一层软件,对设备进行管理。

设备无关软件的功能:

  1. 设备驱动程序的统一接口
  2. 设备的分配与回收,主要是独占设备
  3. 缓冲区管理
  4. 提供独立于设备的块大小
  5. 差错控制
    在这里插入图片描述
  1. 以物理设备名使用设备:在早期OS中,应用程序在使用I/O设备时,使用设备的物理名称,这使应用程序与系统中的物理设备直接相关。
  2. 引入了逻辑设备名:为了实现与设备的无关性,引入了逻辑设备和物理设备两个概念。逻辑设备是抽象的设备名.例如:打印机。
  3. 逻辑设备名到物理设备名的转换:应用程序用逻辑设备名使用设备方便了用户,但系统却只能识别物理设备名称。在实际执行时,还必须使用物理名称。

在系统中,必须具有将逻辑设备名转换为某物理设备名的功能。

  1. 设备驱动程序的统一接口 驱动程序格式等接口:
  1. 要求每个设备驱动程序与OS之间有着相同或相近的接口,便于添加设备,编制设备驱动程序。
  2. 将抽象的设备名转换为具体的物理设备名,找到相应的设备驱动程序。

6.5.1 设备分配与回收

  1. 设备分类:独占设备和共享设备。

  2. 独占设备:必须由系统统一分配,不允许用户自行使用。

  3. 分配流程:进程申请使用独占设备,OS检查设备是否空闲,若空闲分配。必须在系统中配置相应的数据结构
    在这里插入图片描述

  4. 四张表:设备控制表(DCT)、系统设备表(SDT)、控制器控制表(COCT)、通道控制表(CHCT)。

  5. 系统设备表(SDT):

  1. SDT整个系统一张表,它记录已被连接到系统中的物理设备的情况,并为每一个物理设备设一表项。
  2. 数据项:设备类型,设备标识符,设备控制表及设备驱动程序的入口。
    在这里插入图片描述
  1. 设备控制表(DCT):
  1. 系统中的每台设备都有一张设备控制表DCT。
  2. 设备队列:请求该设备不能满足的进行,其PCB组成队列。
  3. 重复执行次数:记录设备工作中发生错误应重复执行的次数。
    在这里插入图片描述
  1. 控制器控制表(COCT)和通道控制表(CHCT)
  1. 每个控制器都有一张控制器控制表COCT,用于登录某控制器的使用分配情况及与该控制器相连的通道的情况。
    在这里插入图片描述
    在这里插入图片描述
  1. 各表之间的连接关系:

在这里插入图片描述

6.5.2 设备分配

  1. 设备分配的原则和策略
  1. 充分发挥设备的使用效率,尽可能地让设备忙起来;分配算法:先来先服务,优先级高者优先。
  2. 避免由于不合理的分配而造成死锁的发生。
  3. 将用户程序和具体物理设备相隔离。用户程序使用逻辑设备,设备分配程序完成把逻辑设备转换为对应的物理设备,再根据物理设备号进行分配工作。
  1. 设备分配方式
  1. 静态分配:用户进程开始执行之前,操作系统就将该进程所需要的全部设备、设备控制器和通道一次性地分配给它。
  2. 动态分配:指进程在运行过程中需要I/O时,再由操作系统为其分配设备。

小总结:从软件角度看IO管理的地位和作用

在这里插入图片描述

6.6 用户层的IO软件

  1. 用户层软件:实现与用户交互的接口。用户可直接使用该层所提供的、与IO操作相关的库函数或系统调用对设备进行操作。
    例:putchar(c);用户层软件将用户请求翻译成格式化I/O请求,并通过“系统调用”请求OS内核的服务。

  2. 用户可通过库函数和系统调用对I/O设备进行操作.

  3. 系统调用。应用程序通过系统调用间接调用OS中的I/O过程,对I/O设备进行操作。

  4. 由OS向用户提供的所有功能,用户进程都必须通过系统调用来获取,或者说,系统调用是用户程序获得所有服务的唯一途径。

  5. 系统调用执行过程:将CPU状态由用户态转换到内核态;转向OS中相应过程,由该过程完成所需的I/O操作。执行完后,CPU状态由内核态转换到用户态。

  6. 库函数。C语言以及UNIX系统中,系统调用与各系统调用所使用的库函数之间几乎是一一对应的。

在这里插入图片描述

6.6.2 假脱机(Spooling)系统

  1. 假脱机技术 SPOOLing: Simultaneaus Periphernal Operating On-line
  1. 通过假脱机技术,将一台物理I/O设备虚拟为多台逻辑I/O设备,允许多个用户共享一台物理I/O设备。
  2. 虚拟设备:用一个物理设备模拟出的多个逻辑设备,通过缓冲等方式,将独占设备改造为共享设备。允许多个用户共享一台物理I/O设备。
  3. SPOOLing技术又称假脱机操作技术,是在联机情况下实现脱机I/O功能。
  1. SPOOLing的设计与实现
  1. 输入井和输出井:在磁盘上开辟两个存储空间;输入井用于暂存I/O设备输入的数据;输出井用于暂存用户程序的输出数据,以文件形式管理。
  2. 输入缓冲区和输出缓冲区:内存中的两个缓冲区,用于缓和CPU和磁盘之间速度不匹配矛盾。
  3. 井管理程序:用于控制作业与磁盘井之间的信息交换。负责从相应输入井读取信息,或将信息送至输出井内。
    在这里插入图片描述
  4. 输入进程:输入进程将用户要求的数据从输入设备传送到输入缓冲区,再存放到输入井。
  5. 输出进程:将用户要求输出的数据,先从内存送到输出井,待输出设备空闲时,再将输出井中的数据送到输出设备上。
  1. 假脱机打印机系统
  1. 打印机是经常用到的输出设备,属于独占设备。
  2. 利用SPOOLing将它改造为一台可供多个用户共享的打印设备。
  3. 共享打印机技术已被广泛地用于多用户系统和局域网络中。
  4. 假脱机打印系统主要包括三部分:
    1)磁盘缓冲区(输出井):在磁盘上开辟的存储空间,暂存要打印的数据。
    2)打印缓冲区:在内存中,暂存从缓冲区送来的数据。
    3)假脱机管理进程和假脱机打印进程。
    在这里插入图片描述
  5. 实现原理:
    当用户进程请求打印输出时, SPOOLing同意为它打印输出,但并不立即把打印机分配给它,假脱机管理进程做两件事:
    1)在输出井中为它申请一个空闲磁盘块区,将要打印的数据送入其中暂存。
    2)为用户进程申请一张空白的用户请求打印表,将用户的打印要求填入其中,再将该表挂到请求打印队列上。
    若还有进程请求打印,系统仍接受该请求,并做上述两件事。
    打印机空闲时,假脱机打印进程从请求打印队列队首取出一张请求打印表,根据其中的要求,将要打印的数据从输出井送到内存缓冲区,再由打印机打印。
    队列空时,假脱机打印程序将自己阻塞,有打印请求时唤醒。
  1. SPOOLing系统的特点:
  1. 提高了I/O的速度;
  2. 将独占设备改造为共享设备;
  3. 实现了虚拟设备功能。

6.7 缓冲区管理

6.7.1 缓冲区的作用

  1. 缓冲区是一个存储区域,可以由专门的硬件寄存器组成,也可利用内存作为缓冲区。
  2. 硬件缓冲区成本较高,容量较小,成本高,如快表。
  3. 设备的管理主要用内存作为缓冲区。
    在这里插入图片描述
  4. 缓冲区的作用
  1. 缓和CPU与I/O设备间速度不匹配的矛盾。
  2. 减少对CPU的中断频率,放宽对CPU中断响应时间的限制。
  3. 解决数据粒度不匹配的问题,如协调逻辑记录大小与物理记录大小不一致。
  4. 提高CPU和I/O设备之间的并行性。
    在这里插入图片描述
  1. 缓冲技术实现基本思想:
  1. 进程执行写操作输出数据时,向系统申请一个缓冲区,若为顺序写请求,则不断把数据填到缓冲区,直到被装满。此后,进程继续它的计算,系统将缓冲区内容写到I/O设备上。
  2. 进程执行读操作输入数据时,向系统申请一个缓冲区,系统将一个物理记录的内容读到缓冲区,根据进程要求,把当前需要的逻辑记录从缓冲区中选出并传送给进程。
  3. 在输出数据时,只有在系统还来不及腾空缓冲而进程又要写数据时,它才需要等待;
  4. 在输入数据时,仅当缓冲区空而进程又要从中读取数据时,它才被迫等待。

6.7.2 单缓冲区

假设用户进程请求某种块设备读入若干块的数据,若采用单缓冲的策略,操作系统会在内存中为其分配一个缓冲区。

常考题型:单缓冲时,计算每处理一块数据平均需要多久?
在这里插入图片描述
初始状态:工作区满,缓冲区空,T和C可以并行的;
块设备单缓冲机制的输入工作过程:

  1. 磁盘数据 -> 缓冲区 -> 用户区 -> 数据处理计算
  2. 用时分别为:T、 M、 C
  3. 数据处理时间约为:max[C,T]+M, (M+C)或(M+T)
  4. 不用缓冲时的处理时间为:T+C

6.7.3 双缓冲

假设用户进程请求某种块设备读入若干块的数据,若采用双缓冲的策略,操作系统会在内存中为其分配两个缓冲区。
在这里插入图片描述
工作过程(输入数据):

  1. 磁盘数据—>缓冲区1—>用户区—>处理数据
  2. 磁盘数据—>缓冲区2—>用户区—>处理数据

假设初始状态为:工作区空,其中一个缓冲区满,另一个缓冲区空;
若T<C+M,计算处理一块数据所需时间:M+C,使CPU不必等待设备输入。

6.7.4 环形缓冲区

  1. 在环形缓冲中包括多个缓冲区,其每个缓冲区的大小相同。
  2. 输入多缓冲区可分为三种类型:
  1. 空缓冲区R:用于装输入数据的空缓冲区;
  2. 满缓冲区G:已装满数据的缓冲区;
  3. 当前工作缓冲区C:计算进程正在使用的现行工作缓冲区
    在这里插入图片描述
    Nexti:指示输入进程下次可用的空缓冲区R的指针;
    Nextg:指示计算进程下次可用的满缓冲区G的指针;
    Current:指示计算进程正在使用的缓冲区C的指针。
  1. 环形缓冲区的使用

计算进程和输入进程可利用下述两个过程使用缓冲区。

  1. Getbuf过程。使用缓冲区中的数据时调用。将指针Nextg所指示的缓冲区提供给进程使用,把它修改为当前工作缓冲区;
  2. Releasebuf过程。计算进程把缓冲区中的数据提取完成时,调用释放缓冲区C。
    Nexti 追上Nextg:表示输入速度>输出速度,全部buf满,这时输入进程阻塞;
    Nextg追上Nexti:输入速度<输出速度,全部buf空,这时输出进程阻塞。

6.7.5 缓冲池(Buffer Pool)

缓冲池由系统中共用的缓冲区,是内存中一组大小相等的缓冲区组成,缓冲池属于系统资源,由系统进行管理。
缓冲池是系统中的共享资源,它的使用必须互斥地进行。

  1. 缓冲池组成:3个队列
  1. 空缓冲队列Emq;
  2. 所有装满输入数据的缓冲区链接而成的队列Inq;
  3. 所有装满输出数据的缓冲区链接而成的队列Outq。
  1. 4种工作缓冲区:根据一个缓冲区在实际运算中扮演的功能不同来分

Hin: 收容输入数据
Sin: 提取输入数据
Hout:收容输出数据
Sout:提取输出数据

缓冲池中缓冲区的工作方式:收容输入、提取输入、收容输出、提取输出。
在这里插入图片描述
4种工作方式

收容输入:设备输入数据到缓冲区,申请空缓冲区—数据输入
提取输入:用户从缓冲区中读数据
收容输出:用户向数据缓冲池输出数据
提取输出:设备从缓冲池中读出输出数据并完成输出

缓冲池操作(四种操作):

在这里插入图片描述

复习

  1. 设备管理的功能
  1. 隐藏物理设备的细节
  2. 与设备的无关性
  3. 提高处理机和I/O设备的利用率
  4. 对I/O设备进行控制
  5. 确保对设备的正确共享
  6. 错误处理
  1. I/O系统的层次结构
  1. 设备独立性软件,又称为设备无关性软件,与设备的硬件特性无关的功能几乎都在这一层实现。主要功能包括:逻辑设备与物理设备的映射,设备的分配和回收,缓冲区管理等;
  2. 设备驱动程序:与硬件直接相关,具体实现系统对设备发出的操作指令,驱动IO设备工作的驱动程序。
  3. 当IO任务完成时,IO控制器会发送一个中断信号,系统会根据中断信号类型找到相应的中断处理程序并执行。
    在这里插入图片描述

6.8 磁盘存储器的性能和调度

内容太多,这一节后面再写一篇。内容已续写,点我就到位

相关习题答案

一、选择题

  1. 缓冲技术中的缓冲池在( A)中。
    A. 主存
    B. 外存
    C. ROM
    D. 寄存器

  2. 在操作系统中,用户在使用I/O设备时,通常采用( B )
    A. 物理设备名
    B. 逻辑设备名
    C. 虚拟设备名
    D. 设备牌号

  3. 利用虚拟设备达到输入输出要求的技术是( A )。
    A. 利用外存作缓冲,将作业与外存交换信息和外存与物理设备交换信息两者独立起来,并使它们并行工作的过程
    B. 把I/O要求交给多个物理设备分散完成的过程
    C. 把I/O信息先存放在外存,然后由一台物理设备分批完成I/O要求的过程
    D. 把共享设备改为某个作业的独享设备,集中完成I/O要求的过程

  4. 在设备控制器中用于实现设备控制功能的是(C)
    A. CPU
    B. 设备控制器与处理器的接口
    C. I/O逻辑
    D. 设备控制器与设备的接口

  5. 下列设备中,不属于独占设备的是( B )。
    A. 打印机
    B. 磁盘
    C. 终端
    D. 磁带

  6. 设备独立性是指( D )
    A. 设备具有独立执行I/O功能的一种特性
    B. 设备驱动程序独立于具体使用的物理设备的一种特性
    C. 能独立实现设备共享的一种特性
    D. 用户程序使用的设备与实际使用哪台设备无关的一种特性。

  7. 通过硬件和软件的功能扩充,把原来独立的设备改造成能为若干用户共享的设备,这种设备称为( D )
    A. 存储设备
    B. 系统设备
    C. 用户设备
    D. 虚拟设备

  8. 单机操作系统的共享资源是指(D )。
    A. 内存
    B. CPU
    C. 打印机
    D. 内存、CPU、打印机

  9. 引入缓冲的主要目的是( A ).
    A. 改善CPU和I/O设备之间速度不匹配的情况
    B. 节省内存
    C. 解决同步问题
    D. 高I/O设备的效率

  10. 设备管理的目的是为了合理地利用外部设备和(C )。
    A. 提高CPU利用率
    B. 提供接口
    C. 方便用户
    D. 实现虚拟设备

  11. 为了使并发进程能有效地进行输入和输出,最好采用(A)结构的缓冲技术。
    A. 缓冲池
    B. 循环缓冲
    C. 单缓冲
    D. 双缓冲

  12. 共享设备是指( D )
    A. 可以为多个用户服务的设备
    B. 只能为一个用户服务的设备
    C. 任意时刻都可以同时为多个用户服务的设备
    D. 一个作业还没有撤离就可以为另一个作业同时服务的设备,但每个时刻只为一个用户服务

  13. 虚拟设备是指( C )
    A. 允许用户使用比系统中具有的物理设备更多的设备
    B. 允许用户以标准化方式来使用物理设备
    C. 用共享设备模拟独占设备
    D. 允许用户程序不必全部装入主存便可以使用系统中的设备

  14. 在采用Spooling技术的系统中,用户的打印结果首先被送到(A)
    A. 磁盘固定区域
    B. 内存固定区域
    C. 终端
    D. 打印机

  15. 操作系统采用缓冲技术,能够减少对CPU的( A )次数,从而提高资源的利用率。
    A. 中断
    B. 访问
    C. 控制
    D. 依赖

  16. DMA方式是在(A)之间建立一条直接数据通路。
    A. I/O设备和主存
    B. 两个I/O设备
    C. I/O设备和CPU
    D. CPU和主存

  17. 一个计算机系统配置了2台绘图机和3台打印机,为了正确驱动这些设备,系统应该提供(A)个设备驱动程序。(这里不太确定,要是是2台相同的绘图机和3台相同的打印机,这题肯定选A,但是这里题干没有说相同)
    A. 2
    B. 3
    C. 5
    D. 1

  18. 下列有关通道的叙述中,不正确的是( A)
    A. 通道是处理输入、输出的软件
    B. 所有外围设备的启动工作都由设备管理负责处理
    C. 来自通道的I/O中断事件由设备管理负责处理
    D. 编制好的通道程序是存放在主存中的

  19. 操作系统中Spooling技术,实质是将( B )转化为共享设备的技术。
    A. 虚拟设备
    B. 独占设备
    C. 脱机设备
    D. 块设备

  20. 按( D )分类可将设备分为块设备和字符设备。
    A. 从属关系
    B. 操作特性
    C. 共享属性
    D. 信息交换单位

  21. 大多数低速设备都属于( A )设备。
    A、 独占
    B、 共享
    C、 虚拟
    D、 SPOOLing

  22. 在操作系统中,用户在使用I/O设备时,通常采用( B )。
    A、 设备的绝对号
    B、 设备的相对号
    C、 虚拟设备号
    D、 设备名

  23. 计算机系统启动外围设备是按( A )启动的。
    A、 设备的绝对号
    B、 设备的相对号
    C、 通道号
    D、 设备名

  24. 通道是一种( C )。
    A、 I/O端口
    B、 数据通道
    C、 I/O专用处理机
    D、 软件工具

  25. CPU启动通道后,设备的控制工作由(C )。
    A、 CPU执行程序来控制
    B、 CPU执行通道程序来控制
    C、 通道独立执行预先编好的通道程序来控制
    D、 通道执行用户程序来控制

  26. 用户编制的程序与实际使用的物理设备无关是由( D )功能实现的。
    A、 设备分配
    B、 设备驱动
    C、 虚拟设备
    D、 设备独立性

  27. 下列描述中,不是设备管理的功能的是(C )。
    A、 实现缓冲区管理
    B、 进行设备分配
    C、 实现中断处理
    D、 完成I/O操作

  28. 采用SPOOLing技术的目的是( A )。
    A、 提高独占设备的利用率
    B、 提高主机效率
    C、 减轻用户编程负担
    D、 提高程序的运行速度

  29. SPOOLING技术一般不适用于( A )。
    A、 实时系统
    B、 多道批处理系统
    C、 网络操作系统
    D、 多计算机系统

  30. 操作系统中采用的以空间换取时间技术的是( B )。
    A、 SPOOLing技术
    B、 虚拟存储技术
    C、 覆盖与交换技术
    D、 通道技术

  31. 设备的打开、关闭、读、写等操作是由( D )完成的。
    A、 用户程序
    B、 编译程序
    C、 设备分配程序
    D、 设备驱动程序

  32. SPOOLing技术可以实现设备的( C )分配。
    A、 独占
    B、 共享
    C、 虚拟
    D、 物理

  33. 下列关于设备驱动程序的描述,错误的是( C )。
    A、 设备驱动程序应可以动态装卸
    B、 设备驱动程序往往由生产设备的厂家提供
    C、 设备驱动程序可使用系统调用
    D、 设备驱动程序可实现请求I/O进程与设备控制器之间的通信

34.下列缓冲技术中,对于一个具有信息的输入和输出速率相差不大的I/O系统比较有效的是( A )。
A、 双缓冲技术
B、 环形缓冲技术
C、 多缓冲技术
D、 单缓冲技术

  1. 为了使多个进程能有效地同时处理阵发性的输入和输出,最好使用( A)结构的缓冲技术。
    A、 多缓冲
    B、 SPOOLing
    C、 单缓冲区
    D、 双缓冲区

二、判断题

  1. 利用共享分配技术可以提高设备的利用率,使得打印机之类的独占设备成为可共享的、快速I/O设备。(错,应该是利用虚拟分配技术)

  2. SPOOLing系统实现设备管理的虚拟技术,即:将独占设备改造为共享设备。它由专门负责I/O的常驻内存的进程以及输入、输出井组成。(对)

  3. 磁盘上同一柱面上存储的信息是连续的。(对)

  4. 一个进程在执行过程中可以被中断事件打断,当相应的中断处理完成后,就一定恢复该进程被中断时的现场,使它继续执行。(错)

  5. 只有引入通道后,CPU计算与I/O操作才能并行执行。(错,引入中断就可以并行执行,只是引入通道后,并行度更高)

  6. DMA方式可以完全脱离CPU直接与内存进行交换数据。(对)

  7. 中断处理一般分为中断响应和中断处理两个步骤,前者由软件实施,后者由硬件实施。(错,说反了)

  8. 常用的缓冲技术是解决慢速设备与快速CPU处理之间协调工作。(对)

  9. 在设备I/O中引入缓冲技术的目的是为了节省内存。(错)

  10. 用户程序应与实际使用的物理设备无关,这种特性就称做与设备无关性。(对)

  11. 在UNIX/Linux系统上,系统调用以C函数的形式出现。( 对 )

  12. 系统调用是操作系统与外界程序之间的接口,它属于核心程序。在层次结构设计中,它最靠近硬件。( 错 )

  13. 操作系统核心提供了大量的服务,其最高层是系统调用,它允许正在运行的程序直接得到操作系统的服务。( 对 )

  14. 系统调用的调用过程是通过用户程序,运行在用户态,而被调用的过程是运行在核心态下。( 对 )

三、问答题

  1. 有几种I/O控制方式?各有什么特点?

答:1 程序查询方式 :
程序查询方式是早期计算机中使用的一种方式。数据在CPU和外围设备之间的传送完全靠计算机程序控制,查询方式的优点是CPU的操作和外围设备的操作能够同步,而且硬件结构比较简单。但问题是,外围设备动作很慢,程序进入查询循环时将白白浪费掉CPU很多时间,CPU此时只能等待,不能处理其他业务。即使CPU采用定期地由主程序转向查询设备状态的子程序进行扫描轮询的办法,CPU宝贵资源的浪费也是可观的。因此当前除单片机外,很少使用程序查询方式。
2 程序中断方式 :
中断是外围设备用来“主动”通知CPU,准备送出输入数据或接收输出数据的一种方法。通常,当一个中断发生时,CPU暂停它的现行程序,而转向中断处理程序,从而可以输入或输出一个数据。当中断处理完毕后,CPU又返回到它原来的任务,并从它停止的地方开始执行程序。它节省了CPU宝贵的时间,是管理I/O操作的一个比较有效的方法。中断方式一般适用于随机出现的服务,并且一旦提出要求,应立即进行。同程序查询方式相比,硬件结构相对复杂一些,服务开销时间较大。
3 直接内存访问(DMA)方式:
用中断方式交换数据时,每处理一次I/O交换,约需几十微秒到几百微秒。对于一些高速的外围设备,以及成组交换数据的情况,仍然显得速度太慢。直接内存访问(DMA)方式是一种完全由硬件执行I/O交换的工作方式。这种方式既考虑到中断响应,同时又要节约中断开销。此时,DMA控制器从CPU完全接管对总线的控制,数据交换不经过CPU,而直接在内存和外围设备之间进行,以高速传送数据。这种方式的主要优点是数据传送速度很高,传送速率仅受到内存访问时间的限制。与中断方式相比,需要更多的硬件。DMA方式适用于内存和高速外围设备之间大批数据交换的场合。
4 通道方式 :
DMA方式的出现已经减轻了CPU对I/O操作的控制,使得CPU的效率有显著的提高,而通道的出现则进一步提高了CPU的效率。这是因为,CPU将部分权力下放给通道。通道是一个具有特殊功能的处理器,某些应用中称为输入输出处理器(IOP),它可以实现对外围设备的统一管理和外围设备与内存之间的数据传送。这种方式大大提高了CPU的工作效率。然而这种提高CPU效率的办法是以花费更多硬件为代价的。

  1. 什么是缓冲?为什么要引入缓冲?

答:缓冲是为了协调吞吐速度相差很大的设备之间的数据传送。引入缓冲的主要原因,可归结为以下几点:

  1. 改善CPU与I/O设备间速度不匹配的矛盾;
  2. 可以减少对 CPU的中断频率,放宽对中断响应时间的限制;
  3. 提高 CPU和 I/O设备之间的并行性.
  1. 与设备无关性的基本含义是什么?为什么要设置该层?

答:基本含义:应用程序独立于具体使用的物理设备。为了实现设备独立性而引入了逻辑设备和物理设备两概念。在应用程序中,使用逻辑设备名称来请求使用某类设备;而系统在实际执行时,还必须使用物理设备名称。为了提高0S的可适应性和可扩展性,在现代0S中都毫无例外地实现了设备独立性,也称设备无关性。优点:1. 设备分配时的灵活性;2. 易于实现I/0重定向(用于I/0操作的设备可以更换(即重定向),而不必改变应用程序。

  1. 什么是独占设备?什么是共享设备?两者在分配方式上有什么不同?

答:独占设备:即不能共享的设备,一段时间只能由一个作业独占。如打印机、读卡机、磁带机等。所有字符型输入输出设备原则上都应是独享设备。
共享设备:可由若干作业同时共享的设备,如磁盘机等。共享分配技术保证多个进程可以同时方便地直接存取一台共享设备。共享提高了设备的利用率。块设备都是共享设备。
设备分配技术主要有:独占分配、共享分配和虚拟分配。独占分配适用于独占设备,系统效率低;共享分配适用于高速、大容量直接存储的共享设备,设备的利用率较高;虚拟分配技术利用共享设备去实现独占设备的功能,从而使独占设备“感觉上”成为可共享的、快速的I/O设备。

  1. 以一台打印机为例,简述SPOOLING技术工作原理。

答:1. 当用户进程请求打印输出时, SPOOLing同意为它打印输出,但并
不立即把打印机分配给它,假脱机管理进程做两件事:
1)在输出井中为它申请一个空闲磁盘块区,将要打印的数据送入
其中暂存。
2)为用户进程申请一张空白的用户请求打印表,将用户的打印要
求填入其中,再将该表挂到请求打印队列上。
2. 若还有进程请求打印,系统仍接受该请求,并做上述两件事.
3. 打印机空闲时,假脱机打印进程从请求打印队列队首取出一张请
求打印表,根据其中的要求,将要打印的数据从输出井送到内存
缓冲区,再由打印机打印。
4. 队列空时,假脱机打印程序将自己阻塞,有打印请求时唤醒。

参考资料

链接1

链接2

链接3

链接4

链接5

链接6

链接7

链接8

链接9

链接10

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值