Skip to content

与设备无关的 I/O 软件

目录


参考资料:


为了方便用户和提高 OS 的可适应性与可扩展性,在现代 OS 的 I/O 系统中,都无一例外地增加了与设备无关的 I/O 软件,以实现设备独立性,也称为设备无关性。

其基本含义是:应用程序中所用的设备,不局限于使用某个具体的物理设备。为每个设备所配置的设备驱动程序是与硬件紧密相关的软件。为了实现设备独立性,必须再在设备驱动程序之上设置一层软件,称为与设备无关的 I/O 软件,或设备独立性软件。

1 物理设备名、逻辑设备名

使用设备的物理名称,会使应用程序与系统中的物理设备直接相关。系统只能根据设备的物理名来分配,无法使用另外的相同设备(不同的物理设备名),如果物理设备被更改,那么与旧设备名称直接相关的应用程序将再也无法运行,所以该方式非常不灵活。

与绑定固定 IP 地址的通信类似

逻辑设备名:逻辑设备是抽象的设备名,不指定具体某一台设备。使用逻辑设备名还可实现 I/O 重定向。所谓 I/O 重定向,是指用于 I/O 操作的设备可以更换(即重定向),而不必改变应用程序。

I/O 重定向的数据结构:逻辑设备表

逻辑设备名称和物理设备名称的概念,与存储器管理中的逻辑地址和物理地址的概念非常类似,在程序执行时,必须先将逻辑地址转换为物理地址。类似地,为实现从逻辑设备名称到物理设备名称的转换,在系统中需要配置一张逻辑设备表。

2 与设备无关软件的功能构成

  1. 设备驱动程序的统一接口:抽象和具体实现进行分离。
  2. 缓冲管理:缓和 CPU 和 I/O 设备之间的矛盾、提高 CPU 的利用率。
  3. 差错控制:网络重传、磁盘重传、坏块记录等
  4. 设备的分配与回收:为了避免进程对独占设备的争夺,独占设备必须由系统统一分配,进程使用设备时,必须先提出申请。
  5. 独立于设备的逻辑数据块:用来屏蔽不同设备的数据交换单位、读取和传输速率的差异。

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

为了实现与设备的无关性,当应用程序请求使用 I/O 设备时,应当用逻辑设备名。但系统只识别物理设备名,因此在系统中需要配置一张逻辑设备表,用于将逻辑设备名映射为物理设备名。

逻辑设备表 LUT(Logical Unit Table)

逻辑设备表种包含如下三项:逻辑设备名物理设备名设备驱动程序的入口地址

当进程用逻辑设备名请求分配 I/O 设备时,系统为它分配一台相应的物理设备。与此同时,在逻辑设备表上建立一个表目,填上应用程序中使用的逻辑设备名和系统分配的物理设备名,以及该设备驱动程序的入口地址。

在第一次使用时建立

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

————————————————
版权声明:本文为 田园幻想乡 的原创文章,遵循 CC 4.0 BY-NC-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接: http://truraly.fun/课程笔记/操作系统原理/输入和输出系统/与设备无关的IO软件.html


发布时间:

最后更新时间:

Copyright © 2022 田园幻想乡 浙ICP备2021038778号-1