【操作系统】输入输出系统

  • 格式:docx
  • 大小:36.50 KB
  • 文档页数:23

【操作系统】输入输出系统

六、输入输出系统

前言

I/O系统是OS的重要组成部分,用于管理诸如打印机和扫描仪等I/O设备,以及用于存储数据,如磁盘驱动器和磁带机等各种存储设备。由于I/O系统所含设备类型繁多,差异又非常大,致使I/O系统成为操作系统中最繁杂且与硬件最紧密相关的部分。

1.I/O系统的功能、模型和接口

1.1 I/O系统的基本功能

为了满足系统和用户的要求,I/O系统应具有下述几方面的基本功能,其中,第一、二方面的功能是为了方便用户使用I/O设备;第三、四方面的功能是用于提高CPU和I/O设备的利用率;第五、六方面的功能是为用户在共享设备时提供方便,以保证系统能有条不紊的运行,当系统发生错误时能及时发现错误,甚至能自动修正错误。

1. 隐藏物理设备的细节

2. 与设备的无关性

3. 提供处理机和I/O设备的利用率

4. 对I/O设备进行控制

5. 确保对设备的正确共享

6. 错误处理

1.2 I/O系统的层次结构和模型

1. I/O软件的层次结构

通常把I/O软件组织成四个层次,如下图,各层次及功能如下,图中的箭头表示I/O的控制流:

(1) 用户层I/O软件,实现与用户交互的接口,用户可直接调用该层所提供的、与I/O操作有关的库函数对设备进行操作。

(2) 设备独立性软件,用于实现用户程序与设备驱动器的统一接口、设备命名、设备的保护以及设备的分配与释放等,同时为设备管理和数据传送提供必要的存储空间。 (3) 设备驱动程序,与硬件直接相关,用于具体实现系统对设备发出的操作指令,驱动I/O设备工作的驱动程序。

(4) 中断处理程序,用于保存被中断进程的CPU环境,转入相应的中断处理程序进行处理,处理完毕再恢复被中断进程的现场后,返回到被中断的进程。

2. I/O系统中各种模块之间的层次视图

1.3 I/O系统接口

1. 块接口

块设备接口是块设备管理程序与高层之间的接口。该接口反映了大部分磁盘存储器和光盘存储器的本质特征,用于控制该类设备的输入或输出。

(1) 块设备。

(2) 隐藏了磁盘的二维结构。

(3) 将抽象命令映射为底层操作。

2. 流设备接口

流设备接口是流设备管理程序与高层之间的接口。该接口又称为字符设备接口,它反映了大部分字符设备的本质特征,用于控制字符设备的输入或输出。

(1) 字符设备。

(2) get和put操作。

(3) in-control指令。

3. 网络通信接口

在现代OS中,都提供了面向网络的功能。但首先还需要通过某种方式把计算机连接到网络上。同时操作系统也必须提供相应的网络软件和网络通信接口,是计算机能通过网络与网络上的其它计算机进行通信或上网浏览。由于网络通信接口涉及到许多关于网络方面的知识,如网络中的网络通信协议和网络的层次结构等,故在后面网络操作系统中介绍。

2.I/O设备和设备控制器

I/O设备一般是由执行I/O操作的机械部分和执行控制I/O的电子部件组成。通常将这两部分分开,执行I/O操作的机械部分就是一般的I/O设备,而执行控制I/O的电子部件则称为设备控制器或适配器(adapter)。在微型机和小型机中的控制器常做成印刷电路卡形式,因而也常称为控制卡、接口卡或网卡,可将它插入计算机的扩展槽中。在有的大、中型计算机系统中,还配置了I/O通道或I/O处理机。

2.1 I/O设备

1. I/O设备的类型

(1) 按使用特性分类

