操作系统17———IO系统之概述

操作系统17————I/O系统之概述

一.目录

二.I/O系统的基本功能

I/O系统管理的主要对象是I/O设备和相应的设备控制器。其最主要的任务是,完成用户提出的I/O请求,提高I/O速率,以及提高设备的利用率,并能为更高层的进程方便地使用这些设备提供手段。

为了满足系统和用户的要求,I/O系统应该具有以下几方面的基本功能

1.隐藏物理设备的细节

I/O设备类型多,差异大。利用设备控制器(硬件)进行控制。隐藏物理设备的使用细节,仅向上层提高少量的,抽象的读写命令。

2.与设备的无关性

用户仅提供逻辑设备名来使用设备;例如打印时,它只需要提高读写命令和抽象的逻辑设备名即可,不必要指明是那一台打印机。

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

设备之间、设备与处理机之间均可并行操作。要求CPU快速响应I/O请求,减少对设备运行的干预时间。

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

对I/O设备进行控制是驱动程序的功能。目前对I/O设备有四种控制方式:① 采用轮询的可编程I/O方式;② 采用中断的可编程I/O方式;③ 直接存储器访问方式;④ I/O通道方式。 具体控制方式与设备的传输速率和传输数据单位有关。

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

以共享属性来分类,分为独占设备、共享设备。

  • 独占设备,进程应互斥地访问这类设备,即系统一旦把这类设备分配给了某进程后,便由该进程独占,直至用完释放。典型的独占设备有打印机、磁带机等。系统在对独占设备进行分配时,还应考虑到分配的安全性。   
  • 共享设备,是指在一段时间内允许多个进程同时访问的设备。典型的共享设备是磁盘,当有多个进程需对磁盘执行读、写操作时,可以交叉进行,不会影响到读、写的正确性。

6.错误处理

大多数的设备都包括了较多的机械和电气部分,运行时容易出现错误和故障。从处理的角度,可将错误分为临时性错误和持久性错误。对于临时性错误,可通过重试操作来纠正,只有在发生了持久性错误时,才需要向上层报告。

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

I/O软件向下与硬件相关,向上与文件系统、虚拟存储、用户直接交换,都需要 I/O系统来实现 I/O操作。目前均为层次式 I/O系统设计,单向调用。

1. I/O软件的层次

  • 用户层软件:实现与用户交互的接口
  • 设备独立性软件:用来实现用户程序与设备驱动器的统一接口,设备命名,设备保护,设备的保护已经设备的分配和释放等,同时为设备管理和数据传送提高必要的存储空间。
  • 设备驱动程序:实现系统对设备发出指令
  • 中断处理程序:用于保护被中断进程的CPU环境,转入相应的中断处理程序进行处理,处理完毕恢复现场。
    这里写图片描述

2.I/O系统中各模块直接的层次结构

下图展示了I/O系统中主要模块直接的关系:
这里写图片描述

a.I/O系统的上.下接口

  • I/O系统接口:它是I/O系统与上层系统之间的接口,向上层提供设备进行操作的抽象的I/O命令,以方便高层对设备的使用
  • RW/HW接口:它的上传是中断处理程序,下层是各种设备控制器。

处于两个接口直接的部分就是I/O系统
b.I/O系统的分层
I/O系统本身也可以分为如下三个层次:

  • 中断处理程序:直接与硬件进行交互,功能和上文相同
  • 设备驱动程序:将上次发来的抽象I/O请求转换为对I/O设备的具体命令和参数。每类驱动设备都不同,所以必须由设备制造商提供
  • 设备独立性软件:使I/o系统具有了设备无关性,即I/O设备独立与具体使用的物理设备。

四.I/O系统接口

在I/O系统与高层之间的接口中,根据设备类型的不同,又进一步分为若干个接口。比如块设备接口、流设备接口和网络接口。

1. 块设备接口

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

a.块设备
块设备是指,数据的存取和传输都是以数据块为单位的设备,典型的块设备如磁盘。该设备的基本特征就是传输速率较高,另一特征就是可寻址,即能指定数据的输入源地址和输出的目标地址,可随机的读写磁盘中任一块;磁盘中的I/O常采用DMA方式

