设备独立性软件

1、设备独立性的概念

—- 为了提高OS的可适应性可扩展性,在现代OS中都毫无例外地实现了设备独立性(Device Independence),也称为设备无关性。

—- 其基本含义是:应用程序独立于具体使用的物理设备。为了实现设备独立性而引入了逻辑设备物理设备这两个概念。

—- 在应用程序中,使用逻辑设备名称来请求使用某类设备;而系统在实际执行时,还必须使用物理设备名称

因此,系统需具有将逻辑设备名称转换为某物理设备名称的功能,这非常类似于存储器管理中介绍的逻辑地址和物理地址的概念。

—- 在应用程序中所使用的是逻辑地址,而系统在分配和使用内存时,必须使用物理地址。

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

1)设备分配时的灵活性

当应用程序(进程)以物理设备名称来请求使用指定的某台设备时,如果该设备已经分配给其他进程或正在检修,而此时尽管还有几台其它

的相同设备正在空闲,该进程却仍阻塞。但若进程能以逻辑设备名称来请求某类设备时,系统可立即将该类设备中的任一台分配给进程,仅

当所有此类设备已全部分配完毕时,进程才会阻塞。

2)易于实现I/O重定向

所谓I/O重定向,是指用于I/O操作的设备可以更换(即重定向),而不必改变应用程序。例如,我们在调试一个应用程序时,可将程序的所有

输出送往屏幕显示;而在程序调试完后,如需正式将程序的运行结果打印出来,此时便需将I/O重定向的数据结构—逻辑设备表中的显示终端

改为打印机,而不必修改应用程序。

2、设备独立性软件

—- 驱动程序是一个与硬件(或设备)紧密相关的软件。为了实现设备独立性,必须再在驱动程序之上设置一层软件,称为设备独立性软件

至于设备独立性软件和设备驱动程序之间的界限,根据不同的操作系统和设备有所差异,主要取决于操作系统设备独立性设备驱动程序

运行效率等多方面因素的权衡,因为对于一些本应由设备独立性软件实现的功能,可能由于效率等诸多因素,实际上设计在设备驱动程序

中。总的来说,设备独立性软件的主要功能可分为以下两个方面:

—– 执行所有设备的公有操作。这些公有操作包括:

— 1)对独立设备分配与回收

— 2)将逻辑设备名映射为物理设备名,进一步可以找到相应物理设备的驱动程序。

— 3)对设备进行保护,禁止用户直接访问设备

— 4)缓冲管理,即对字符设备和块设备的缓冲区进行有效的管理,以提高I/O的效率。

— 5)差错控制,由于在I/O操作中的绝大多数错误都与设备无关,故主要由设备驱动程序处理,而设备独立性软件只处理那些设备驱动程序

无法处理的错误。

— 6)提供独立于设备的逻辑块,不同类型的设备信息交换单位是不同的,读取和传输速率也各不相同。如字符型设备以单个字符为单位,

块设备是以一个数据块为单位,即使同一类型的设备,其信息交换单位大小也是有差异的,如不同磁盘由于扇区大小的不同,可能造成数据块

大小的不一致,因此设备独立性软件应负责隐藏这些差异,对逻辑设备使用并向高层软件提供大小统一的逻辑数据块。

—– 向用户层(或文件层)软件提供统一接口。无论何种设备,它们向用户所提供的接口应该是相同的。

例如,对各种设备的读操作,在应用程序中都使用read;而对各种设备的写操作,也都使用write。

3、逻辑设备名到物理设备名映射的实现

1)逻辑设备表

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

在该表的每个表目中包含了三项:逻辑设备名物理设备名设备驱动程序的入口地址。当进程用逻辑设备名请求分配I/O设备时,系统为它

分配相应的物理设备,并在LUT上建立一个表目,填上应用程序中使用的逻辑设备名和系统分配的物理设备名,以及该设备驱动程序的入口地址。

当以后进程再利用该逻辑设备名请求I/O操作时,系统通过查找LUT,便可找到物理设备和驱动程序。

2)LUT的设置问题

LUT的设置可采取两种方式:第一种方式是在整个系统中只设置一张LUT

由于系统中所有进程的设备分配情况都记录在同一张LUT中,因而不允许在LUT中具有相同的逻辑设备名,这就要求所有用户都不使用相同的

逻辑设备名。在多用户环境下这通常是难以做到的,因而这种方式主要用于单用户系统中。

第二种方式是为每个用户设置一张LUT。每当用户登录时,便为该用户建立一个进程,同时也为之建立一张LUT,并将该表放入进程的PCB中

 

 

 

 

来源:cany1000

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2016年6月9日
下一篇 2016年6月9日

相关推荐