Chapter3 - 设备管理(I/O管理)

[TOC]

0x00 I/O管理概述

0x01 I/O硬件组成

1. I/O系统抽象结构

处理机操纵设备控制器,提供命令和数据给控制器,由控制器操纵I/O设备,使设备完成I/O传输。

image-20200923175352019

2. 设备控制器

  • 控制器的功能

    • 接收和识别CPU命令
    • 数据交换:CPU与控制器、控制器与设备
    • 对设备传来的数据进行差错检测
    • 设备状态的了解和报告
    • 设备地址识别
    • 缓冲区
  • 组成

    • 控制器与CPU接口:数据寄存器、控制寄存器、状态寄存器,采用内存映射或专门的I/O指令
    • 控制器与设备接口:数据信号、控制信号、状态信号
    • I/O逻辑:用于实现CPU对I/O设备的控制
image-20200923174838947

3. I/O端口地址

I/O端口地址:接口电路中每个寄存器具有的唯一地址。所有I/O端口地址形成I/O端口的地址空间(受OS保护)

I/O指令形式与I/O地址是相互关联的,主要有以下形式:

  • 内存映像编址(内存映像I/O模式)

    • 控制器的内存/寄存器作为物理内存空间的一部分
  • I/O独立编址(I/O专用指令)

    • Intel 体系架构in/out 指令

内存映射I/O的特点

  • 优点:

    • 不需要特殊的保护机制来阻止用户进程进行相应的I/O 操作。
      • 操作系统要避免把包含了控制寄存器的那部分地址空间放入用户的虚拟地址空间中。
    • 可以引用内存的每一条指令都可以适用于引用控制寄存器。
  • 缺点:

    • 不允许对一个控制寄存器的内容进行高速缓存
      • 如果我们把设备控制寄存器进行了 高速缓存,那么第一次引用的时候就把它 放入了高速缓存。 以后再对它的引用都是从高速缓存当中取值,而不会再去对设备进行相应的检测。

I/O独立编址的特点

  • 优点:

    • 外设不占用内存的地址空间
    • 编程时,易于区分是对内存操作还是对I/O操作。
  • 缺点:

    • I/O端口操作的指令类型少操作不灵活

0x02 I/O控制方式

  • 程序控制I/O(PIO,Programmed I/O)

  • 中断驱动方式(Interrupt-driven I/O)

  • 直接存储访问方式(DMA, Direct Memory Access)

  • 通道技术(Channel)

1. 程序控制I/O

也称轮询或查询方式I/O,它由CPU代表进程向I/O模块发出指令, 然后进入忙等状态, 直到操作完成之后进程才能够继续执行。

  • 轮询方式的工作过程如下:
image-20200923100727545

① 应用程序提出了一个读数据的请求;

② 设备驱动程序检查设备的状态

③ 如果状态正常,就给设备发出相应的控制命令

④ 不断地去测试这个设备是否完成了这次执行过程,实际上就是一个轮询

⑤ 设备控制器完成操作,把数据送给应用程序

⑥ 应用程序继续进行相应的处理。

  • CPU与设备控制器的轮询流程如下:
image-20200923101656809

2. 中断

当I/O操作结束后由设备控制器主动地来通知设备驱动程序说这次结束, 而不是设备驱动程序不断地去轮询看看设备的状态。

  • 中断驱动方式的工作流程如下:
image-20200923103121830

① 用户程序提出I/O请求;

② 设备驱动程序检查设备的状态

③ 如果设备已经准备好,那么就向设备发出控制命令

④ 将状态记录在设备状态表中,CPU继续其它工作。

⑤ 设备完成工作后向CPU发中断信号,转入中断处理程序;

⑥ 中断处理程序发现这是一个正常地完成了控制命令的信号后,把结果提交给设备管理程序

⑦ 设备管理程序会从设备状态表里查询是哪一个请求的完成

⑧ 把相应的数据送到应用程序

⑨ 通知应用程序可以继续执行。

  • 中断驱动方式的处理过程如下:
image-20200923103522116

3. DMA

直接存储器访问方式, 是由一个专门的控制器来完成数据从内存到设备或者是从设备到内存的传输工作。

  • DMA的工作流程大致如下:

① 主机将DMA命令块写入内存(命令块含有指向传输源的指针、传输目的地的指针、传输数据的总字节计数);

② CPU将命令块地址写入DMA控制器,然后便去做其他工作(阻塞当前进程,调度执行其他进程);

③ DMA控制器直接操作内存总线,按照地址内容,在总线上进行传输,完成内存与外设的成批数据交换,此时并不需要CPU干预;

④ 在操作完成时由DMA控制器向CPU发出中断。

  • DMA控制器中的寄存器
    • 命令/状态寄存器(CR),用于接收从CPU发送来的I/O命令,或有关控制信息,或设备的状态。
    • 内存地址寄存器(MAR),在输入时,它存放把数据从设备传送到内存的起始目标地址,在输出时,它存放由内存到设备的内存源地址。
    • 数据寄存器(DR),用于暂存从设备到内存,或从内存到设备的数据。
    • 数据计数器(DC),存放本次CPU要读或写的字(节)数。
  • DMA处理的基本流程
image-20200923145446788
  • DMA的优缺点:

    • 优点:
      • CPU只需干预I/O操作的开始和结束,而后续成批的数据读写则无需CPU控制,适于高速设备。
    • 缺点:
      • 数据传送的方向、存放数据的内存地址及传送数据的长度等都由CPU控制,占用了CPU时间
      • 每个设备占用一个DMA控制器,当设备增加时,需要增加新的DMA控制器。
  • 中断方式与DMA方式的区别

    • 中断方式是在数据缓冲区寄存器填满之后则发出中断;而DMA方式则是在所要求的转送的数据块全部传送结束时才发出中断,从而减少了CPU进行中断处理的次数。
    • 中断控制方式的数据传送是在中断处理时由CPU控制完成的,由于是程序切换,需要保护和恢复现场;而DMA方式下是由DMA控制器控制完成的,在传输过程中不需要CPU干预,DMA控制器直接在主存和I/O设备之间传送数据,只有开始和结束才需要CPU干预。
    • 程序中断方式具有对异常事件的处理能力,而DMA控制方式适用于数据块的传输。

4. 通道

为了进一步减少CPU的干预,提高操作系统I/O效率,引入了“通道”技术。

通道是一个独立于CPU的专管I/O控制的处理机,它控制设备与内存直接进行数据交换。

  • 基本思想:
    • 通道有自己的指令体系,可由通道指令组成的通道程序。通道程序通常由操作系统构造,放在内存中。
    • CPU仅需发出一条I/O指令给通道,说明要执行的I/O操作和要访问的I/O设备,通道接到指令后,就启动相应的通道程序来完成I/O操作,并在操作结束时向CPU发中断信号。
    • 这样,通道与CPU分时使用内存,实现了CPU内部运算与I/O设备的并行工作。
  • 通道与DMA的原理几乎是一样的,CPU将“传输控制”的功能下放给通道后只负责“数据处理”功能。
  • 通道的优缺点:

    • 优点:执行一个通道程序可以完成几组I/O操作,与DMA相比,减少了CPU干预。
    • 缺点:费用较高
  • 通道种类:

    • 字节多路通道
      • 以字节为单位交叉工作:当为一台设备传送一个字节后,立即转去为另一它设备传送一个字节;
      • 适用于连接打印机、终端等低速或中速的I/O设备。
    • 数组选择通道
      • 以“组方式”工作,每次传送一批数据,传送速率很高,但在一段时间只能为一台设备服务
      • 每当一个I/O请求处理完之后,就选择另一台设备并为其服务;
      • 适用于连接磁盘、磁带等高速设备。
    • 数组多路通道
      • 综合了字节多路通道分时工作和选择通道传输速率高的特点;
      • 其实质是:对通道程序采用多道程序设计技术,使得与通道连接的设备可以并行工作。
image-20200923152346513
  • 通道与DMA的区别
    • DMA方式下,数据的传送方向、存放数据的内存起始地址和数据块长度都由CPU控制;而通道是一个特殊的处理器,有自己的指令和程序,通过执行通道程序实现对数据传输的控制,所以通道具有更强的独立处理I/O的功能
    • DMA控制器通常只能控制一台或者少数几台同类设备;而一个通道可同时控制多种设备

0x03 I/O软件的组成