b.隐藏了磁盘的二维结构
块设备接口将磁盘上所有扇区从0到n-1依次编号。这样编号以后,就把磁盘的二维结构改变成一种一维线性序列。

c.将抽象命令映射所为低层操作
块设备接口支持上层发来的对文件或设备的打开,读写,关闭等抽象命令,该接口将上述命令映射为设备可以识别的教低层的具体命令。

2.流设备接口

流设备接口是流设备管理程序与高层之间的接口。该接口又称为字符设备接口,用来控制字符设备的输入或者输出。

a.字符设备
字符设备是指,数据的存取和传输是以字符为单位的设备,如光盘和打印机。该设备的基本特征是传输速率低。另一特征是不可寻址,即不确定数据的输入源和输出地址。字符设备在输入输出时,常采用中断驱动方式。

b.get和put操作
由于字符设备是不可寻址的,因此对它只能采取顺序存取的方式,通常是为其建立一个字符缓冲区(队列)。用户程序获取或者输出字符的通常方式就是采取get和put操作,get操作用从字符缓冲区取得一个字符(到内存),他返回给调用者。而put操作用于把一个新字符(从内存)输送到字符缓存区中。以待送到设备。

c.in-control指令
字符设备类型非常多,且差异较大,为了可以能够统一的处理他们,通常在流设备中提供一种通用的in-control指令,在该指令中包含许多的参数,每一个参数表示一个与设备相关的特定功能。

由于大部分流设备都是独占设备,必须采取互斥的方式实现共享,为此,流设备接口了打开和关闭操作。使用这类设备时,必须先用打开操作来打开该设备,如果设备已经被打开,则表示它正在被其他进程使用。

3.网络接口

在现代OS中,都提供了面向网络的功能。但首先还需要通过某种方式把计算机连接到网络上。同时操作系统也必须提供相应的网络软件和网络通信接口,使计算机能通过网络与网络上的其它计算机进行通信或上网浏览。

五.I/O设备

I/O设备由机械部分和电子部分组成。机械部分即为一般的I/O设备,电子部分称为设备控制器或适配器(控制卡、接口卡、网卡)

1.I/O设备的类型

  • 按传输速率分类:低速(键盘)、中速(激光打印机)、高速设备(磁盘)
  • 按信息交换单位分类:块设备、字符设备
  • 按设备的共享属性:独占、共享、虚拟设备
  • 按设备的特性分类:存储设备,I/O设备

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

设备并不是直接与CPU进行通信,而是与设备控制器通信,因此,在I/O设备中应含有与设备控制器间的接口,在该接口中有三种类型的信号(见图所示),各对应一条信号线。
这里写图片描述

  • 数据信号线:用于在设备和设备控制器之间传送数据信号。  
  • 控制信号线:作为由设备控制器向I/O设备发生控制信号时的通道,该信号规定了设备将要执行的操作。   
  • 状态信号线:该信号线用传送指示设备当前状态的信号。

六.设备控制器

设备控制器的主要功能是:控制一个或者多个I/O设备,以实现I/O设备和计算器之间的数据交换,它是CPU和I/O设备之间的接口。设备控制器是一个可编址的设备,当它控制一个设备时具有唯一的设备地址。如果控制多个,则应该含有多个设备地址,每一个设备地址对应一个设备。

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

  • 接收和识别命令: 在控制器中应具有控制寄存器,用来存放接收的命令和参数,并进行译码
  • 数据交换:寄存器.实现CPU与控制器,控制器与设备间的数据交换
  • 标识和报告设备的状态:控制器中的状态寄存器记录设备的状态供CPU了解
  • 地址识别:地址译码器.每个设备都有一个地址,控制器必须能识别。
  • 数据缓冲区: 缓冲器.解决I/O设备与CPU、内存速度不匹配的矛盾
  • 差错控制:控制器兼管对由I/O设备传送来的数据进行差错检测

