I/O 软件的总体目标就是将软件组织成一种层次结构,低层软件用来屏蔽具体设备细节,高层软件则为用户提供一个简洁规范的界面。这种层次结构很好的体现了I/O 设计的一个关键的概念:设备无关性,其含义就是程序员写的软件无须修改就能读出软盘,硬盘以及CD-ROM等不同设备上的文件。
输入/ 输出系统的层次结构及各层次的功能如图11.1所示:
从图可以看出,用户进程的下层是设备无关的软件,在Linux 中,设备无关软件的功能大部分由文件系统去完成,其基本功能就是执行适用于所有设备的常用的输入/输出功能,向用户软件提供一个一致的接口。其结构如图11.2所示:
图11.1 输入/输出系统的层次结构及各层次的功能
图11.2
设备无关软件的功能
设备无关的软件具有以下特点:
· 文件和设备采用统一命名。设备无关软件负责将设备名映射到相应的驱动程序,一个设备名唯一地确定一个索引节点,索引节点中包含了主设备号和次设备号,通过主设备号可以找到相应的设备驱动程序,通过次设备号确定具体的物理设备。
·对设备提供的保护机制同文件系统一样都采用rwx权限。
·数据块的大小可能对于不同的设备其大小不一样,但操作系统屏蔽这一事实,向高层软件提供了统一的逻辑块的大小。
·为了解决数据交换速度的匹配问题,采用了缓冲技术,对于缓冲区的管理由文件系统去完成。
·块设备的存储分配也是由文件系统去处理。
·对于独占设备的分配和释放属于对临界资源的管理。