1. 分层设计思想

  • 用户进程层执行输入输出系统调用,对I/O数据进行格式化,为假脱机输入输出做准备
  • 独立于设备的软件实现设备的命名、设备的保护、成块处理、缓冲技术和设备分配
  • 设备驱动程序设置设备寄存器、检查设备的执行状态
  • 中断处理程序负责I/O完成时,唤醒设备驱动程序进程,进行中断处理
  • 硬件层实现物理I/O的操作
image-20200923154621277

简化版如下:

image-20200923154708379

2. 设备独立性设计

为了实现设备独立性而引入了逻辑设备物理设备这两个概念:

  • 在应用程序中,使用逻辑设备名称来请求使用某类设备,而系统在实际执行时,还必须使用物理设备名称。
  • 系统需具有将逻辑设备名称转换为某物理设备名称的功能,这非常类似于存储器管理所介绍的逻辑地址和物理地址的概念。

在实现了设备独立性功能后,可带来以下好处

  • 设备分配时的灵活性
    • 当进程以物理名称来请求使用指定设备时,如果该设备已经分配给其他进程或正在检修,而此时尽管还有几台其他的相同设备正在空闲,该进程仍然阻塞。
    • 但若进程能够以逻辑设备名称来请求某类设备时,系统可立即将该类设备中的任一台分配给进程,仅当所有此类设备全部分配完毕时,进程才会阻塞。
  • 易于实现I/O重定向
    • 用于I/O操作的设备可以更换,而不必改变应用程序。

为了实现设备的独立性,系统必须设置一张逻辑设备表LUT(Logical Unit Table),用于将应用程序中所使用的逻辑设备名映射为物理设备名。

  • 该表的每个表目中包含了三项,逻辑设备名、物理设备名、设备驱动程序的入口地址。
  • 通过逻辑设备名,系统可以查找LUT,便可找到物理设备和驱动程序
image-20200923155524948

LUT的设置可以采用两种方式

  • 在整个系统中设置一张LUT
    • 由于系统中所有进程的设备分配情况都记录在同一张LUT中,因而不允许在LUT中具有相同的逻辑设备名,这就要求所有用户都不能使用相同的逻辑设备名,多用户下难以做到,单用户很好实现。
  • 为每个用户设置一张LUT
    • 每当用户登录时,便为该用户建立一个进程,同时建立一张LUT,并将该表放入进程的PCB中。

3. 设备驱动程序

  • 基本思想:

    • 与设备密切相关的代码放在设备驱动程序中,每个设备驱动程序处理一种设备类型
    • 设备驱动程序的任务是接收来自与设备无关的上层软件的抽象请求,并执行这个请求
    • 每一个控制器都设有一个或多个设备寄存器,用来存放向设备发送的命令和参数。设备驱动程序负责释放这些命令,并监督它们正确执行
  • 特点

    • I/O进程与设备控制器之间的通信程序
    • 驱动程序与I/O设备的特性紧密相关
    • 与I/O控制方式紧密相关
    • 与硬件紧密相关
  • 驱动程序的接口

    • 驱动程序初始化函数

      • 向操作系统登记该驱动程序的接口函数,该初始化函数在系统启动时安装入内核执行
    • 驱动程序卸载函数

      • 申请设备函数,释放设备函数。
    • I/O操作函数

      • 调用该子程序是系统调用的结果。

      • 对独占设备,包含启动I/O的命令;对共享设备,将I/O请求挂入请求队列。

    • 中断处理函数

      • 系统来接收硬件中断,再由系统调用中断服务子程序。

      • I/O完成做善后处理,一般是唤醒等待刚完成I/O求的阻塞进程,时期能进一步做后续工作;如果存在I/O请求队列,则启动下一个I/O请求

  • 驱动程序与应用程序的区别

    • 应用程序以main开始;驱动程序没有main,它以一个模块初始化函数作为入口。
    • 驱动程序完成初始化之后不再运行,等待系统调用;应用程序从头到尾执行一个任务。
    • 驱动程序不能使用标准C库。

0x04 I/O缓冲管理(重点)

缓冲技术可提高外设利用率

  • 原因:
    • 匹配CPU与外设的不同处理速度
    • 减少对CPU的中断次数。
    • 提高CPU和I/O设备之间的并行性

