8.1  输入/输出管理概念

8.1.1输入/输出管理

输入/输出管理(简称I/O管理)是指对数据传输控制和对计算机系统中除中央处理机、主存储器之外的所有其他设备的管理。


8.1.2设备的分类

一类是存储设备,是计算机用来存储信息的设备,如磁盘、光盘、磁带等。
另一类是I/O设备包括输入设备和输出设备两类;输入设备如键盘、光字符阅读机、电传输入机、数字化仪、模数转换器等。输出设备是计算机用来“影响”或“控制”外部世界的设备。它将计算机加工好的信息输出给外部世界。输出设备有宽行打印机、激光打印机、数模转换器、绘图仪等。
设备按传输的信息特点来分类:
字符设备:有些设备上的信息是以字符为单位组织的,这样的设备称为字符设备;
块设备:设备上的信息是以块为单位组织的,则称块设备。

提高设备利用率的关键是实现设备的并行操作。需要利用硬件提供通道、中断技术,以及各种外部设备提供的物理性能的支持来共同实现多作业及相应进程对各种外部设备的共享,并方便地完成它们所需进行的传输工作。完成这一功能的程序模块称为I/O管理模块。

8.1.3 I/O管理

I/O管理应使用户摆脱具体的、复杂 的物理设备特性的束缚,并提供方便灵活的使用外设的手段。为此,系统必须屏蔽一切物理设备特性,为用户建立虚环境。用户只要在程序中使用I/O管理模块提供的系统调用命令(指出设备逻辑名、操作方式、传输地址)就可同系统代为完成信息转换、设备分配、I/O控制等一切工作。
I/O功能模块的设计目标:
1.字符代码的独立性
各种外部设备使用的字符代码查能不同,用户在编制程序时也并不知道特定设备所用的字符代码的细节,因此I/O系统必须能识别各种不同的字符代码,并能以标准形式向用户程序提供数据。
2.设备独立性
设备独立性即用户(程序员)所使用的设备与机器中实际进行I/O操作的物理设备分离开来。用户(程序员)不用关心系统具体配置了哪些设备,也不需了解各种设备的使用方法及其特性,只要按照自己的习惯为传输工作中所需的设备起个逻辑名字,然后由操作系统根据当时设备的使用情况和用户所要求的操作,为用户的逻辑设备指派一个具体的物理设备,再由I/O控制程序完成所需的操作。
3.效率
I/O操作在计算机系统中经常成为瓶颈。为了提高外部设备的使用效率,需要合理地分配各种外部设备,努力提高外设和中央处理机以及各种外设之间工作的并行性。与此有关的技术主要有;中断、通道和缓冲技术。
4.设备处理的一致性

为了简便和避免出错,应用统一的方赤来处理所有的设备。但是,由于设备的特性又各不相同,所以,为了做到这一点,I/O系统应将设备的特性与处理它们的程序分离,使之只与设备本身紧密联系。这样,可使某一类设备共用一个设备处理程序,而操作的不同部分唯一地从有关具体设备的特性参数信息中得到。

8.1.4 I/O模块的管理功能

I/O模块的管理功能:
1.状态跟踪
为了能对设备实施分配和控制,系统要在任何时间内都能快速地跟踪设备状态。设备状态信息保留在设备控制块中,设备控制块动态地记录设备状态的变化及有关信息。
2.设备存取
在多用户环境中,系统必须决定一种策略,以确定谁将取得一台设备、使用多长时间,以及何时取设备。
3.设备分配
I/O管理的功能之一是设备分配。系统将齐备分配给进程(或作业),使用完毕时系统将其及时收回,收备重新分配。设备分配和回收可以在进程级进行,也可以作业级进行。在作业级,作业进入系统进就进行分配,退出系统时就收回全部资源,这称为静态分配。在进程级,当进程需要使用某设备而提出申请时进行分配,使用完毕后立即将其收回,这种分配一般称为动态分配。在I/O操作期间,设备动态地指派给进程。此时,设备是通过一个软通道联接到程序的。对于辅助存储器,大多数操作系统以动态或自动方式分配其存储空间。
4.设备控制
每个设备都响应带有相应参数的特定的I/O指令。I/O管理的设备控制模块负责将用户的I/O请求转换为设备能识别的I/O指令,并实施设备驱动和中断处理的工作。

8.1.5 设备独立性

(一)设备独立性概念
为了便于用户作业及相应进程在运行期间利用各类设备,I/O管理程序应能屏蔽设备的物理特性,为用户建立虚环境。现代操作系统一般采用“设备独立性”概念。
所谓设备独立性是指,用户在编制程序时所使用的设备与实际使用的设备无关,也就是在用户程序中仅使用逻辑设备名。
逻辑设备名是用户自己指定的设备句(或设备号),它是暂时的、可更改的。
而物理设备名是系统提供的设备的标准名称,它是永久的、不可更改的。
虽然程序在实际执行中必须使用实际的物理设备,就好像程序在主存中一定要使用物理地址一样,但在用户程序中则应避免使用实际的物理名,而采用逻辑设备名。这样做的道理就和用户程序中要使用逻辑地址而不使用物理地址的道理一样。设备管理的任务之一就是逻辑设备名转换成物理设备名。
(二)设备独立性的实现
设备独立性的类型:
①一个程序应独立于分配给它的某种类型的具体设备;
②程序应尽可能的与它所使用的设备类型无关;
设备独立性的实现:
fd1=open(“dev/lp”,O-WRONLY);
number1=write(fd1,buf1,count1);
(三)设备独立性的优点
逻辑设备特性是用户程序所涉及的该类物理设备特性的抽象,这使得程序所对应的进程在执行时可利用该类设备中的任一物理设备,而不必仅限于使用具体的某一个设备。
  图8.1  进程的设备信息和逻辑设备描述器

使用逻辑设备名,不仅可能方便用户,而且对于改善资源利用率、提高系统的可扩展性和可适应性都有很大好处,还可以提高系统的可适应性和可扩展性。
8.1.6   设备控制块
(一)设备控制块DCB
当设备装入系统时,系统会为每一个设备构建一张DCB表,以全面反映每台设备的硬件特性、连接和使用情况。
DCB的具体结构如表8.1所示。
表8.1  设备控制块dcb


设备名

设备属性

指向命令转换表的指针

在I/O总线上的设备地址

设备状态

当前用户进程指针

I/O请求队列指针

(二)设备转换表
每个I/O请求都要转换成调用一个能执行I/O操作的设备例程,设备转换表中就包含有设备特定的例程地址。通过操作码检索“设备转换表”,就可以找到相应的设备例程地址。

 
 Copyright © 2007 华中师范大学计算机科学系  All Rights Reserved