第一类是存储设备,也称外存、辅存,是用以存储信息的主要设备。该类设备存取速度较内存慢,但容量却大得多,价格也便宜。第二类就是I/O设备,它又可分为输入设备、输出设备和交互式设备。输入设备用来接收外部信息,如键盘、鼠标、扫描仪、视频摄像等。输出设备用于将计算机处理后的信息送向处理机外部的设备,如打印机、绘图仪等。交互式设备则是指集成的上述两类设备,主要是显示器,用于同步显示用户命令以及命令执行的结构。

(2) 按传输速率分类

按传输速度的高低,可将I/O设备分为三类。第一类是低速设备,其传输速率仅为每秒钟几个字节至数百个字节。典型的低速设备有键盘、鼠标器。第二类是中速设备,其传输速率在每秒钟数千个字节至数十万个字节。典型的中速设备有行式打印机、激光打印机等。第三类是高速设备,其传输速率在数十万字节至千兆字节。典型的高速设备有磁带机、磁盘机、光盘机等。

2. 设备与控制器之间的接口

通常,设备并不是直接与CPU进行通信,而是与设备控制器通信,因此,在I/O设备中应含有与设备控制器间的接口,在该接口中有三种类型的信号,各对应一条信号线,如下图。

(1) 数据信号线。

(2) 控制信号线。

(3) 状态信号线。

2.2 设备控制器 设备控制器的主要功能是,控制一个或多个I/O设备,以实现I/O设备和计算机之间的数据交换。它是CPU与I/O设备之间的接口,接收从CPU发来的命令,去控制I/O设备工作,使处理机能够从繁杂的设备控制事务中解脱出来。设备控制器是一个可编址的设备,当它仅控制一个设备时,它只有一个唯一的设备地址;若控制器可连接多个设备,则应含有多个设备地址,每一个设备地址对应一个设备。可把设备控制器分成两类:一类是用于控制字符设备的控制器,另一类是用于控制设备的控制器。

1. 设备控制器的基本功能

(1) 接收和识别命令。

(2) 数据交换。

(3) 标识和报告设备的状态。

(4) 地址识别。

(5) 数据缓冲区。

(6) 差错控制。

2. 设备控制器的组成

(1) 设备控制器与处理机的接口。

(2) 设备控制器与设备的接口。

(3) I/O逻辑。

2.3 内存映像I/O

驱动程序将抽象I/O命令转换出的一系列的命令、参数等数据装入设备控制器的相应寄存器,由控制器来执行这些命令,具体实施对I/O设备的控制。这一工作可用如下两种方法完成:

1. 利用特定的I/O指令

2. 内存映像I/O

2.4 I/O通道

1. I/O通道的引入

虽然在CPU与I/O设备之间增加了设备控制器后,已能大大减少CPU对I/O的干预,但当主机所配置的外设很多时,CPU的负担仍然很重。为此,在CPU和设备控制器之间又增设了I/O通道(I/O Channel)。其主要目的是为了建立独立的I/O操作,不仅使数据的传送能独立于CPU,而且也希望有关对I/O操作的组织、管理及其结束处理尽量独立,以保证CPU有更多的时间去进行数据处理;或者说,其目的是使一些原来由CPU处理的I/O任务转由通道来承担,从而把CPU从繁杂的I/O任务中解脱出来。在设置了通道后,CPU只需向通道发送一条I/O指令,通道在收到该指令后,便从内存中取出本次要执行的通道程序,然后执行该通道程序,仅当通道完成了规定的I/O任务后,才向CPU发中断信号。

实际上,I/O通道是一种特殊的处理机。它具有执行I/O指令的能力,并通过执行通道(I/O)程序来控制I/O操作。但I/O通道又与一般的处理机不同,主要表现在以下两个方面:一是其指令类型单一,这是由于通道硬件比较简单,其所能执行的命令,主要局限于与I/O操作有关的命令;二是通道没有自己的内存,通道所执行的通道程序是放在主机的内存中的,换而言之,是通道与CPU共享内存。

2. 通道类型

由于外围设备的类型较多,且其传输速率相差甚大,因而使通道具有多种类型。这里,根据信息交换方式的不同,可把通道分成以下三种类型。

(1) 字节多路通道(Byte Multiplexor Channel)