1. 单缓冲(single buffer)

每当用户进程发出一个I/O请求时,操作系统便在主存中为之分配一个缓冲区,T、M,C的定义见下图:

image-20200923161952200
  • 由于T和C是可以并行的,当T>C时,系统对每一块数据的处理时间为M+T;反之,为M+C。
  • 即系统对每一块数据的处理时间为Max(C,T) + M。

2. 双缓冲(double buffer)

两个缓冲区,CPU和外设都可以连续处理而无需等待对方,要求CPU和外设速度相近

  • 如果C<T,可使块**设备连续输入****;如果C>T,则可使CPU不必等待设备输入。
  • 即系统对每一块数据的处理时间可以粗略的认为是Max(C,T) 。
image-20200923162150980

3. 环形缓冲(circular buffer)

若CPU和外设的处理速度差较大,双缓冲效果不够理想,因此引入了多缓冲机制。

  • 组成
    • 多个缓冲区,在循环缓冲区中包括多个缓冲区,每个缓冲区的大小相同,作为输入的多缓冲区可分为三种类型,用于装输入数据的空缓冲区R、已装满数据的缓冲区G以及计算进程正在使用的工作缓冲区C
    • 多个指针,作为输入的缓冲区可设置三个指针,用于指示计算进程下一个可用缓冲区G的指针Nextg指示输入进程下次可用的空缓冲区R的指针Nexti、以及用于指示计算进程正在使用的缓冲区C的指针Current
image-20200923163139638

4. 缓冲池(buffer pool)

为了提高缓冲区的利用率,引入缓冲池,在池中设置了多个可供若干个进程共享的缓冲区。

  • 空闲缓冲区。
  • 装满输入数据的缓冲区。
  • 装满输出数据的缓冲区

为了管理方便,将相同类型的缓冲区链成一个队列,形成了:空缓冲队列emq,输入队列inq,输出队列outq。

image-20200923163409012

缓冲区可以在收容输入、提取输入、收容输出、提取输出四种工作方式下工作:

image-20200923163501767
  • 收容输入:在输入进程需要输入数据时,便调用Getbuf(emp)过程,从空缓冲队列的队首取出一个空缓冲区,把它作为收容输入工作缓冲hin,然后,把数据输入其中,装满后再调用Putbuf(inq, hin)过程,将该缓冲区挂在输入队列上。
  • 提取输入:当计算进程需要输入数据时,调用Getbuf(inq)过程,从输入队列队首取出一个缓冲区,作为提取输入工作缓冲区sin,计算进程从中提取数据,计算进程用完该数据后,再调用Putbuf(emq, sin)过程,将该缓冲区挂到空缓冲队列emq上。
  • 收容输出:当计算进程需要输出时,调用Getbuf(emq)过程从空缓冲区队列emq的队首取出一个空缓冲区,作为收容输出工作缓冲区hout,当其中装满输出数据后,又调用Putbuf(outq, hout)过程,将该缓冲区挂在outq末尾。
  • 提取输出:由输出进程调用Getbuf(outq)过程,从输出队列队首取出一个装满输出数据的缓冲区,作为提取输出工作缓冲区sout,在数据提取完后,再调用Putbuf(emq, sout)过程,将该缓冲区挂在空缓冲队列末尾。

0x05 I/O设备管理

1. I/O设备分配

由于设备、通道资源的有限性,进程必须首先向设备管理程序提出资源申请,然后由设备分配程序根据相应的分配算法为进程分配资源。

  • 两种常见作法:
    • 在进程间切换使用外设,如键盘和鼠标;
    • 通过一个虚拟设备把外设与应用进程隔开,只由虚拟设备来使用设备

2. 设备分配用数据结构

1)设备控制表(DCT, Device Control Table)

每个设备一张,反映设备的特性、设备和控制器的连接情况。

image-20200923164251225
  • DCT说明
    • 设备队列队首指针:凡因为请求本设备而未得到满足的进程,其PCB都应按照一定的策略排成一个队,称该队列为设备请求队列或简称设备队列,其队首指针指向队首PCB
    • 设备状态:当设备处于使用状态时,应该设备设置为忙/闲标志置为1;
    • 控制器表指针:该指针指向该设备所连接的控制器的控制表;
    • 重复执行次数:外部设备在传送数据时,较容易发生数据传送错误。在许多系统中,如果发生传送错误,并不立即认为传送失败,而是令它重传,并由系统规定设备在工作中发生错误时应重复执行的次数。

