设备管理
6.1 概述
%A 6.2 I/O软件的组成
%A 6.3 I/O硬件特点
%A 6.4 有关技术
%A 6.5 设备处理
%A
%A 6.1 概述
%A 6.1.1 I/O管理的重要性
%A
%A 1.没有I/O设备的计算机就像一个没有轮子的汽车
%A
%A 2.I/O性能经常成为系统性能的瓶颈
%A (1)CPU性能不等于系统性能
%A 响应时间也是一个重要因素
%A (2)CPU性能越高,与I/O差距越大
%A 弥补:更多的进程
%A (3)进程切换多,系统开销大
%A
%A 3.操作系统庞大复杂的原因之一是:资源多、杂,并发,均来自I/O。
%A 4.理解I/O的工作过程与结构是理解操作系统的工作过程与结构的关键。
%A 5.I/O技术很实用。
%A 6.与其他功能联系密切,特别是文件系统
%A
%A 6.1.2 设备的分类
%A 1.按使用特性分
%A 存储型设备
%A 输入型设备(外设主机)
%A 输出型设备(主机外设)
%A 输入输出型设备
%A
%A 2.按数据组织分
%A 块设备
%A 以数据块为单位存储、传输信息
%A 字符设备
%A 以字符为单位存储、传输信息
%A
%A 3.按外部设备的从属关系分
%A 系统设备
%A 指操作系统生成时,登记在系统中的标准设备
%A (如终端、打印机、磁盘机等)
%A
%A 用户设备
%A 指在系统生成时,未登记在系统中的非标准设备。对于这类设备的处理程序由用户提供,并将其纳入系统,由系统代替用户实施管理。
%A (如A/D,D/A转换器,CAD所用专用设备)
%A
%A 4. 按资源分配角度分
%A 独占设备
%A 在一段时间内只能有一个进程使用的设备,一般为低速I/O设备。(如打印机,磁带等)
%A
%A 共享设备
%A 在一段时间内可有多个进程共同使用的设备,多个进程以交叉的方式来使用设备,其资源利用率高。(如硬盘)
%A
%A 虚设备
%A 在一类设备上模拟另一类设备,常用共享设备模拟独占设备,用高速设备模拟低速设备,被模拟的设备称为虚设备。
%A (将慢速的独占设备改造成多个用户可共享的设备,提高设备的利用率)
%A
%A (为了提高资源利用率,如SPOOLing技术就使用了虚设备技术――用硬盘模拟输入输出设备。)
%A
%A SPOOLing技术
%A 为解决独立设备数量少,速度慢,不能满足众多进程的要求,而且在进程独占设备期间,设备利用率比较低而提出的一种设备管理技术。
%A
%A 5.从程序使用角度分
%A 逻辑设备
%A 物理设备
%A
%A 6.1.3 设备管理的目的和任务
%A 1. 按照用户的请求,控制设备的各种操作,完成I/O设备与内存之间的数据交换(包括设备分配与回收;设备驱动程序;设备中断处理;缓冲区管理),最终完成用户的I/O请求。
%A
%A (1) 选择和分配I/O设备,以便进行数据传输操作
%A (2) 控制I/O设备与内存之间交换数据
%A
%A 2.向用户提供使用外部设备的方便接口,使用户摆脱繁琐的编程负担。
%A 方便性,友好界面,透明性
%A
%A 3. 充分利用各种技术(通道,中断,缓冲等)提高CPU与设备、设备与设备之间的并行工作能力,充分利用资源,提高资源利用率。
%A 并行性
%A 均衡性(使设备充分忙碌)
%A
%A 4. 保证在多道程序环境下,当多个进程竞争使用设备时,按一定策略分配和管理各种设备,使系统能有条不紊的工作。
%A
%A 5. 与设备无关性(设备独立性)
%A 用户在编制程序时,使用逻辑设备名,由系统实现从逻辑设备到物理设备(实际设备)的转换。
%A 用户能独立于具体物理设备而方便的使用设备。
%A
%A 用户申请使用设备时,只需要指定设备类型,而无须指定具体物理设备,系统根据当前的请求,及设备分配的情况,在相同类别设备中,选择一个空闲设备,并将其分配给一个申请进程。
%A
%A 统一性:
%A 对不同的设备采取统一的操作方式,在用户程序中使用的是逻辑设备。
%A
%A 优点:
%A 设备忙碌或设备故障时,用户不必修改程序。
%A 改善了系统的可适应性和可扩展性。
%A
%A 6.1.4 功能
%A 1.设备分配与回收
%A 记录设备的状态
%A 根据用户的请求和设备的类型,采用一定的分配算法,选择一条数据通路。
%A 2.建立统一的且独立于设备的接口
%A
%A 3.完成设备驱动程序,实现真正的I/O操作
%A 4.处理外部设备的中断处理
%A 5.管理I/O缓冲区
%A
%A 6.2 I/O软件的组成
%A I/O软件的基本思想是按分层的思想构成,较低层的软件要使较高层的软件独立于硬件的特性,较高层软件则要向用户提供一个友好的、清晰的、简单的、功能更强的接口。
%A
%A 6.2.1 I/O软件的目标
%A 在设计I/O软件时的一个关键概念是设备独立性。用户在编写使用软盘或硬盘上文件的程序时,无需为不同的设备类型而修改程序就可以使用。
%A
%A 与设备独立性密切相关的是统一命名这个目标。一个文件或一个设备的名字只应是一个简单的字符串或一个整数,它不应依赖于设备。
%A
%A 出错处理是I/O软件的另一个目标。一般来说,数据传输中的错误应尽可能地在接近硬件层上处理。
%A
%A 最后一个问题是可共享设备和独占设备的处理问题。
%A
%A 6.2.2 中断处理程序
%A 每个进程在启动一个I/O操作后阻塞起来,直到I/O操作完成并产生一个中断,由操作系统接管CPU后唤醒进程为止。
%A
%A 6.2.3 设备驱动程序
%A 与设备密切相关的代码放在设备驱动程序中,每个设备驱动程序处理一种设备类型
%A
%A 每一个控制器都设有一个或多个设备寄存器,用来存放向设备发送的命令和参数。设备驱动程序负责释放这些命令,并监督它们正确执行。
%A
%A 一般,设备驱动程序的任务是接收来自与设备无关的上层软件的抽象请求,并执行这个请求。
%A
%A 在设备驱动程序的进程释放一条或多条命令后,系统有两种处理方式,多数情况下,执行设备驱动程序的进程必须等待命令完成。
%A
%A 这样,在命令开始执行后,它阻塞自已,直到中断处理时将它解除阻塞为止。而在其它情况下,命令执行不必延迟就很快完成。
%A
%A 6.2.4 设备独立的软件
%A 虽然I/O软件中一部分是设备专用的,但大部分软件是与设备无关的。设备驱动程序与设备独立软件之间的确切界限是依赖于具体系统的。
%A
%A
%A 1.独立于设备的软件的基本任务是实现所有设备都需要的功能,并且向用户级软件提供一个统一的接口。
%A 2.如何给文件和设备这样的对象命名是操作系统中的一个主要课题。独立于设备的软件负责把设备的符号名映射到正确的设备驱动上。
%A
%A 3.设备保护
%A 系统如何防止无权存取设备的用户存取设备呢?
%A
%A 4.不同的磁盘可以采用不同的扇区尺寸。向较高层软件掩盖这一事实并提供大小统一的块尺寸,这正是设备独立软件的一个任务。它可将若干扇区合成一个逻辑块。这样,较高层的软件只与抽象设备打交道,独立于物理扇区的尺寸而使用等长的逻辑块。
%A
%A 5.缓冲技术
%A 6.设备分配
%A 7.出错处理
%A
%A 6.2.5 用户空间的I/O软件
%A 尽管大部分I/O软件都包含在操作系统中,但仍有一小部分是由与用户程序连接在一起的库过程,甚至完全由运行于核外的程序构成。系统调用,包括I/O系统调用,通常由库过程实现。
%A
%A
%A 这些过程所做的工作只是将系统调用时所用的参数放在合适的位置,由其它的I/O过程实际实现真正的操作。
%A
%A (1)用户进程层执行输入输出系统调用,对I/O数据进行格式化,为假脱机输入/输出作准备。
%A (2)独立于设备的软件实现设备的命名、设备的保护、成块处理、缓冲技术和设备分配。
%A
%A (3)设备驱动程序设置设备寄存器、检查设备的执行状态。
%A (4)中断处理程序负责I/O完成时,唤醒设备驱动程序进程,进行中断处理。
%A (5)硬件层实现物理I/O的操作。
%A
%A 6.3 I/O硬件特点
%A 6.3.1 设备组成
%A I/O设备一般由机械和电子两部分组成。把这两部分分开处理,以提供更加模块化,更加通用的设计。
%A
%A 1.设备
%A 机械部分是设备本身。
%A
%A
%A 2.设备控制器
%A 电子部分叫做设备控制器或适配器。
%A 在小型和微型机中,它常采用印刷电路卡插入计算机中。
%A
%A 控制器卡上通常有一个插座,通过电缆与设备相连。
%A 控制器和设备之间的接口是一个标准接口,它符合ANSI、IEEE或ISO这样的国际标准。
%A
%A 关注点:对该硬件如何进行程序设计,不考虑设备内部如何工作。
%A
%A 程序员:软件接口
%A 即硬件所接受的命令,它所完成的功能,报回的错误。
%A
%A 6.3.2 设备接口
%A 一次完整的I/O传送过程,典型地由一长列低级信号组成,这些信号启动设备所执行的操作,并通过测试设备状态来监控设备操作的进展。
%A
%A 一个I/O过程由四步组成:
%A 准备
%A 启动
%A 测试和等待
%A 结果检查和错误处理
%A 通过对设备接口寄存器组的读写完成
%A
%A 6.3.3 设备连接模式
%A 指I/O设备与CPU之间的连接方式,亦即将设备连接到一个计算机系统上的方式。在一个确定的连接模式下,从I/O设备到CPU间的所有连接成分构成了一条I/O路径(I/O链)。
%A
%A
%A 1.设备与主机间最基本的连接方式
%A 四个要素:
%A 设备接口形式
%A I/O指令形式
%A I/O地址空间分配及译码
%A 连线问题
%A
%A
%A (1)设备接口形式
%A * 端口地址译码
%A * 按照主机与设备的约定格式和过程接受或发送数据和信号
%A 计算机 设备
%A 设备 计算机
%A
%A * 将计算机的数字信号转换为机械部分能识别的模拟信号,或反过来。
%A * 实现一些诸如设备内部硬件缓冲存储、数据加工的提高性能或增强功能的任务
%A
%A (2)I/O指令形式与I/O地址是相互关联的,主要有两种形式:
%A 内存映像I/O模式
%A I/O专用指令
%A
%A 要考虑的几个问题:
%A 设备完成技术:系统如何知道设备的一次I/O操作是否完成?
%A 对CPU编程的I/O技术:CPU必须亲自完成I/O的启动与完成的处理,亲自执行所有数据在内存和设备之间的实际物理传送
%A
%A 进一步改善:
%A 使CPU利用率尽可能不被I/O降低,使CPU脱离I/O的负担
%A * 提高I/O本身的绝对速度
%A * 减少或缓解速度差距
%A * 使CPU不等待I/O
%A * 使CPU尽可能摆脱I/O
%A
%A 提高设备利用率
%A 在设备与主机的硬连接上,引入总线,节省连线并提供配置扩充与改变时的灵活性;引入控制器,扩大设备与主机间的相互适用范围
%A
%A (控制器与设备的分离,循环测试到中断,对CPU编程式的I/O到DMA,联机I/O到假脱机)
%A
%A 2.总线
%A 将计算机系统中的各个子系统(CPU、内存、外设等)相互连接,且连接是共享的。
%A 好处:低成本(一线多用)
%A 灵活性(易于增加设备
%A 便于两个计算机系统之间共享外设)
%A
%A 总线的缺点:
%A 本身形成了通讯瓶颈,限制I/O吞吐量
%A 总线分类:
%A 数据总线、地址总线、控制总线
%A
%A 3.控制器(适配器)
%A 电子部分:完成设备与主机间的连接和通讯
%A
%A CPU与控制器间通讯:
%A 单总线模型(微机、小型机)
%A 多总线模型(中、大型机)
%A
%A
%A
%A 每个控制器备有几个寄存器与CPU通讯。
%A 两种模式:
%A 1、存储器映像I/O,寄存器是内存地址空间的一部分
%A 2、专用I/O地址空间,每个控制器分配其中的一部分(IBM PC)
%A
%A
%A 操作系统将命令写入控制器寄存器中,以实现输入/输出。
%A 例如:IBM PC的软盘控制器可接收15条命令,READ、WRITE、FORMAT、SEEK、RECALIBRATE,命令可以带参数。它们被一起送入控制器的寄存器中。
%A
%A 当控制器接受一条命令后,可独立于CPU完成指定操作,CPU可以转去执行其它运算。命令完成时,控制器产生一个中断,CPU响应中断,控制转给操作系统。CPU通过读控制器寄存器中的信息,获得操作结果和设备状态。
%A
%A 控制器与设备之间的接口常常是一个低级接口。例如磁盘,可以按每个磁道8扇区,每个扇区512个字节进行格式化。然而,实际从驱动器出来的却是一连串的位流,以一个头标(preamble)开始,然后是一个扇区的4096位(512×8),最后是检查和或错误校验码(Error―C一C:ECC)。头标是在对磁盘格式化时写上的,它包括柱面和扇区数,扇区的大小和类似的一些数据。
%A
%A 控制器的任务是把串行的位流转换为字节块,并进行必要的错误修正。首先,控制器按位进行组装,然后存入控制器内部的缓冲区中形成以字节为单位的块。在对块验证检查和并证明无错误时,再将它复制到主存中。
%A
%A 4.设备完成技术
%A 一次I/O 传送过程:
%A 准备传送后处理
%A 例:一个打印机有两个I/O设备寄存器
%A 状态寄存器
%A 数据寄存器
%A
%A 设备的一次操作是否完成?
%A 测试设备的一个硬件信号。
%A 三种测试模式:
%A (1)等待I/O指令
%A (2)I/O测试指令
%A (3)中断技术
%A
%A 5.DMA
%A 数据在内存与I/O设备间的直接成块传送。
%A CPU在开始时向设备发“传送一块”命令,结束时进行相应处理。实际操作由DMA硬件直接完成。
%A
%A DMA需要附加的辅助硬件,且该DMA硬件属于设备的电子部分的功能(由控制器实现)。许多控制器,尤其是块设备控制器都支持DMA。
%A 以读磁盘为例,说明DMA怎样工作。
%A
%A 不用DMA时,磁盘如何读:首先,控制器从磁盘驱动器串行地一位一位地读一个块,直到将整块信息放入控制器的内部缓冲区中。其次,它做和校验计算,以核实没有读错误发生。然后控制器产生一个中断。CPU响应中断,控制转给操作系统。当操作系统开始运行时,它重复地从控制器缓冲区中一次一个字节或一个字地读这个磁盘块的信息,并将其送入内存中。
%A
%A 采用DMA方式时,允许DMA控制器接管地址线的控制权,直接控制DMA控制器与主存的数据交换。从而使磁盘设备与存贮器之间的数据传送不需要CPU介入,因而减轻了CPU负担。
%A 当采用DMA时,除向控制器提供要读块的磁盘地址外,还要向控制器提供两个信息:要读块送往主存的起始地址和要传送的字节数。
%A
%A
%A 当DMA硬件控制磁盘与存贮器之间进行信息交换时,每当磁盘把一个数据读入控制器的数据缓冲区时,DMA控制器取代CPU,接管地址总线的控制权,并按照DMA控制器中的存贮器地址寄存器内容把数据送入相应的内存单元中。然后,DMA硬件自动地把传送字节计数器减1,把存贮器地址寄存器加1,并恢复CPU对内存的控制权,DMA控制器对每一个传送的数据重复上述过程,直到传送字节计数器为“0”时,向CPU产生一个中断信号。当操作系统接管CPU控制权时,再无需做块复制的工作了。
%A
%A
%A 6.通道(I/O处理机)
%A 是可以执行程序的、负责且指负责操纵输入输出设备的、功能简单专用的、低速低性能的、造价低的专用处理机。负责管理设备与内存之间的数据传送的一切工作。
%A
%A 6.4 有关技术
%A 6.4.1 通道技术
%A 1.定义:通道是独立于CPU的专门负责数据输入/输出传输工作的处理机,对外部设备实现统一管理,代替CPU对输入/输出操作进行控制,从而使输入,输出操作可与CPU并行操作。
%A
%A 启动、结束处理、错误处理、DMA、代码转换、格式化等
%A 可以执行通道程序
%A
%A 2.引入通道的目的
%A 为了使CPU从I/O事务中解脱出来,同时为了提高CPU与设备,设备与设备之间的并行工作能力。
%A
%A 3. 分类
%A 1) 字节多路通道
%A 字节多路通道以字节为单位传输信息,它可以分时地执行多个通道程序。当一个通道程序控制某台设备传送一个字节后,通道硬件就控制转去执行另一个通道程序,控制另一台设备传送信息。
%A
%A 主要连接以字节为单位的低速I/O设备。如打印机,终端。 以字节为单位交叉传输,当一台传送一个字节后,立即转去为另一台传送字节。
%A
%A
%A 2)选择通道
%A 选择通道是以成组方式工作的,即每次传送一批数据,故传送速度很高。选择通道在一段时间内只能执行一个通道程序,只允许一台设备进行数据传输。
%A
%A 当这台设备数据传输完成后,再选择与通道连接的另一台设备,执行它的相应的通道程序。
%A 主要连接磁盘,磁带等高速I/O设备
%A
%A 3)成组多路通道
%A 它结合了选择通道传送速度高和字节多路通道能进行分时并行操作的优点。它先为一台设备执行一条通道指令,然后自动转接,为另一台设备执行一条通道指令。
%A
%A 主要连接高速设备
%A 这样,对于连接多台磁盘机的数组多路通道,它可以启动它们同时执行移臂定位操作,然后,按序交叉地传输一批批数据。数据多路通道实际上是对通道程序采用多道程序设计的硬件实现。
%A
%A 4.硬件连接结构
%A
%A 通道:执行通道程序,向控制器发出命令,并具有向CPU发中断 信号的功能。 一旦CPU发出指令,启动通道,则通道独立于CPU工作。一个通道可连接多个控制器,一个控制器可连接多个设备,形成树形交叉连接。
%A
%A 主要目的是启动外设时:
%A a 提高了控制器效率
%A b 提高可靠性
%A c 提高并行度
%A
%A
%A 交叉连接
%A
%A 5. 通道工作原理
%A 通道相当于一个功能简单的处理机,包含通道指令(空操作,读操作,写操作,控制,转移操作),并可执行用这些指令编写的通道程序。
%A
%A 1) 通道运算控制部件:
%A 通道地址字 CAW:记录通道程序在内存中的地址
%A 通道命令字 CCW:保存正在执行的通道指令
%A 通道状态字 CSW:存放通道执行后的返回结果
%A 通道数据字 CDW:存放传输数据
%A 通道和CPU共用内存,通过周期窃取方式取得
%A
%A 2) 通道命令及格式:
%A 用于I/O操作的命令主要有两种:
%A I/O指令:启动通道程序
%A 通道命令:对I/O操作进行控制。
%A 读、反读、写、测试设备状态的数据传输命令、用于设备控制的命令(磁带反绕、换页)、实现通道程序内部控制的转移命令。
%A
%A 命令格式一般包括:操作码、数据传输主存地址、特征位、计数器
%A 编制一个通道程序,从磁带机上读入200字节的信息,送入主存(1000)16 开始的单元。
%A 通道命令码:“07”反绕
%A “02”读
%A
%A CCW1 X “07” * X “40” 1;
%A CCW2 X “02” 1000 X “00” 200;
%A
%A 3) 工作原理:
%A CPU:执行用户程序,当遇到I/O请求时,可根据该请求生成通道程序放入内存(也可事先编好放入内存),并将该通道程序的首地址放入CAW中;之后执行“启动I/O”指令,启动通道工作。
%A
%A 通道:接收到“启动I/O指令后,从CAW中取出通道程序的首地址,并根据首地址取出第一条指令放入CCW中,同时向CPU发回答信号,使CPU可继续执行其它程序,而通道则开始执行通道程序,完成传输工作
%A
%A (通道程序完成实际I/O,启动I/O设备,执行完毕后,如果还有下一条指令,则继续执行, 否则表示传输完成)。
%A
%A 当通道传输完成最后一条指令时,向CPU发I/O中断,并且通道停止工作。CPU接收中断信号,从CSW中取得有关信息,决定下一步做什么。
%A
%A 6.4.2 缓冲技术
%A 1. 缓冲技术的引入
%A 凡是数据到达和离去速度不匹配的地方均可采用缓冲技术。在操作系统中采用缓冲是为了实现数据的I/O操作,以缓解CPU与外部设备之间速度不匹配的矛盾,提高资源利用率。
%A
%A 减少了I/O设备对处理器的中断请求次数,简化了中断机制,节省了系统开销。
%A 例子:一个程序在运行过程中不断要求打印。
%A
%A 2.缓冲区设置
%A 硬缓冲:在设备中设置缓冲区,由硬件实现。
%A 软缓冲:在内存中开辟一个空间,用作缓冲区。
%A
%A 3.缓冲区管理
%A 单缓冲
%A 双缓冲
%A 缓冲池:多个缓冲区连接起来统一管理,常采用多缓冲管理。
%A
%A 6.4.3 Spooling(虚拟设备)技术
%A 是一个虚拟设备,是一个资源转换技术(用空间,如输入,输出等换取CPU时间。)
%A
%A 6.5 设备处理
%A 6.5.1 设备分配与回收
%A 按一定策略分配设备, 控制器和通道(找一条通路)
%A 应考虑系统安全性,即不发生死锁。
%A
%A 设备独立性,即不能因为设备更换而影响程序的运行, 向用户屏蔽物理设备, 呈现给用户的一个操作简单的逻辑设备。
%A
%A 1. 数据结构:
%A 系统设备表:设备控制块DCB
%A 控制器控制块COCB
%A 通道控制块CHCB
%A 系统设备表SDF:记录系统中所有设备类型
%A
%A 2. 分配设备策略
%A 1) 独占设备的分配
%A 要考虑充分发挥效率,避免由于不合理的分配策略造成死锁。
%A
%A 静态分配:在进程运行前, 完成设备分配;运行结束时,收回设备
%A 缺点:设备利用率低
%A
%A 动态分配:
%A 在进程运行过程中,当用户提出设备要求时,进行分配, 一旦停止使用立即收回
%A 优点:效率好
%A 缺点:分配策略不好时, 产生死锁
%A
%A 2) 共享设备分配
%A 由于同时有多个进程同时访问,且访问频繁,就会影响整个设备使用效率,影响系统效率。因此要考虑多个访问请求到达时服务的顺序,使平均服务时间越短越好。
%A
%A 6.5.2 设备驱动程序
%A 任务:主要负责接收和分析从设备分配转来的信息,并根据设备分配的结果,结合具体物理设备特性完成以下具体工作。
%A
%A 1. 根据请求传输的数据量,组织I/O缓冲队列。
%A 2. 利用I/O缓冲对数据进行加工,包括数据格式处理和编码转换。
%A 3. 构造I/O程序(在有通道系统中,是通道程序)。
%A 4. 启动设备进行I/O操作。
%A
%A 6.5.3 I/O中断处理
%A 处理来自设备或通道的中断
%A
%A%A
%A
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。