2.设备控制器的组成

由于设备控制器位于CPU与设备之间,它既要与CPU通信,又要与设备通信,还应具有按照CPU所发来的命令去控制设备工作的功能,因此,现有的大多数控制器都是由以下三部分组成:
这里写图片描述
a.设备控制器与处理机的接口  
该接口用于实现CPU与设备控制器之间的通信,在该接口有三类信号线:数据线,地址线和控制线和两类寄存器。信号线的作用见上文。

两类寄存器:

  • 数据寄存器:在控制器内可以有一个或者多个的数据寄存器,用于存放从设备或者cpu送来的数据。
  • 控制/状态寄存器:控制器内可以有一个或者多个这样的寄存器,用来存放冲突个cpu送来的控制信息和设备的状态信息。

b.设备控制器与设备的接口   
在一个设备控制器上有一个或者多个设备,相应的,在控制器中便有一个或者多个设备接口,每个接口中都存在数据、控制、状态三种信号。控制器中的I/O逻辑根据处理机发来的地址信号去选择一个设备接口。

c. I/O逻辑
I/O逻辑用与实现对设备的控制,它通过一组控制线与处理机交换,处理机利用该逻辑向控制器发送I/O命令,每当CPU要启动一个设备时,一方面将启动命令发给控制器,另一方面通过地址线把地址发送给控制器,由控制器对收到的地址进行译码,再根据所译出的命令对所选设备进行控制。

七.内存映像I/O

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

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

 在早期的计算机中,包括大型计算机,为实现CPU和设备控制器之间的通信,为每个控制寄存器分配一个I/O端口,这是一个8位或16位的整数,另外还设置了一些特定的I/O指令。

如,将CPU寄存器的内容存入内存的某个单元(k)中:Store cpu-reg , k
访问设备: io-Store cpu-reg, dev-no, dev-reg
缺点:访问内存和访问设备需要两种不同的指令。
这里写图片描述

2.内存映像I/O

在这种方式中,在编址上不再区分内存单元地址和设备控制器中的寄存器地址,都采用k。当k值处于0~n-1范围时,被认为是内存地址,若k大于等于n时,被认为是某个控制器的寄存器地址。 因此如果想要将CPU寄存器中的内容发送到设备控制器0的第一个寄存器内opcode,只需要用下面的一般存储命令
store cpu-reg,n

这里写图片描述

八.I/O通道

1.I/O通道设备

定义:通道是专门用于处理I/O的处理机,它控制内存和外设直接进行数据交换。
目的:减轻CPU的负担
工作方式:CPU向通道发送I/O命令,通道执行通道程序,完成I/O后向CPU发送中断信号。
通道与一般处理机的不同:指令类型单一,仅能执行I/O指令。通道没有自己的内存,通道程序放在主存中。

2.通道类型

根据信息交换方式的不同,可以将通道分为以下三种类型

a.字节多路通道
这是一种按字节交叉方式工作的通道。它通常都含有许多非分配型子通道,每一个子通道连接一台I/O设备,并控制该设备的I/O操作。这些子通道按时间片轮转方式共享主通道。

下图展示了字节多路通道的原理:
这里写图片描述
b.数组选择通道
字节多路通道不适于连接高速设备,这推动了按数组方式进行数据传送的数组选择通道的形成。 这种通道虽然可以连接多台高速设备,但它只含有一个分配型子通道,在一段时间内只能执行一道通道程序。这种方式导致通道的利用率很低。
c.数组选择多路通道
数组多路通道是将数组选择通道传输速率高和字节多路通道能使各子通道(设备)分时并行操作的优点相结合而形成的一种新通道。

3.“瓶颈”问题

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

解决瓶颈的问题的最有效方法,便是增加设备到主机间的通路而增加通道。即把一个设备连接到多个控制器上,而一个控制器又到多个通道,这样既解决了瓶颈问题,也增加了系统的可靠性。如下图
这里写图片描述

九.参考资料

《操作系统第四版》

猜你喜欢

转载自blog.csdn.net/qq_38499859/article/details/81085689