2)系统设备表(SDT, system device table)

在整个系统中只有一张,它记录被连接到系统中的所有物理设备的情况,并为每个物理设备设一表目项。

image-20200923164913677
  • SDT说明
    • DCT指针:指向相应设备的DCT;
    • 设备使用进程标识:正在使用该设备的进程标识;
    • DCT信息:为引用方便而保存的DCT信息,如:设备标识、设备类型等;

3)控制器控制表(COCT, COntroller Control Table)

每个设备控制器一张,反映I/O控制器的配置和状态以及和通道的连接情况等。

image-20200923164946343

4)通道控制表(CHCT, CHannel Control Table)

每个通道一张,描述通道工作状态。

image-20200923165007523

3. 设备分配的原则

  • 设备固有属性:独享、共享、虚拟设备
  • 设备分配算法:先来先服务、优先级高者优先
  • 设备分配中的安全性:死锁问题
    • 安全分配(同步):在设备分配中防止死锁,进程发出I/O请求之后,进入阻塞,直到I/O完成。CPU和I/O串行工作,打破了死锁条件,但是效率低。
    • 不安全分配(异步):设备在分配时不考虑可能产生的死锁,进程发出I/O请求后,仍然继续运行,可继续请求其他I/O设备。需要进行安全性检查,但进程执行效率相对较高

4. 设备分配策略

1)单(多)通路I/O系统的设备分配

单(多)通路:一个设备对应一(多)个控制器,一个控制器对应一(多)个通道。

  1. 分配设备

    根据物理设备名查找系统设备表SDT,从中找到设备控制器表DCT,如果设备忙,则进入等待队列;否则,计算是否产生死锁,进行分配。

  2. 分配设备控制器

    将设备分配给进程后,在DCT中找到该设备相连的设备控制器表COCT,如果控制器空闲,则分配;否则,进入等待队列。

  3. 分配通道

  4. 从COCT中找到相连的通道控制表CHCT,如果通道空闲,则分配,否则,进入等待队列。

2)用户空间的I/O软件:SPOOLing技术(重点)

在多道程序系统中,专门利用一道程序(SPOOLing程序)来完成对设备的I/O操作,无需使用外围I/O处理机

SPOOLing, (Simultaneous Peripheral Operation OnLine),也称为虚拟设备技术把独享设备转变成具有共享特征的虚拟设备,从而提高设备利用率。

基本思想:
  • SPOOLing程序和外设进行数据交换:
    • SPOOLing程序预先从外设读取数据并加以缓冲,在以后需要的时候输入到应用程序;
    • SPOOLing程序接受应用程序的输出数据并加以缓冲,在以后适当的时候输出到外设。
  • 应用程序进行I/O操作时,只是和SPOOLing程序交换数据(从SPOOLing程序的缓冲池中读出数据或把数据送入缓冲池),而不是跟实际的外设进行I/O操作,称为“虚拟I/O”。
SPOOLing系统组成
image-20200923170400180
  • 输入井和输出井,这是在磁盘上开辟的两个大存储空间。
    • 输入井是模拟脱机输入时的磁盘设备,用于暂存I/O设备输入的数据;
    • 输出井是模拟脱机输出时的磁盘设备,用于暂存用户程序和输出数据。
  • 输入缓冲区和输出缓冲区缓和CPU与磁盘之间速度不匹配,在内存中开辟的两个缓冲区。
    • 输入缓冲区用于暂存由输入设备送来的数据,以后再传送到输入井;
    • 输出缓冲区用于暂存从输出井送来的数据,以后再传送给输出设备。
  • 输入进程SPi和输出进程SPo,利用两个进程来模拟脱机I/O时的外围控制机
    • 进程SPi模拟脱机输入时的外围控制机,将用户要求的数据从输入机通过输入缓冲区再送到输入井,当CPU需要输入数据时,直接从输入井读入内存
    • 进程SPo模拟脱机输出时的外围控制机,将用户要求输出的数据先从内存送到输出井,待输出设备空闲时,再将输出井中的数据经过输出缓冲区送到输出设备上。
