操作系统的目标就是要为设备的使用提供简单方便的统一接口,支持连接的可扩充性,并且优化I/O操作,实现最大的并发性。为了实现这一目标,操作系统需要在计算机进行输入输出时,管理和控制I/O设备,并提供适当的I/O操作支持,如驱动程序接口等。操作系统的这部分代码称为设备管理子系统。
6.1设备管理概述
设备分类:
1)按设备的信息组织方式分类
根据设备的控制复杂性及每次的数据传输单位等特性,将设备分为三大类:字符设备、块设备和网络设备。
优点:将控制不同I/O设备的驱动程序与操作系统的其他部分隔离开,为系统中增加和撤销设备提供便利。
a块设备
以块为单位进行数据传输的设备,块设备中的数据也是以块为单位进行组织和管理的。块的大小通常是2^n个字节。为了匹配CPU与块设备之间的传输速度的差异,块设备在进行I/O时,通常都需要利用缓冲技术。
常用的外部存储设备基本上是块设备,如硬盘、软盘、CD-ROM等。此外,也可将RAM模拟为RAM盘,作为块设备来使用。
b字符设备
字符设备以字符为单位(目前通常为8位,即一个字节)进行数据传输的设备,其速度较慢,主要用于与用户打交道。通常,字符设备的数据传输只能顺序进行,而不能进行随机定位,另外,在I/O过程中,一般不采用缓冲技术。
常见的字符终端、打印机、扫描仪、传感器和鼠标等都属于字符设备。
c网络设备
从传输速度上看,它通常快于字符设备而慢于块设备。传输单位上,以字节为单位。
但是,并非所有的设备都适用这种分类方法,例如,时钟和显示器,既不符合块身背,也不符合字符设备的特性。
2)按设备的共享性分类
从资源分配角度可以分为独占设备、共享设备和虚拟设备。
a独占设备
同一时刻只能被一个作业或进程使用的设备,多数低速设备,如打印机、绘图仪等,都属于独占设备。
b共享设备
共享设备允许若干个作业分时(并发)共享使用的设备,如磁盘等大多数直接存取设备等都属于共享设备。对于这些设备,几个进程或作业可分时(交替)地从其中读写信息。显然,当一个作业不能充分、连续地使用设备是,共享可提高设备的利用率。
c虚拟设备
为了提高设备的利用率,操作系统利用虚拟(spooling)技术,把物理上独占的设备转变成逻辑上共享的设备,即虚拟设备。在采用虚拟设备的情况下,作业都是通过虚拟设备使用物理上独占的设备。表面是并发的,但实际的物理设备还是由虚拟设备以独占方式使用。
3)按设备的使用特性
存储设备、I/O设备、终端设备及脱机设备等。
6.1.2设备控制器
I/O设备通常包含一个机械部件和一个电子部件。机械部件就是设备本身,电子部件称为设备控制器或适配器。它可以管理端口、总线或设备,实现设备与主机之间的数据传输。典型的设备控制器就是各种PCI或PCI EXPRESS卡,IDE接口一般就是一种PCI设备。
控制器卡上一般都有两个方向的接口,一个用于连接主机的总线,另一个用于连接设备。
设备控制器与设备之间的接口中包含三类信号:数据信号、控制信号和状态信号。设备控制器根据CPU提供的设备地址去选择一个设备接口。
每个控制器都有一些用来与CPU通信的寄存器(称为I/O端口),用于数据、控制命令和状态等信息的存储。为了寻址这些I/O端口,需要提供相应的寻址机制。在某些计算机上,这些寄存器占用内存地址空间的一部分,这种方案称作内存映像I/O。而在其他计算机上,I/O端口则使用专用的I/O地址(独立于内存单独编址)。PC混合采用了以上两种方案:显存采用了内存映像I/O,而其他I/O端口则是独立于内存编址。现代计算机设备更多的采用内存映像I/O。
设备控制器通常应具有如下功能:
a接收主机的控制命令。发出控制命令后,CPU转去执行其他操作。而控制器在收到控制命令后,独立控制设备完成相应的动作。当命令完成后,控制器发出一个中断,使CPU执行相应的中断处理程序。
b地址识别。能够根据CPU发来的地址信息,识别出其对应的设备。