880 likes | 1.03k Views
第五章 设备管理. 5.1 I/O 系统. 在一个计算机系统中,除了需要直接用于 I/O 和存储信息的设备外,还需要有相应的设备控制器。在大、中型计算机系统中,还需要有 I/O 通道或 I/O 处理机,由这些设备以及相应的总线构成了 I/O 系统。. 机械部分. 电子部分. I/O 设备包括 : 机械组件 电子组件 电子组件是设备控制器 有可能控制多台设备. 5.1.1 I/O 设备. 1 、 I/O 设备的类型 1 ) 按传输速率分类 低速(键盘、鼠标、语音输入) 中速 打印机 高速 磁带机、磁盘机、光盘机 2 ) 按信息交换的单位分类
E N D
5.1 I/O系统 • 在一个计算机系统中,除了需要直接用于I/O和存储信息的设备外,还需要有相应的设备控制器。在大、中型计算机系统中,还需要有I/O通道或I/O处理机,由这些设备以及相应的总线构成了I/O系统。
机械部分 电子部分 • I/O 设备包括: • 机械组件 • 电子组件 • 电子组件是设备控制器 • 有可能控制多台设备
5.1.1 I/O设备 • 1、I/O设备的类型 • 1)按传输速率分类 • 低速(键盘、鼠标、语音输入) • 中速 打印机 • 高速 磁带机、磁盘机、光盘机 • 2)按信息交换的单位分类 • 块设备——用于存储信息(磁盘) • 字符设备——用于数据的输入和输出(终端机、打印机) • 3)按设备的共享属性分类 • 独占设备(临界资源) • 共享设备 • 虚拟设备
5.1.1 I/O设备 • 2、设备与控制器之间的接口 • 接口中有三种类型的信号 • 数据信号 • 控制信号 • 状态信号 数据信号线 至设备 控制器 缓冲 转换器 状态信号线 信号数据 控制逻辑 控制信号线
5.1.2 设备控制器 • 控制一个或多个I/O设备 • 是CPU与I/O设备的接口,接收CPU传来的命令,控制I/O设备工作 • 可分为两类 • 用于控制字符设备的控制器 • 用于控制块设备的控制器
5.1.2 设备控制器(续) • 1、设备控制器的基本功能 • 接收和识别命令 • 数据交换 • 标识和报告的设备状态 • 地址识别 • 数据缓冲 • 差错控制 • 2、设备控制器的组成 • 设备控制器与处理机的接口 • 设备控制器与设备的接口 • I/O逻辑
数据线 数据寄存器 控制/状态 寄存器 I/O逻辑 地址线 控制线
5.1.3 I/O通道 • 1、通道设备的引入 • 主要目的是为了建立独立的I/O操作,不仅使数据的传送能独立于CPU,而且也希望有关I/O操作的组织、管理、结束处理也尽量独立,以保证CPU有更多的时间去进行数据处理。 • I/O通道是特殊的处理机,执行I/O指令,控制I/O操作,与CPU的区别:只执行I/O指令,没有内存
2、通道类型 • 字节多路通道(多个非分配子通道,数据传送按字节) • 字节多路通道以字节为单位传输信息,它可以分时地执行多个通道程序。当一个通道程序控制某台设备传送一个字节后,通道硬件就控制转去执行另一个通道程序,控制另一台设备传送信息 • 主要连接以字节为单位的低速I/O设备。如打印机,终端。以字节为单位交叉传输,当一台传送一个字节后,立即转去为另一台传送字节
数组选择通道( 一个分配子通道,数据传送按数组) • 选择通道是以成组方式工作的,即每次传送一批数据,故传送速度很高。选择通道在一段时间内只能执行一个通道程序,只允许一台设备进行数据传输 • 当这台设备数据传输完成后,再选择与通道连接的另一台设备,执行它的相应的通道程序。主要连接磁盘,磁带等高速I/O设备 选择通道
数组多路通道(多个非分配子通道,数据传送按数组)数组多路通道(多个非分配子通道,数据传送按数组) • 它结合了选择通道传送速度高和字节多路通道能进行分时并行操作的优点。它先为一台设备执行一条通道指令,然后自动转接,为另一台设备执行一条通道指令 • 主要连接高速设备。这样,对于连接多台磁盘机的数组多路通道,它可以启动它们同时执行移臂定位操作,然后,按序交叉地传输一批批数据。数据多路通道实际上是对通道程序采用多道程序设计的硬件实现
3、“瓶颈”问题 • 通道价格昂贵,数量较少,成为I/O瓶颈,造成系统吞吐量的下降。
磁盘驱动器 打印机 打印机 控制器 其它控制器 CPU 存储器 磁盘控制器 系统总线 图 总线型I/O系统结构 5.1.4 总线系统 • CPU、存储器以及I/O设备之间的联系通过总线来实现。 • ISA、EISA、VESA、PCI
5.2 I/O控制方式 I/O控制经历了4种方式,发展的规律是:尽量减少主机对I/O控制的干预,使主机更多的进行数据处理任务 5.2.1程序I/O方式 5.2.2中断驱动方式 5.2.3直接存储器访问方式
CPU I/O CPU 内存 I/O CPU I/O CPU 传送 完成? 完成 下条指令 向I/O控制器 发送命令 读I/O控制器 的状态 未就绪 检查 状态? 出错 从I/O控制器 中读入字 向存储器 中写字 未完 程序I/O方式
向I/O控制器 发布读块命令 CPU DMA CPU 内存 CPU I/O CPU做其它事 I/O CPU I/O CPU I/O CPU 中断 读DMA控制 器的状态 下条指令 DMA方式 向I/O控制器 发送命令 CPU做其它事 中断 读I/O控制器 的状态 检查 状态? 出错 从I/O控制器 中读入字 向存储器 中写字 未完 传送 完成? 中断驱 动方式 完成 下条指令
5.2.3直接存储器访问方式 • 1、DMA控制方式的引入(Direct Memory Access) • 特点: • (1)数据传输的基本单位是数据块,即CPU于I/O设备之间,每次传送至少是一个数据块。 • (2)所传送的数据是从设备直接送入内存的,或者相反。 • (3)仅在传送一个或多个数据块的开始和结束时,才需CPU干预,整块数据的传送是在控制器的控制下完成的。
5.2.3直接存储器访问方式(续) • 2、DMA控制器的组成 • 主机与DMA控制器接口 • DMA控制器与块设备的接口 • I/O控制逻辑 主机与DMA 控制器接口 DMA控制器与 块设备的接口 内存 CPU DR I/O 控制 逻辑 MAR count DC CR 命令 总线
5.2.3直接存储器访问方式(续) • 3、DMA工作过程(以磁盘读数据为例) 设置AR和DC初值 启动DMA传送命令 传送数据字 执行用户程序同时 准备下一次传送 存储器地址+1 字数寄存器-1 DC=0? 否 是 请求中断
5.2.4 I/O通道控制方式 • 1、 I/O通道控制方式的引入 • I/O通道控制方式是DMA方式的发展,它可进一步减少CPU的干预,即把对一个数据块的读(或写)为单位的干预,减少为对一组数据块的读(或写)及有关控制和管理的干预。同时实现CPU、通道、I/O设备三者的并行操作,提高系统资源利用率。
5.2.4 I/O通道控制方式(续) • 2、通道程序 • 它是由一系列的通道指令所构成。通道指令与一般的机器指令不同,在它的每条指令包含下列诸信息 • (1)操作码 • (2)内存地址 • (3)计数 • (4)通道程序结束位 • (5)记录结束标志
前3条指令:将813~892单元的80个字符和1034~1173单元的140个字符前3条指令:将813~892单元的80个字符和1034~1173单元的140个字符 及5830~5889单元的60个字符写成一个记录 第4条指令单独些一个具有300个字符的记录 第5、6条指令共写500个字符的记录 操作 P R 计数 内存地址 WRITE 0 0 80 813 WRITE 0 0 140 1034 WRITE 0 1 60 5830 WRITE 0 1 300 2000 WRITE 0 0 250 1850 WRITE 1 1 250 720
5.3 缓冲管理 • 5.3.1 缓冲的引入: • 1、缓和CPU与I/O设备间速度不匹配的矛盾。 • 2、减少对CPU的中断频率,放宽对中断响应时间的限制。 • 3、提高CPU和I/O设备之间的并发性。 9.6KBPS 9.6KBPS 9.6KBPS
5.3 缓冲管理(续) • 5.3.2 单缓冲和双缓冲 • 1、单缓冲 • 在设备和处理机之间设置一个缓冲器 用户进程 处理(C) 传送(M) 输入(T) 缓冲区 I/O设备 工作区 T4 T3 T1 T2 M3 M2 M1 C1 C2 C3 t
5.3 缓冲管理(续) • 5.3.2 单缓冲和双缓冲 • 2、双缓冲 • 在设备输入时,先将数据输入第一缓冲区,装满后便转向第二缓冲区。此时操作系统可从第一缓冲区中移出数据送用户进程区,接着由CPU对数据进行计算。 用户进程 缓冲区1 处理(C) 工作区 I/O设备 缓冲区2 T4 T3 T1 T2 M3 M2 M1 C1 C2 C3 t
5.3 缓冲管理(续) • 5.3.3 循环缓冲 • 将多缓冲组织成循环缓冲形式。 • 1、循环缓冲的组成 • 多个缓冲区:分三类 • (1)空缓冲区R • (2)已装满数据的缓冲区G • (3)现行工作缓冲区C • 多个指针:应设置三个 • (1)Nextg:指示计算进程下一个可用的缓冲区G; • (2)Nexti:指示输入进程下次可用的空缓冲区R; • (3)Current:指示计算进程正在使用的缓冲区单元。
nexti nexti R R R R G G G C G G current G G nextg nextg
5.3 缓冲管理(续) • 2、循环缓冲区的使用 • 1、Getbuf过程: • 每当计算进程要使用缓冲区中的数据时,可调用Getbuf过程。该过程将指针Nextg所指的缓冲区提供给进程使用,相应地,须把它改为现行工作缓冲区,并用Current指针指向该缓冲区的第1个单元,同时将Nextg移向下一个G缓冲区。类似地,当输入进程要使用空缓冲来装入数据时,也可调用Getbuf过程。 • 2、Releasebuf过程: • 当计算进程把G缓冲区中的数据提取完时,便可调用Releasebuf过程,将该缓冲区释放。此时,把该缓冲区由当前工作缓冲区C改为空缓冲区R。类似地,当输入进程将缓冲区装满时,也调用Releasebuf过程,将该缓冲区释放,并改为G缓冲区。
5.3 缓冲管理(续) • 3、进程同步 • 1、Nexti指针追赶上Nextg指针: • 这意味着输入进程输入数据的速度大于计算进程处理数据的速度,已把全部缓冲区装满。此时输入进程应该阻塞,直至计算进程把某个缓冲区的数据全部提取完,使之成为空缓冲R,并调用Releasebuf过程将它释放时,才将输入进程唤醒。这种情况被称为系统受计算限制。 • 2、Nextg指针追赶上Nexti指针: • 这意味着输入进程输入数据的速度低于计算进程处理数据的速度,使全部缓冲区都已被抽空。此时计算进程只能阻塞,直至输入进程又装满某个缓冲区,并调用Releasebuf过程将它释放时,才去唤醒计算进程。这种情况被称为系统受I/O限制。
5.3.4 缓冲池 缓冲池 收容输入 用户 程序 提取输入 hin sin 提取输出 收容输出 sout hout 4种工作缓冲区 3种缓冲队列 2个用于缓冲队列的过程
5.3.4 缓冲池 • 1、缓冲池的组成: • 至少应含有以下三种类型的缓冲区:(1)空缓冲区;(2)装满输入数据的缓冲区;(3)装满输出数据的缓冲区。 • 为了管理上的方便,可将相同类型的缓冲区链成一个队列,于是可形成以下三个队列: • (1)空缓冲队列emq; • (2)输入队列inq; • (3)输出队列outg。 • 四种工作缓冲区: • (1)用于收容输入数据的工作缓冲区; hin • (2)用于提取输入数据的工作缓冲区; sin • (3)用于收容输出数据的工作缓冲区; hout • (4)用于提取输出数据的工作缓冲区。 sout
5.3.4 缓冲池(续) • 2、Getbuf过程和Putbuf过程: • Procedure Getbuf(type) • begin • wait(RS(type)); • wait(MS(type)); • B(number):=Takebuf(type); • signal(MS(type)); • end; • Procedure Putbuf(type,number) • begin • wait(MS(type)); • Addbuf(type,number); • signal(MS(type)); • signal(RS(type)); • end
5.3.4 缓冲池(续) • 3、缓冲区的工作方式: • (1)收容输入工作方式; • (2)提取输入工作方式; • (3)收容输出工作方式; • (4)提取输出工作方式。 Getbuf(emq)hin Putbuf(inq,hin) 装数据 Getbuf(inq)sin Putbuf(emq,sin) 提数据 Getbuf(emq)hout Putbuf(outq,hout) 装数据 Getbuf(outq)sout Putbuf(emq,sout) 提数据 缓冲池 收容输入 用户 程序 提取输入 hin sin 提取输出 收容输出 sout hout
DCT1 设备控制表集合 DCT2 DCTn 设备控制表 5.4 设备分配 • 在多道程序环境下,系统中的设备不允许用户自行使用,而必须由系统分配。 • 5.4.1 设备分配中的数据结构 • 1、设备控制表DCT:
2、控制器控制表,通道表和系统设备表: (a ) (b) 表目1 … 表目i … (c) COCT 、CHCT和SDT表 (a)控制器表COCT;(b)通道表CHCT;(c)系统设备表SDT
5.4.2 设备分配时应考虑的若干因素 • 1、考虑设备的固有属性 • 独享设备 • 共享设备 • 虚拟设备 • 2、设备分配算法 • 先来先服务 • 优先级高者优先 • 3、设备分配中的安全性 • 安全分配方式 • 不安全分配方式
5.4.3 设备独立性 • 1、设备独立性——设备无关性 • 应用程序独立于具体使用的物理设备。逻辑设备与物理设备类似逻辑地址与物理地址 • 独立性优点: • 设备分配时的灵活性 • 易于实现I/O重定向
2、设备独立性软件: • 1)执行所有设备的公有操作; • 独立设备的分配与回收 • 逻辑设备名映射为物理设备名 • 设备保护 • 缓冲管理 • 差错控制 • 2)向用户层软件提供统一的接口。
3、逻辑设备到物理设备名映射的实现: • 1)逻辑设备表: • 该表的每一个表目中包含了三项:逻辑设备名、物理设备名、设备驱动程序的入口地址。 • 2)LUT的设置: • 两种方式: • (1)整个系统设置一张LUT; • (2)为每个用户设置一张LUT。 逻辑设备名 物理设备名 DRV 逻辑设备名 SDT指针
5.4.4 独占设备的分配程序 • 1、基本的设备分配程序: • (1)分配设备; • (2)分配控制器; • (3)分配通道。 • 2、设备分配程序的改进: • (1)增加设备的独立性; • (2)考虑多通路情况。
5.4.5 Spooling技术 • 1、什么是Spooling? • 在联机情况下实现的同时外围操作称为Spooling,或称为假脱机操作。 • 2、Spooling系统的组成 • 1)输入井和输出井; • 在磁盘上开辟的两个大存储空间。 • 2)输入缓冲区和输出缓冲区; • 3)输入进程SPi和输出进程SPo ;
输入进程SPi 输入进程SPo 磁盘 输入设备 输入井 输入缓冲区Bi 输出设备 输出井 输出缓冲区Bo
3、共享打印机 • 用户请求打印机 • SPOOLing系统 • 输出进程在输出井中为之申请一个空闲磁盘块区,将打印的数据送入其中 • 输出进程再为用户进程申请一张空白的用户请求打印表,将用户的打印要求填入其中 • 如果打印机空闲,输出进程将从请求打印队列的队首取出一张请求打印表,从输出井传送到内存缓冲区,再由打印机打印 • 如果队列不空,一直打印下去,直到请求打印队列空时阻塞
4、Spooling系统的特点: • 1)提高了I/O速度; • 2)将独享设备改造为共享设备; • 3)实现了虚拟设备功能。
5.5 设备处理 • 设备处理程序通常又称为设备驱动程序,主要任务是接收上层软件发来的抽象要求,把它转换为具体要求后,发送给设备控制器,启动设备执行;此外,它传送设备控制器发来的信号到上层软件。