特点
  • 高速虚拟I/O操作

    • 一方面,应用程序的虚拟I/O比实际I/O速度提高,缩短应用程序的执行时间。
    • 另一方面,程序的虚拟I/O操作时间和实际I/O操作时间分离开来。
  • 实现对独享设备的共享

    • 由SPOOLing程序提供虚拟设备,可以对独享设备依次共享使用
举例

打印机设备和可由打印机管理器管理的打印作业队列。

例如:Windows NT中,应用程序直接向针式打印机输出需要15分钟,而向打印作业队列输出只需要1分钟,此后用户可以关闭应用程序而转入其他工作,在以后适当的时候由打印机管理器完成15分钟的打印输出而无需用户干预。

0x06 I/O性能问题

解决I/O性能问题的两个途径:

  • 使CPU利用率尽可能不被I/O降低

    • 可以使用缓冲技术减少或缓解速度差异,同时使用异步I/O使CPU不等待 I/O。
  • 使CPU尽可能摆脱I/O

    • 使用DMA、通道等I/O部件让CPU摆脱I/O操作的影响

0x07 I/O操作过程

从系统调用的开始到系统调用结束经过的步骤:

① 进程向内核发起一个系统调用;

② 内核接收到系统调用,知道是对文件的请求,于是告诉磁盘,把文件读取出来;

③ 磁盘接收到来着内核的命令后,把文件载入到内核的内存空间里面;

④ 内核的内存空间接收到数据之后,把数据copy到用户进程的内存空间(此过程是I/O发生的地方);

⑤ 进程内存空间得到数据后,给内核发送通知;

⑥ 内核把接收到的通知回复给进程,此过程为唤醒进程,然后进程得到数据,进行下一步操作。

all in all,I/O操作主要分为两个步骤:

  1. 磁盘把数据装载进内核的内存空间
  2. 内核的内存空间的数据copy到用户的内存空间中

有如下五种方式。

1. 阻塞I/O

阻塞I/O是指调用结果返回之前,当前线程会被挂起(线程进入睡眠状态) 。函数只有在得到结果之后,才会返回,才能继续执行。

image-20200923173220818

2. 非阻塞I/O

进程发起I/O调用,I/O自己知道需过一段时间完成,就立即通知进程进行别的操作,则为非阻塞I/O。

image-20200923173303923

3. I/O多路复用

I/O多路复用

  • 工作进程调用一个管理I/O的特殊库函数,此库函数可以接受并管理多个I/O请求,工作进程则可以同时等待多个I/O请求,虽然是阻塞,但是阻塞在多个进程上,可以提高效率。第二阶段依然需要工作进程参与库函数把内核空间数据复制到用户空间,第二阶段依旧阻塞

原本进程和系统内核直接沟通,现在在中间加一个i/o复用select。

image-20200923173418093

4. 事件(信号)驱动I/O

进程发起调用,通过回调函数,内核会记住是哪个进程申请的,一旦第一段完成了,就可以向这个进程发起通知,这样第一段就是非阻塞的,进程不需要盲等了,但是第二段依然是阻塞的

image-20200923173635891

5. 异步I/O

无论第一第二段,不再向系统调用提出任何反馈,只有数据完全复制到服务进程内存中后,才向服务进程返回ok的信息,其它时间,进程可以随意做自己的事情,直到内核通知ok信息。

image-20200923173808606

五种模型对比

image-20200923173817710
  • 同步阻塞
    • 两段都是阻塞的,所有数据准备完成后才响应。
  • 同步非阻塞
    • 磁盘从磁盘复制到内核内存中的时候, 不停询问内核数据是否准备完成。盲等性能有可能更差 ,看上去他可以做别的事情了, 但是其实在不停的循环。
    • 缺点:无法处理多个I/O,比如用户打开文件,ctrl+C想终止这个操作,是无法停掉的。
  • 同步IO
    • 如果第二段是阻塞的 ,代表是同步的。
  • 异步IO
    • 内核后台自己处理 ,把大量时间拿来处理用户请求

考点积累

