1、I/O 系统第五章第五章 设备管理设备管理 5.1 I/O5.1 I/O系统系统 5.2 I/O5.2 I/O控制方式控制方式 5.3 5.3 缓冲管理缓冲管理5.4 5.4 设备分配设备分配5.5 5.5 设备处理设备处理I/O 系统上节回顾上节回顾1. I/O设备分类:传输速率、信息单位 、共享属性2. 设备控制器:l 功能l 组成3. I/O通道:通道类型,解决瓶颈问题4. I/O控制方式l 程序I/Ol 中断驱动l DMAl 通道控制I/O 系统5.3 缓缓 冲冲 管管 理理 5.3.1 缓冲的引入缓冲的引入 (1) 缓和CPU与I/O设备间速度不匹配的矛盾。 (2) 减少对CPU的中
2、断频率, 放宽对CPU中断响应时间的限制。 (3) 提高CPU和I/O设备之间的并行性。 I/O 系统图 5-10 利用缓冲寄存器实现缓冲 1位缓冲9.6 Kb/s8位缓冲寄存器送内存9.6 Kb/s8位缓冲寄存器9.6 Kb/s送内存(b)(a)(c)I/O 系统5.3.2 单缓冲和双缓冲单缓冲和双缓冲 1. 单缓冲单缓冲(Single Buffer) 工作区处理(C)缓冲区传送(M)输入(T)I/O设备(a)T1M1C1T2M2C2T3M3C3T4t(b)用户进程I/O 系统2. 双缓冲双缓冲(Double Buffer) 工作区用户进程缓冲区1缓冲区2I/O 设备T1(缓冲1)M1C1M
3、2C2M3C3T2(缓冲2)T3(缓冲3)M4C4T4(缓冲4)(a)(b)图 5-12 双缓冲工作示意图 I/O 系统图 5-13 双机通信时缓冲区的设置 缓冲区缓冲区A机B机(a) 单缓冲发送缓冲区接收缓冲区接收缓冲区发送缓冲区A机B机(b) 双缓冲I/O 系统5.3.3 循环缓冲循环缓冲 1. 循环缓冲的组成循环缓冲的组成 图 5-14 循环缓冲 RGGGRG165423NextiNextgRGGGRC165423NextiNextgcurrentI/O 系统2. 循环缓冲区的使用循环缓冲区的使用 (1) Getbuf过程。(2) Releasebuf过程。 I/O 系统3. 进程同步进
4、程同步 (1) Nexti指针追赶上Nextg指针。(2) Nextg指针追赶上Nexti指针。 I/O 系统5.3.4 缓冲池缓冲池(Buffer Pool) 1. 缓冲池的组成缓冲池的组成 对于既可用于输入又可用于输出的公用缓冲池, 其中至少应含有以下三种类型的缓冲区: 空(闲)缓冲区; 装满输入数据的缓冲区; 装满输出数据的缓冲区。 I/O 系统5.3.4 缓冲池缓冲池(Buffer Pool) 1. 缓冲池的组成缓冲池的组成 为了管理上的方便,可将相同类型的缓冲区链成一个队列,于是可形成以下三个队列: 1) 空缓冲队列emq。 2) 输入队列inq。 3) 输出队列outq。 四种工作
5、缓冲区:1)收容输入2)提取输入3)收容输出4)提取输出I/O 系统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 I/O 系统3. 缓冲区的工作方式缓冲区的工
6、作方式 四种缓冲区的工作方式 1、收容输入2、提取输入3、收容输出4、提取输出hinsoutsinhout收容输入提取输出用户程序提取输入收容输出缓冲池I/O 系统5.4 设设 备备 分分 配配 I/O 系统5.4.1 设备分配中的数据结构设备分配中的数据结构 I/O 系统1. 设备控制表设备控制表DCT 设备类型 type设备标识符:deviceid设备状态:等待/不等待 忙/闲指向控制器表的指针重复执行次数或时间设备队列的队首指针DCT 1DCT 2DCT n设备控制表集合图 5-16 设备控制表 I/O 系统2. 控制器控制表、控制器控制表、 通道控制表和系统设备表通道控制表和系统设备表
7、 图 5-17 COCT、 CHCT和SDT表 (c) 系统 设 备 表 SDT控制器标识符:controllerid控制器状态:忙/闲与控制器连接的通道表指针控制器队列的队首指针控制器队列的队尾指针通道标识符:channelid通道状态:忙/闲与通道连接的控制器表首址通道队列的队首指针通道队列的队尾指针(a) 控制器表COCT(b) 通道表CHCT表目 1表目 i设备类设备标识符DCT驱动程序入口I/O 系统控制器控制表、控制器控制表、 通道控制表、设备控制表的联接通道控制表、设备控制表的联接I/O设备控制器1控制器2通道1通道2存储器I/O设备I/O设备I/O设备CHCT COCT DCT
8、I/O 系统5.4.2 设备分配时应考虑的因素设备分配时应考虑的因素 1. 设备的固有属性设备的固有属性2. 设备分配算法设备分配算法3. 设备分配安全性设备分配安全性 I/O 系统1. 设备的固有属性设备的固有属性 I/O 系统2. 设备分配算法设备分配算法 I/O 系统3. 设备分配中的安全性设备分配中的安全性 I/O 系统5.4.3 设备独立性设备独立性 1. 设备独立性设备独立性(Device Independence)的概念的概念 为了提高OS的可适应性和可扩展性,在现代OS中都毫无例外地实现了设备独立性,也称为设备无关性。 其基本含义是: 应用程序独立于具体使用的物理设备。应用程序
9、独立于具体使用的物理设备。I/O 系统 1. 设备独立性设备独立性(Device Independence)的概念的概念引入了逻辑设备和物理设备这两个概念。在应用程序中, 使用逻辑设备名称来请求使用某类设备;在实际执行时, 还必须使用物理设备名称。因此,系统须具有将逻辑设备名称转换为某物理设备名称的功能,这非常类似于存储器管理中所介绍的逻辑地址和物理地址的概念。 I/O 系统 在实现了设备独立性的功能后, 可带来以下两方面的好处。 I/O 系统2. 设备独立性软件设备独立性软件 1) 执行所有设备的公有操作 对独立设备的分配与回收; 将逻辑设备名映射为物理设备名,进一步可以找到相应物理设备的驱
10、动程序; 对设备进行保护,禁止用户直接访问设备; 缓冲管理,即对缓冲区进行有效的管理 差错控制。设备独立性软件只处理那些设备驱动程序无法处理的错误。I/O 系统 2) 向用户层(或文件层)软件提供统一接口 无论何种设备, 它们向用户所提供的接口应该是相同的。 例如, 对各种设备的读操作,在应用程序中都使用read; 而对各种设备的写操作,也都使用write。 I/O 系统MCI的全称是Media Control Interface,是Microsoft提供的多媒体控制接口。MCI向Windows提供高层次的,独立于设备的,控制多种多媒体设备的命令。它的优点包括:1、MCI封装了各种多媒体设备的
11、具体控制细节,开发者只需要通过接口函数进行操作,就可以完全有效地对设备进行控制,缩短了多媒体开发时间,提高开发效率2、MCI是一种访问多媒体设备的高层次方法,独立于设备的品牌、控制参数差异等,提高了程序的可移植性和可靠性。3、MCI提供了功能强大的,可以在C语言直接调用的函数库。使得开发更加简单方便。I/O 系统MCI提供的基本操作:Open 使用 MCI_OPEN 命令打开一设备Close 使用 MCI_CLOSE 命令关闭一设备。 Play 使用 MCI_PLAY 命令播放一设备。 Pause 使用 MCI_PAUSE 命令暂停播放或记录。Stop 使用 MCI_STOP 命令停止播放或记
12、录。 Status 使用MCI_STATUS查询设备状态信息Set 使用MCI_SET设定播放属性Seek 使用MCI_SEEK定位到指定的播放位置I/O 系统3. 逻辑设备名到物理设备名映射的实现逻辑设备名到物理设备名映射的实现 1) 逻辑设备表2) LUT的设置问题 图 5-18 逻辑设备表 逻辑设备名物理设备名驱动程序入口地址/dev/tty/dev/printer3510242046逻辑设备名/dev/tty/dev/printer系统设备表指针35(a)(b)I/O 系统5.4.4 独占设备的分配程序独占设备的分配程序 1. 基本的设备分配程序基本的设备分配程序 1) 分配设备:检查
13、安全性 2) 分配控制器3) 分配通道 保证找到设备控制器通道的三者分配成功的链路I/O 系统2. 设备分配程序的改进设备分配程序的改进 缺点:1)以物理设备名I/O请求2)采用单通路结构,容易产生“瓶颈”改进:增加设备的独立性考虑多通路情况 I/O 系统5.4.5 SPOOLing技术技术 1. 什么是什么是SPOOLing为了缓和CPU的高速性与I/O设备低速性间的矛盾而引入了脱机输入、 脱机输出技术。 该技术是利用专门的外围控制机, 将低速I/O设备上的数据传送到高速磁盘上;或者相反。事实上, 当系统中引入了多道程序技术后,完全可以利用其中的一道程序,来模拟脱机输入时的外围控制机功能,把
14、低速I/O设备上的数据传送到高速磁盘上;再用另一道程序来模拟脱机输出时外围控制机的功能,把数据从磁盘传送到低速输出设备上。这样,便可在主机的直接控制下,实现脱机输入、 输出功能。 此时的外围操作与CPU对数据的处理同时进行, 我们把这种在联机情况下实现的同时外围操作称为SPOOLing (Simultaneaus Periphernal Operating On-Line),或称为假脱机操作。 I/O 系统2. SPOOLing系统的组成系统的组成 I/O 系统2. SPOOLing系统的组成系统的组成 I/O 系统2. SPOOLing系统的组成系统的组成 I/O 系统2. SPOOLing
15、系统的组成系统的组成 图 5-19 SPOOLing系统的组成 输入进程SPi输入进程SPo输入缓冲区Bi输出缓冲区Bo输入井输出井磁盘输入设备输出设备I/O 系统3. 共享打印机共享打印机 共享打印机技术已被广泛地用于多用户系统和局域网络中。 当用户进程请求打印输出时, SPOOLing系统同意为它打印输出, 但并不真正立即把打印机分配给该用户进程, 而只为它做两件事: 由输出进程在输出井中为之申请一个空闲磁盘块区, 并将要打印的数据送入其中; 输出进程再为用户进程申请一张空白的用户请求打印表,并将用户的打印要求填入其中, 再将该表挂到请求打印队列上。 I/O 系统4. SPOOLing系统的特点系统的特点 (1) 提高了I/O的速度。 (2) 将独占设备改造为共享设备。 (3) 实现了虚拟设备功能。