(2) 数组选择通道(Block Selector Channel)

(3) 数组多路通道(Block Multiplexor Channel)

3. “瓶颈”问题

由于通道价格昂贵,致使机器中所设置的通道数量势必较少,这往往又使它成了I/O的瓶颈,进而造成整个系统吞吐量的下降。

解决“瓶颈”问题的最有效的办法,便是增加设备到主机间的通路而不增加通道,换而言之,就是把一个设备连接到多个控制器上,而一个控制器连接到多个通道上。多通路方式不仅解决了“瓶颈”问题,而且提高了系统的可靠性,因为个别通道或控制器的故障不会使设备和存储器之间没有通路。

3.中断机构和中断处理程序 中断在操作系统中有着特殊重要的地位,它是多道程序得以实现的基础,没有中断,就不可能实现多道程序,因为进程之间的切换是通过中断来完成的。另一方面,中断也是设备管理的基础,为了提高处理机的利用率和实现CPU与I/O设备并行执行,也必需有中断的支持。中断处理程序是I/O系统中最低的一层,它是整个I/O系统的基础。

3.1 中断简介

1. 中断和陷入

(1) 中断

中断是指CPU对I/O设备发来的中断信号的一种响应。CPU暂停正在执行的程序,保留CPU环境后,自动地转去执行该I/O设备的中断处理程序。执行完后,再回到断点,继续执行原来的程序。I/O设备可以是字符设备,也可以是块设备、通信设备等。由于中断是由外部设备引起的,故又称外中断。

(2) 陷入

另外还有一种由CPU内部事件所引起的中断,例如进程在运算中发生了上溢或下溢,又如程序出错,如非法指令、地址越界,以及电源故障等。通常把这类中断称为内中断或陷入(trap)。与中断一样,若系统发现了有陷入事件,CPU也将暂停正在执行的程序,转去执行该陷入事件的处理程序。中断和陷入的主要区别是信号的来源,即是来自CPU外部,还是CPU内部。

2. 中断向量表和中断优先级

(1) 为了处理上的方便,通常是为每种设备配以相应的中断处理程序,并把该程序的入口地址放在中断向量表的一个表项中,并为每一个设备的中断请求规定一个中断号,它直接对应于中断向量表的一个表项中。当I/O设备发来中断请求信号时,由中断控制器确定该请求的中断号,根据该设备的中断号去查找中断向量表,从中取得该设备中断处理程序的入口地址,这样便可以转入中断处理程序执行。

(2) 中断优先级

然而实际情况是:经常会有多个中断信号源,每个中断源对服务要求的紧急程度并不相同,例如,键盘终端的中断请求的紧急程度不如打印机,而打印机中断请求的紧急程度又不如磁盘等。为此,系统就需要为它们分别规定不同的优先级。

3. 对多中断源的处理方式

对于多中断信号源的情况,当处理机正在处理一个中断时,又来了一个新的中断请求,这时应如何处理。例如,当系统正在处理打印机中断时,又收到了优先级更高的磁盘中断信号。对于这种情况,可有两种处理方式:屏蔽(禁止)中断与嵌套中断。

3.2 中断处理程序

当一个进程请求I/O操作时,该进程将被挂起,直到I/O设备完成I/O操作后,设备控制器便向CPU发送一个中断请求,CPU响应后便转向中断处理程序,中断处理程序执行响应的处理,处理完后解除相应进程的阻塞状态。

中断处理程序的处理过程可分为以下几个步骤:

(1) 测定是否有未响应的中断信号。

(2) 保护被中断进程的CPU环境。

(3) 转入相应的设备处理程序。

(4) 中断处理

(5) 恢复CPU的现场并退出中断。

4.设备驱动程序

4.1 设备驱动程序概述

1. 设备驱动程序的功能

为了实现I/O系统的高层与设备控制器之间的通信,设备驱动程序应具有以下功能:

(1) 接收由与设备无关的软件发来的命令和参数,并将命令中的抽象要求转换为与设备相关的底层操作序列。