知识点积累

  • 用户程序发出磁盘I/O请求后,系统正确的处理流程是:用户程序 -> 系统调用处理程序 -> 设备驱动程序 -> 中断处理程序 -> 硬件
  • I/O交通管制程序的主要挂能是管理设备、控制器和通道的状态信息。
  • SPOOLING技术时操作系统中采用的一种将独占设备改造为共享设备的技术,其有效减少了进程等待读入/独处信息的时间,加快了作业的执行速度,并提高了处理器与通道并行工作的能力。
  • 字符设备的基本特征是不可寻址到字节;共享设备是指同一时间段内允许多个进程同时访问的设备。
  • 在分配独占设备时可能引起死锁,在分配共享设备时不会引起进程死锁。
  • I/O通道是一种特殊的处理机,它具有执行I/O指令的能力,通过执行通道程序来控制I/O操作,用于完成主存和外设之间的信息传输
  • 通常,一个CPU可以连接多个通道,一个通道连接多个设备控制器,一个设备控制器连接多个设备。因而,设备分配的过程是先分配设备,再分配控制器,最后分配通道
  • 虚拟设备是指使用虚拟技术把独占设备改造成为多用户共享的设备,也就要把一台具体的物理设备变换为若干个逻辑设备。
  • 设备独立性是指用户程序独立于物理设备的一种特性,引入设备的独立性是为了提高设备分配的灵活性和设备的利用率等。
  • 为了实现逻辑设备名到物理设备名的映射,系统必须设置一张逻辑设备表LUT,能够将应用程序中所使用的的逻辑设备名映射成物理设备名,并提高该设备驱动程序的入口地址。
  • 缓冲技术能解决设备间传送速率不匹配问题;虚拟技术能提高外设的利用率。
  • 中断屏蔽可以影响中断响应次序。
  • 构成SPOOLING系统的基本条件是要有大容量、高速度的外设作为输入井和输出井,同时利用SPOOLING技术,进城不必等待I/O操作的完成,提高了系统和I/O设备的利用率。
  • 假设从磁盘把一块数据输入到缓冲区的时间为T,操作系统将该缓冲区中的数据传送到用户区的时间为M,而CPU对这一数据块的处理时间为C。可把系统对每一块数据的处理时间表示为 MAX(C, T) + M。
  • 缓冲区由缓冲头部和缓冲体组成
  • 设备驱动程序是一种低级的系统例程,它通常分为驱动I/O设备工作程序设备中断处理程序
  • 进行设备分配时所需的数据结构主要有设备控制表、系统设备表、控制器控制表、通道控制表
  • 在通道进行I/O操作期间,要访问两个内存固定的单元通道地址字和通道状态字
  • 为了记录设备的分配情况,操作系统应设置一张系统设备表SDT和3个控制块:设备控制块、控制器控制块和通道控制块
  • 磁盘的驱动调度先进行移臂或查找时间优化调度,再进行旋转或等待时间优化调度。
  • 为实现CPU与外部设备的并行工作,系统引入了通道和中断硬件机制。
  • 列举I/O控制的四种方式:程序直接控制方式、DMA、中断驱动方式、通道控制方式
  • 通道技术的引入,实现了CPU与设备、设备与设备、进程与进程的并行。
  • 逻辑设备表LUT的主要功能室实现设备的独立性和设备的灵活性
  • 设备管理中引入缓冲机制主要是为了改善CPU和I/O之间速度不匹配的矛盾、实现I/O设备之间的并行性、有效减少I/O次数
  • *实现虚拟设备的条件:硬件上必须配置大容量的磁盘,要有中断装置和通道或DMA,具有CPU与通道或DMA并行工作的能力。
    • 感觉答案有点问题
  • 采用SPOOLING技术,操作员只要启动预输入程序工作,就可以把作业存放到输入井中等待处理。
  • I/O中断是使CPU和通道协调工作的一种手段,通道借助I/O中断请求CPU进行干预,CPU根据I/O中断时间了解输入输出操作的执行情况。
  • 在中断驱动方式中,CPU是以字节为单位对I/O进行干预的;DMA是以数据块为单位进行干预的;I/O通道是以一组数据块为单位进行干预的。
  • 按照信息交换的单位划分,I/O设备可以分为字符型设备和块设备