7.2.2 设备独立性
1.概念
为了提高操作系统的可适应性和可扩展性,提出设备独立性(即设备无关性)的概念。设备独立性的基本含义是:用户编写的应用程序独立于具体使用的物理设备,即用户只需说明使用哪类设备,如打印机或显示器(逻辑设备名),无需指定某个具体设备(物理设备名),操作系统根据当前请求,以及设备分配情况在相应类别的设备中选择一个空闲设备并将其分配给申请者。这样,应用程序可以访问任意I/O设备而无需事先指定设备,即使设备更换了,应用程序也不用改变。
设备独立性具有如下优点:
1)使得设备分配更加灵活,提高设备资源利用率。如果申请者指定某个具体设备,但该设备因为正被占用,即使其他同类设备空闲,系统也不能分配,这样就会造成资源浪费以及进程不必要的等待。
2)易于实现I/O重定向,这样可以避免因为所指定设备状态的改变或更换I/O操作的设备而对应用程序进行修改。
2.逻辑设备和物理设备
逻辑设备是实际物理设备属性的抽象,是指同一类设备,并不局限于某个具体设备。在应用程序中,使用逻辑设备名称来请求使用某类设备,根据用户指定的逻辑设备,由操作系统将其转换成对应的具体物理设备,因为在实际执行时,必须使用物理设备名称。
3.设备独立性的实现
与硬件(或设备)紧密相关的软件之一是设备驱动程序,为实现设备独立性,必须在驱动程序之上设置设备独立性软件,该软件执行所有设备的公有操作,建立逻辑设备与物理设备的映射机制,并向用户层软件提供统一接口。
建立逻辑设备与物理设备的映射机制,就是完成逻辑设备名到物理设备名的转换,这需要设置一张逻辑设备表(Logical Unit Table,LUT),主要包括逻辑设备名、物理设备名以及设备驱动程序入口地址等。LUT的设置有两种方式:
1)整个系统设置一张LUT。LUT中不允许有相同的逻辑设备名,这就要求所有用户不使用相同的逻辑设备名。
2)为每个用户设置一张LUT。