【操作系统】 输入/输出(I/O)管理

I/O设备

I/O控制方式

  1. 程序直接控制方式。计算机从外部设备读取数据到存储器,每次读一个字的数据。对读入的每个字,CPU 需要对外设状态进行循环检查知道确定该字已经在 I/O 控制器的数据寄存器中。
  2. 中断驱动方式。允许 I/O 设备主动打断 CPU 的运行并请求服务,从而“解放” CPU,使得其向 I/O 控制器发送读命令后可以继续做其他有用的工作。
  3. DMA 方式。DMA(直接存储器)方式的基本思想是在 I/O 设备和内存之间开辟直接的数据交换通路,彻底“解放” CPU。DMA特点如下:(1)基本单位是数据块 (2)所传送的数据,是从设备直接送入内存的,或者相反 (3)仅在传送一个或多个数据块的开始和结束时,才需 CPU 干预,整块数据的传送是在 DMA 控制器的控制下完成的。

    为了在主机与控制器之间实现成块数据的直接交换,必须在 DMA 控制器中设置如下4类寄存器:

    • 命令/状态寄存器(CR)。用于接收从 CPU 发来的 I/O 命令或有关控制信息,或设备的状态。
    • 内存地址寄存器(MAR)。在输入时,它存放把数据从设备传送到内存的起始目标地址;在输出时,它存放由内存到设备的内存源地址。
    • 数据寄存器(DR)。用于暂存从设备到内存或从内存到设备的数据。
    • 数据计数器(DC)。存放本次要传送的字(节)数。
  4. 通道控制方式。I/O 通道是指专门负责输入/输出的处理机。I/O 通道是 DMA 方式的发展,它可以进一步减少 CPU 的干预,即把对一个数据块的读(或写)为单位的干预,减少为对一组数据块的读(或写)及有关控制和管理为单位的干预。I/O 通道与一般处理机的区别是:通道指令的类型单一没有自己的内存,通道所执行的通道程序是放在主机内存中的,也就是说通道与 CPU 共享内存。I/O 通道与 DMA 方式的区别是:DMA 方式需要 CPU 来控制传输的数据块大小、传输的内存位置,而通道方式中这些信息是由通道控制的。另外,每个 DMA 控制器对应一台设备与内存传递数据,而一个通道可以控制多台设备与内存的数据交换

 

整个I/O系统可以视为具有4个层次的系统结构,如下图:

 

各层次及其功能如下:

  1. 用户层  I/O 软件。实现与用户交互的接口,用户可直接调用在用户层提供的、与 I/O 操作有关的库函数,对设备进行操作。
  2. 设备独立性软件。用于实现用户程序与设备驱动器的统一接口、设备命令、设备保护及设备分配与释放等,同时为设备管理和数据传送提供必要的存储空间。
  3. 设备驱动程序。与硬件直接相关,负责具体实现系统对设备发出的操作指令,驱动 I/O 设备工作的驱动程序。
  4. 中断处理程序。用于保护被中断进程的 CPU 环境,转入相应的中断处理程序进行处理,处理完并恢复被中断进程的现场后,返回到被中断程序。
  5. 硬件设备。I/O 设备通常包括一个机械部件和一个电子部件。为了达到设计的模块性和通用性,一般将其分开:电子部件称为设备控制器(或适配器),在个人计算机中,通常是一块插入主板扩充槽的印制电路板;机械部件则是设备本身。

 

可寻址是块设备的基本特征。

共享设备必须是可寻址的和可随机访问的设备。

在操作系统中,通道技术指的是一种硬件技术。

字节多路通道用作连接大量的低速或中速 I/O 设备。数组选择通道用作连接多台告诉设备,但一段时间内只能执行一道通道程序。数组多路通道前两者优点结合。

通道控制设备控制器、设备控制器控制设备工作。

系统按照设备类型配置设备驱动程序。

 

I/O核心子系统

磁盘高速缓存。指利用内存中的存储空间来暂存从磁盘中读出的一系列盘块中的信息。因此,磁盘高速缓存逻辑上属于磁盘,物理上则是驻留在内存中的盘块。

 

在设备管理子系统中,引入缓冲区的主要目的如下:

  1. 缓和 CPU 与 I/O 设备间速度不匹配的矛盾。
  2. 减少对 CPU 的中断频率,放宽对 CPU 中断响应时间的限制。
  3. 解决基本数据单元大小(即数据粒度)不匹配的问题
  4. 提高 CPU 与 I/O 设别之间的并行性。

 

根据系统设置缓冲器的个数,缓冲技术可以分为如下几种:

  1. 单缓冲。在块设备输入时,假定从磁盘把一块数据输入缓冲区的时间为 T,操作系统将该缓冲区中的数据传送到用户区的时间为 M,而 CPU 对这一块数据处理的时间为 C。单缓冲区处理每块数据的用时为 max( C, T ) + M。
  2. 双缓冲。双缓冲区处理每块数据的用时为 max( C + M, T )。
  3. 循环缓冲。包含多个大小相等的缓冲区,每个缓冲区中有一个链接指针指向下一个缓冲区,最后一个缓冲区指针指向第一个缓冲区,多个缓冲区构成一个环形。循环缓冲用于输入/输出时,还需要有两个指针 in 和 out。
  4. 缓冲池。由多个系统公用的缓冲区组成,缓冲区按其使用情况可以形成三个队列:空缓冲队列、装满输入数据的缓冲队列和装满输出数据的缓冲队列。还应具有4种缓冲区:用于收容输入数据的工作缓冲区、用于提取输入数据的工作缓冲区、用于收容输出数据的工作缓冲区及用于提取输出数据的工作缓冲区。

 

设备分配方式有静态分配和动态分配两种:

静态分配主要用于对独占设备的分配,在用户作业开始执行前,由系统一次性分配该作业所要求的全部设备、控制器(如通道等)。

动态分配在进程执行过程中根据执行需要分配。

 

为了实现设备独立性,在应用程序中使用逻辑设备名来请求使用某类设备,在系统中设置一张逻辑设备表(LUT),用于将逻辑设备名映射为物理设备名。

 

为了缓和 CPU 的高速性与 I/O 设备低速性之间的矛盾,引入了脱机输入/输出技术。该技术利用专门的外围控制机,将低速 I/O 设备上的数据传送到高速磁盘上,或者相反。SPOOLing 的意思是外部设备同时联机操作,又称假脱机技术,是操作系统中采用的一项将独占设备改造成共享设备的技术。

SPOOLing 系统的组成如图:

输入井和输出井是指在磁盘上开辟出的两个存储区域。

输入缓冲区和输出缓冲区是指在内存中开辟的两个缓冲池。

 

SPOOLing 系统的主要特点有:提高了 I/O 速度;将独占设备改造为共享设备;实现了虚拟设备功能。

SPOOLing 技术实质上是一种以空间换时间的技术,请求分页技术中的页面调度算法是以时间换空间的技术

 

设备的独立性主要是指用户使用设备的透明性,即用户程序和实际使用的物理设备无关。

提高单机资源利用率的关键技术是多道程序设计基础。

SPOOLing 技术不需要外围计算机的支持。

SPOOLing 系统由预输入程序、井管理程序和缓输出程序组成。

 

以上内容均来自王道书籍及相关课程等

posted @ 2019-08-21 20:15  宁任翃  阅读(1060)  评论(0编辑  收藏  举报