第6章设备管理 主要介绍I/0的控制方式和设备的分配和处理,具体包括I/0系统的硬件组成、I/0 的控制方式、缓冲技术、设备分配、 SPOOLing技术、设备驱动程序和I/0中断处理程序 磁盘存储器的管理等内容 6.1基本内容 6.1.1设备管理概述 1.设备管理的任务 设备管理是对计算机输入/输出设备的管理,是操作系统中最具有多样性和复杂性的部 分。其主要任务是 (1)按照用户的要求控制U0设备工作,完成用户所希望的I/0操作,以减轻用户编制程 序的负担。这是设备管理的基本任务。 (2)按照一定的算法把I/0设备分配给对该设备提出请求的进程,保证系统有条不紊地 工作。 (3)充分有效地使用I/0设备,尽可能提高这些设备的并行操作程度 2.设备管理的功能 为了完成上述任务,设备管理应具备以下功能 (1)设备分配按照设备类型和相应的分配算法决定将I/0设备分配给哪一个要求该设备 的进程。在分配设备的同时还要分配相应的控制器和通道,以保证I/0设备与CPU之间有传 递信息的通路。凡未分配到所需设备的进程被放入一个等待队列。实现这一功能的是设备 分配程序 (2)设备控制完成这一功能的是设备处理程序。为实现这一功能,设备处理程序首先根据 用户提出的I/0请求构成相应的通道程序,交给通道去执行:然后启动指定的设备进行I/0 操作;最后要对通道发来的中断请求作出及时的响应和处理。 (3)实现其他功能其他功能包括对缓冲区的管理功能。为改善系统的可适应性和可扩充 性,应使用户程序与实际使用的物理设备无关,即实现设备独立性。 6.1.2I/0系统的硬件结构 1.I/0系统的相关概念 (1)设备:是指计算机系统中除中央处理机、主存和系统控制台以外的所有设备。通常也 称为外部设备或I/0设备。 (2)输入输出操作:是主存与外设的介质之间的数据传输操作。多道程序设计技术引入系 统之后,I/0操作的能力不仅影响系统的通用性和扩充性,而且也成为系统综合处理能力及 性能价格比的重要因素 (3)通道:又称I/0处理机。它能完成主存和外设之间的信息传输,并能与中央处理机并 行操作。通道从属于中央处理机 (4)设备控制器:设备控制器是CPU与I/0设备之间的硬件接口,它接收从CPU发来的命 令,并去控制一个或多个设备。在微型机和小型机中,它通常是一块可以插入主板扩展槽的 印刷电路板,也叫接口卡 (5)总线系统:在计算机系统中的各部件,如CPU、存储器以及各种I/0设备之间的联 系,都是通过总线来实现的。它的性能是用总线的时钟频率、带宽和相应的总线传送速率等 指标来衡量的。随着计算机技术的发展,总线技术已由早期的ISA总线发展为EISA总线
第 6 章设备管理 主要介绍 I/0 的控制方式和设备的分配和处理,具体包括 I/O 系统的硬件组成、I/O 的控制方式、缓冲技术、设备分配、SPOOLing 技术、设备驱动程序和 I/O 中断处理程序、 磁盘存储器的管理等内容。 6.1 基本内容 6.1.1 设备管理概述 1.设备管理的任务 设备管理是对计算机输入/输出设备的管理,是操作系统中最具有多样性和复杂性的部 分。其主要任务是: (1)按照用户的要求控制 UO 设备工作,完成用户所希望的 I/0 操作,以减轻用户编制程 序的负担。这是设备管理的基本任务。 (2)按照一定的算法把 I/0 设备分配给对该设备提出请求的进程,保证系统有条不紊地 工作。 (3)充分有效地使用 I/0 设备,尽可能提高这些设备的并行操作程度。 2.设备管理的功能 为了完成上述任务,设备管理应具备以下功能: (1)设备分配按照设备类型和相应的分配算法决定将 I/0 设备分配给哪一个要求该设备 的进程。在分配设备的同时还要分配相应的控制器和通道,以保证 I/0 设备与 CPU 之间有传 递信息的通路。凡未分配到所需设备的进程被放入一个等待队列。实现这一功能的是设备 分配程序。 (2)设备控制完成这一功能的是设备处理程序。为实现这一功能,设备处理程序首先根据 用户提出的 I/O 请求构成相应的通道程序,交给通道去执行:然后启动指定的设备进行 I/0 操作;最后要对通道发来的中断请求作出及时的响应和处理。 (3)实现其他功能其他功能包括对缓冲区的管理功能。为改善系统的可适应性和可扩充 性,应使用户程序与实际使用的物理设备无关,即实现设备独立性。 6.1.2 I/0 系统的硬件结构 1.I/O 系统的相关概念 (1)设备:是指计算机系统中除中央处理机、主存和系统控制台以外的所有设备。通常也 称为外部设备或 I/0 设备。 (2)输入输出操作:是主存与外设的介质之间的数据传输操作。多道程序设计技术引入系 统之后,I/0 操作的能力不仅影响系统的通用性和扩充性,而且也成为系统综合处理能力及 性能价格比的重要因素。 (3)通道:又称 I/O 处理机。它能完成主存和外设之间的信息传输,并能与中央处理机并 行操作。通道从属于中央处理机。 (4)设备控制器:设备控制器是 CPU 与 I/O 设备之间的硬件接口,它接收从 CPU 发来的命 令,并去控制一个或多个设备。在微型机和小型机中,它通常是一块可以插入主板扩展槽的 印刷电路板,也叫接口卡。 (5)总线系统:在计算机系统中的各部件,如 CPU、存储器以及各种 I/O 设备之间的联 系,都是通过总线来实现的。它的性能是用总线的时钟频率、带宽和相应的总线传送速率等 指标来衡量的。随着计算机技术的发展,总线技术已由早期的 ISA 总线发展为 EISA 总线
VESA总线,进而又演变为当前广为流行的PCI总线 2.I/0设备类型 (1)按使用特性分类:存储设备;输入/输出设备;终端设备;脱机设备 (2)按所属关系分类:系统设备;用户设备。 (3)按资源分配角度分类:独占设备(如打印机、磁带机):共享设备(如磁盘):虚拟设 备(虚拟设备是指通过虚拟技术将一台独占的物理设备变战若干台逻辑设备,以供若干个进 程同时使用) 4)按传输数据数量分类:字符设备(如终端、打印机):块设备(如磁盘、磁带)。 (5)按传输速率分类:低速设备(如键盘、鼠标的传送速率仅为每秒钟几个字节至数百 个字节)、中速设备(如行式打印机、激光打印机的传送速率一般为每秒钟数千个字节至数 万个字节)和高速设备(如磁盘机、光盘机的传送速率可达每秒钟数百个字节至数十兆字 节) 3.I/0设备的物理特性 不同I/0设备具有不同的物理特性 (1)磁盘:磁盘是一种直接存取存储设备,可分为软盘和硬盘。磁盘的一个物理块的物 理地址由三部分组成:柱面号、磁道号和物理记录号。磁盘由若干个圆盘组成,每个圆盘有 上、下两个盘面,每个盘面有一个磁头,其中有一个称为伺服磁头,是用于控制定位的。磁盘 执行一次操作时,盘组旋转,由存取臂带动所有的磁头来回移动。盘组旋转一周,对应的磁头 在盘上的移动轨迹称磁道,一个磁道又可分许多扇区 (2)时钟:时钟也是一种外部设备,它既不是块设备,也不是字符设备。时钟可以以设 备驱动程序的形式进行工作 (3)终端:每台计算机都有一个或多个终端。终端的种类、型号较多。根据操作系统 如何与终端通信,终端可分为三类:(1)存储映像终端z(2)RS-232串行接口终端川3〉网络 接口终端。 4.I/0系统的硬件组织 (1)I/0控制方式:循环I/0测试方式:程序中断I/0方式:DMA方式:通道方式 (2)设备控制器:I/0设备通常由机械和电子部件组成。其中的电子部件称为设备控 制器,它处于CPU和设备之间,通常它由三部分组成:设备控制器与CPU的接口:设备控制 器与设备的接口:I/0逻辑。 6.1.3I/0控制方式 1.程序I/0方式 早期的计算机系统中,由于无中断机构,处理机对I/0设备的控制采用程序I/0方式,或 称"忙等”方式 2.中断驱动I/0控制方式 由于CPU可以与设备并行工作,比起程序I/0方式来,中断驱动方式成百倍地提高了CPU 的利用率,但它每传送几个字节(具体字节数由数据缓冲寄存器的大小决定)便请求一次中 断,故CPU仍需花费大量的时间来处理频繁的I/0中断。 3.直接存储器访问(DMA)I/0控制方式 在DMA控制方式下,仅在传送一个数据块的开始和结束时,才需CPU干预,整块数据的传 送是在DMA控制器的控制下直接完成的,因此,较之中断驱动方式,DMA控制方式又极大地提 高了CPU的利用率。但当我们需要一次传送多个数据块时,则仍须由CPU分别发出多条I/0 指令并进行多次中断处理。 4.I/0通道控制方式
VESA 总线,进而又演变为当前广为流行的 PCI 总线。 2.I/O 设备类型 (1)按使用特性分类:存储设备;输入/输出设备;终端设备;脱机设备。 (2)按所属关系分类:系统设备;用户设备。 (3)按资源分配角度分类:独占设备(如打印机、磁带机);共享设备(如磁盘);虚拟设 备(虚拟设备是指通过虚拟技术将一台独占的物理设备变战若干台逻辑设备,以供若干个进 程同时使用)。 (4)按传输数据数量分类:字符设备(如终端、打印机);块设备(如磁盘、磁带)。 (5)按传输速率分类:低速设备(如键盘、鼠标的传送速率仅为每秒钟几个字节至数百 个字节)、中速设备(如行式打印机、激光打印机的传送速率一般为每秒钟数千个字节至数 万个字节)和高速设备(如磁盘机、光盘机的传送速率可达每秒钟数百个字节至数十兆字 节)。 3.I/O 设备的物理特性 不同 I/0 设备具有不同的物理特性。 (1)磁盘:磁盘是一种直接存取存储设备,可分为软盘和硬盘。磁盘的一个物理块的物 理地址由三部分组成:柱面号、磁道号和物理记录号。磁盘由若干个圆盘组成,每个圆盘有 上、下两个盘面,每个盘面有一个磁头,其中有一个称为伺服磁头,是用于控制定位的。磁盘 执行一次操作时,盘组旋转,由存取臂带动所有的磁头来回移动。盘组旋转一周,对应的磁头 在盘上的移动轨迹称磁道,一个磁道又可分许多扇区。 (2)时钟:时钟也是一种外部设备,它既不是块设备,也不是字符设备。时钟可以以设 备驱动程序的形式进行工作。 (3)终端:每台计算机都有一个或多个终端。终端的种类、型号较多。根据操作系统 如何与终端通信,终端可分为三类:(1〉存储映像终端 z(2〉RS-232 串行接口终端川 3〉网络 接口终端。 4.I/0 系统的硬件组织 (1)I/0 控制方式:循环 I/0 测试方式;程序中断 I/0 方式;DMA 方式;通道方式。 (2)设备控制器:I/0 设备通常由机械和电子部件组成。其中的电子部件称为设备控 制器,它处于 CPU 和设备之间,通常它由三部分组成:设备控制器与 CPU 的接口;设备控制 器与设备的接口;I/O 逻辑。 6.1.3 I/O 控制方式 1.程序 I/0 方式 早期的计算机系统中,由于无中断机构,处理机对 I/0 设备的控制采用程序 I/O 方式,或 称"忙等"方式。 2.中断驱动 I/O 控制方式 由于CPU可以与设备并行工作,比起程序I/O方式来,中断驱动方式成百倍地提高了CPU 的利用率,但它每传送几个字节(具体字节数由数据缓冲寄存器的大小决定)便请求一次中 断,故 CPU 仍需花费大量的时间来处理频繁的 I/0 中断。 3.直接存储器访问(DMA)I/O 控制方式 在 DMA 控制方式下,仅在传送一个数据块的开始和结束时,才需 CPU 干预,整块数据的传 送是在 DMA 控制器的控制下直接完成的,因此,较之中断驱动方式,DMA 控制方式又极大地提 高了 CPU 的利用率。但当我们需要一次传送多个数据块时,则仍须由 CPU 分别发出多条 I/0 指令并进行多次中断处理。 4.I/O 通道控制方式
I/0通道方式比DMA方式进一步减少了CPU对I/0的干预,它把以一个数据块的读(或写) 为单位的干预,减少为以一组数据块的读(或写)为单位的干预,同时,又实现了CP、通道和 I/0设备三者的并行操作,从而更有效地提高了整个系统的资源利用率。 (1)通道类型 ①字节多路通道:是为连接大量慢速外围设备而设置的。它以字节为单位交叉地工作 ②选择通道:它用于连接磁带、磁鼓和磁盘等快速设备,以成组方式工作。每次传送一 批数据,但在一段时间内只能为一台设备服务 ③数组多路通道:它类似于选择通道又类似于字节多路通道,按次序交叉传送一批批 信息,实质上是对通道程序采用多道程序设计技术的硬件实现 (2)多通路I/0系统 ①由于通道的成本高,所以通道的数量远比设备少。这样,会因通道数量不足而产生 种″瓶颈″现象,影响整个系统的处理能力 ②为了使设备能得到充分利用,在通道、控制器和设备的连接上,采用一个I/0设备 与多个控制器相连,一个控制器与多个通道相连。这样,既实现了多通路I/0系统,提高了设 备利用的灵活性,也提高了系统的可靠性 ③设备管理程序通过对所有通路上状态信息的管理,找出一条能用的通路来使用所请 求的设备。 (3)通道命令和通道程序 通道命令分为数据传送类、设备控制类和转移类三类。 每条通道命令由四个字段组成z操作码、数据主存始址、特征位、字节计数 在通道进行输入/输出操作期间,要访问两个固定内存单元:通道地址字(CAW)和通道状 态字(CSW)。 ①通道地址字(CAW):由存储保护钥和通道程序的起始地址组成 ②通道状态宇(CSW):包含有通道状态的编码信息。 (4)CPU和通道间的通讯 输入/输出指令:是中央处理机的指令。在一般计算机中,这类指令均为特权指令,只能 在管态下运行 CPU和通道间的通讯CPU和通道之间的关系是主从关系,CPU是主设备,通道是从设备。 其通讯方式是 ①由CPU向I/O通道发I/0指令,命令通道工作,并检查其工作情况 ②通道以中断方式向CPU汇报,等候CPU处理。 6.1.4I/0系统的软件组织 1.I/0软件设计的目标 (1)与设备无关性。 (2)错误处理 (3)步/异步传输。 (4)能处理独占设备和共享设备的1/0操作 2.I/0采统的四个层次 为实现以上四个目标,I/0系统应组织成以下四个层次 (1)中断处理程序:它位于I/0系统的最低层。当进程需要进行I/0操作时,操作系统将 该进程挂起,即进入阻塞,直至I/0操作结束并发生中断 (2)设备驱动程序:它包括了所有与设备有关的代码。每一个设备驱动程序只处理一种设 备或一类密切相关的设备。其功能是从与设备无关的软件中接收抽象的请求,并执行该请
I/0通道方式比DMA方式进一步减少了CPU对I/0的干预,它把以一个数据块的读(或写) 为单位的干预,减少为以一组数据块的读(或写)为单位的干预,同时,又实现了 CPU、通道和 I/O 设备三者的并行操作,从而更有效地提高了整个系统的资源利用率。 (1)通道类型 ①字节多路通道:是为连接大量慢速外围设备而设置的。它以字节为单位交叉地工作。 ②选择通道:它用于连接磁带、磁鼓和磁盘等快速设备,以成组方式工作。每次传送一 批数据,但在一段时间内只能为一台设备服务。 ③数组多路通道:它类似于选择通道又类似于字节多路通道,按次序交叉传送一批批 信息,实质上是对通道程序采用多道程序设计技术的硬件实现。 (2)多通路 I/O 系统 ①由于通道的成本高,所以通道的数量远比设备少。这样,会因通道数量不足而产生一 种"瓶颈"现象,影响整个系统的处理能力。 ② 为了使设备能得到充分利用,在通道、控制器和设备的连接上,采用一个 I/0 设备 与多个控制器相连,一个控制器与多个通道相连。这样,既实现了多通路 I/0 系统,提高了设 备利用的灵活性,也提高了系统的可靠性。 ③设备管理程序通过对所有通路上状态信息的管理,找出一条能用的通路来使用所请 求的设备。 (3)通道命令和通道程序 通道命令分为数据传送类、设备控制类和转移类三类。 每条通道命令由四个字段组成 z 操作码、数据主存始址、特征位、字节计数。 在通道进行输入/输出操作期间,要访问两个固定内存单元:通道地址字〈CAW)和通道状 态字(CSW)。 ① 通道地址字(CAW):由存储保护钥和通道程序的起始地址组成。 ② 通道状态宇(CSW):包含有通道状态的编码信息。 (4)CPU 和通道间的通讯 输入/输出指令:是中央处理机的指令。在一般计算机中,这类指令均为特权指令,只能 在管态下运行。 CPU和通道间的通讯。CPU和通道之间的关系是主从关系,CPU是主设备,通道是从设备。 其通讯方式是: ①由 CPU 向 I/O 通道发 I/0 指令,命令通道工作,并检查其工作情况。 ②通道以中断方式向 CPU 汇报,等候 CPU 处理。 6.1.4 I/0 系统的软件组织 1.I/O 软件设计的目标 (1)与设备无关性。 (2)错误处理。 (3)步/异步传输。 (4)能处理独占设备和共享设备的 I/0 操作。 2.I/O 采统的四个层次 为实现以上四个目标,I/O 系统应组织成以下四个层次: (1)中断处理程序:它位于 I/O 系统的最低层。当进程需要进行 I/O 操作时,操作系统将 该进程挂起,即进入阻塞,直至 I/O 操作结束并发生中断。 (2)设备驱动程序:它包括了所有与设备有关的代码。每一个设备驱动程序只处理一种设 备或一类密切相关的设备。其功能是从与设备无关的软件中接收抽象的请求,并执行该请
求 (3)与设备无关的I/0软件:它提供适用于所有设备的常用I/0功能,并向用户层软件提 供一个一致的接口 (4)用户空间的I/0软件:这是与用户程序链接在一起的库例程,或是在核心外运行的程 序。系统调用包括I/0系统调用,通常是库例程调用 6.1.5缓冲技术 1.缓冲技术的基本思想 (1)缓冲技术的基本思想是在CPU和外设之间设立缓冲区,用于暂存CP和外设之间交换 的数据,从而缓和CPU与外设速度不匹配所产生的矛盾。 2)缓冲技术包括输入缓冲和输出缓冲 (3)缓冲区按使用方式分为专用缓冲区和通用缓冲区。 (4)缓冲区按组织方式分为单缓冲、双缓冲和缓冲池。 2.儿种缓冲区的特点与作用 (1)单缓冲:是指在操作系统中设置一个缓冲区,供用户进程和操作系统之间交换数据使 用 (2)双缓冲:就是在操作系统中为某一设备设置两个缓冲区,当一个缓冲区中的数据尚未 被处理时,可用另一缓冲区存放从设备读入的数据,以此来减小CPU和I/0设备之间速度的 差异。 (3)缓冲池:为了克服专用缓冲区的缺陷,可采用公用缓冲技术,即缓冲池。 缓冲池的组成:①空闲缓冲区;②装满输入数据的缓冲区;③装满输出数据的缓冲区。 缓冲池的工作方式有:①收容输入工作方式:②提取输入工作方式;③收容输出工作方式: ④提取输出工作方式 缓冲池管理的基本操作有 ① gets(type),从队列的队首摘下一个缓冲区。 ② putbus(type, number),将 number所指示的缓冲区,挂在type队列上 为了提高设备的读写效率,操作系统广泛采用了预先读与延迟写技术 6.1.7设备分配 每当进程提出I/0请求时,操作系统将按一定的策略把设备分配给它。在有的系统中 为了确保CPU和设各间能进行通信,还必须为进程分配相应的控制器和通道。 1.设备分配中的数据结构 在进行设备分配时,必须通过一些数据结构来了解系统中设备和控制器的情况。相应的 数据结构有:设备控制表(DCT)、控制器控制表(COCT)、通道控制表(CHCT)、和系统设备表 每个设备有一张设备控制表,用来记录相应设备的各种属性,其中的内容包括:设备的 类型、设备的标识符、设各的状态、设备等待队列指针、与设备连接的控制器的COCT指针 重复执行次数等。其中,设备的状态中有用来指示设备是否正在使用的”忙/闲″标志,以及设 备是否因相连的控制器或通道正在忙而无法启动的"等待/不等待"标志:设备等待队列指针 指向等待使用该设备的所有进程的PCB所组成的队列:重复次数则规定了设备在工作中发生 错误而未能成功传送数据时,可以重新传送的次数。 系统还为每个控制器都设置了一张用于记录相应控制器情况的控制器控制表,为每个 通道都设置了一张用于记录相应通道情况的通道控制表。 另外,整个系统中还设置了一张系统设备表,用来登记系统中所有设备的情况,每个设
求。 (3)与设备无关的 I/0 软件:它提供适用于所有设备的常用 I/0 功能,并向用户层软件提 供一个一致的接口。 (4)用户空间的 I/0 软件:这是与用户程序链接在一起的库例程,或是在核心外运行的程 序。系统调用包括 I/0 系统调用,通常是库例程调用。 6.1.5 缓冲技术 1.缓冲技术的基本思想 (1)缓冲技术的基本思想是在 CPU 和外设之间设立缓冲区,用于暂存 CPU 和外设之间交换 的数据,从而缓和 CPU 与外设速度不匹配所产生的矛盾。 (2)缓冲技术包括输入缓冲和输出缓冲。 (3)缓冲区按使用方式分为专用缓冲区和通用缓冲区。 (4)缓冲区按组织方式分为单缓冲、双缓冲和缓冲池。 2.儿种缓冲区的特点与作用 (1)单缓冲:是指在操作系统中设置一个缓冲区,供用户进程和操作系统之间交换数据使 用。 (2)双缓冲:就是在操作系统中为某一设备设置两个缓冲区,当一个缓冲区中的数据尚未 被处理时,可用另一缓冲区存放从设备读入的数据,以此来减小 CPU 和 I/O 设备之间速度的 差异。 (3)缓冲池:为了克服专用缓冲区的缺陷,可采用公用缓冲技术,即缓冲池。 缓冲池的组成:①空闲缓冲区;②装满输入数据的缓冲区;③装满输出数据的缓冲区。 缓冲池的工作方式有:①收容输入工作方式;②提取输入工作方式;③收容输出工作方式; ④提取输出工作方式。 缓冲池管理的基本操作有: ①getbd(type),从队列的队首摘下一个缓冲区。 ②putbuf(type,number),将 number 所指示的缓冲区,挂在 type 队列上。 为了提高设备的读写效率,操作系统广泛采用了预先读与延迟写技术。 6.1.7 设备分配 每当进程提出 I/O 请求时,操作系统将按一定的策略把设备分配给它。在有的系统中, 为了确保 CPU 和设各间能进行通信,还必须为进程分配相应的控制器和通道。 1.设备分配中的数据结构 在进行设备分配时,必须通过一些数据结构来了解系统中设备和控制器的情况。相应的 数据结构有:设备控制表(DCT)、控制器控制表(COCT)、通道控制表(CHCT)、和系统设备表 (SDT)。 每个设备有一张设备控制表,用来记录相应设备的各种属性,其中的内容包括:设备的 类型、设备的标识符、设各的状态、设备等待队列指针、与设备连接的控制器的 COCT 指针、 重复执行次数等。其中,设备的状态中有用来指示设备是否正在使用的"忙/闲"标志,以及设 备是否因相连的控制器或通道正在忙而无法启动的"等待/不等待"标志;设备等待队列指针 指向等待使用该设备的所有进程的 PCB 所组成的队列:重复次数则规定了设备在工作中发生 错误而未能成功传送数据时,可以重新传送的次数。 系统还为每个控制器都设置了一张用于记录相应控制器情况的控制器控制表,为每个 通道都设置了一张用于记录相应通道情况的通道控制表。 另外,整个系统中还设置了一张系统设备表,用来登记系统中所有设备的情况,每个设
备占一个表目,其中登记了相应设备的设备类型、设备标识符、设备控制表指针与设备驱动 程序入口地址等内容。 2.设备分配时应考虑的因素 (1)设备的固有属性 设备的固有属性决定了设各的使用方式,进而决定了设备的分配方式。某些设备的固有属 性要求相应设备在一段时间内只能被一个进程独享,对它们只能采用独享分配方式;而另 些设备则允许被多个进程同时共享,因此可将它们同时分配给多个进程使用;还有一些设备 虽然要求被独享,但可通过虚拟设备技术将它们改造成可同时共享的虚拟设备,此时便可将 它们同时分配给多个进程使用 (2)设备的分配算法 在一个系统中,请求设备的进程数目往往多于设备数目,故在多个进程竞争同个设备时, 系统必须按照某种算法将设备分配给其中的一个进程。常用的设备分配算法有先来先服务 和高优先权优先两种。 (3)设备分配中的安全性 在进程运行过程中,如果每当进程发出I/0请求后,它便进入阻塞状态,直到其I/0操作 完成时才被唤醒,则设备的分配不会引起死锁。如果进程发出I/0请求后仍可继续运行,需 要时又可发出下一个I/0请求,则可能会造成死锁,在这种分配方式下,设备分配程序应对每 次设备分配产生的新状态进行安全性检査,仅当检查结果是安全时,才能进行设备分配。 (4)设备独立性 设备的独立性是指应用程序独立于具体使用的物理设备,它可提高设备分配的灵活性 和设备的利用率。为了实现设备独立性,在应用程序中应使用逻辑设备名称来请求使用某类 设备:而系统中必须设置一张逻辑设备表LUT,其中每个表目中包含了逻辑设备名、物理设备 名和设备驱动程序入口地址三项:当应用程序用逻辑设备名请求分配I/0设备时,系统必须 为它分配相应的物理设备,并在L丌T中建立一个表目,以后进程利用该逻辑设备名请求U0操 作时,便可从中得到物理设各名和驱动程序入口地址 3独占设备的分配程序 在一个系统中,如果使用m通道并采用单通路的连接方式(即每个设备只与一个设备控 制器相连,而每个设备控制器又只与一个通道相连),则当某进程以物理设备名对一独占设 备提出Ⅰ/0请求时,系统的设备分配程序可按下述步骤进行设备分配。 (1)分配设备 根据进程给出的物理设备名,查找系统设备表SDT,从中找出该设备的设备控制表DCT 再检查DCT中的设备状态字段,若设备处于忙状态,则将请求I/0的进程插入设备等待队列; 否则,便按照一定的算法来计算本次设备分配的安全性。若分配不会导致系统进入不安全状 态,便将设备分配给请求进程:否则仍将该进程插入设备等待队列 (2)分配控制器 在系统把设备分配给请求进程后,再根据DCT中的与设备相连接的COCT指针找出对自 应的控制器控制表αCT,检査αoCT的状态字段。若控制器忙,便将请求进程插入控制器等待 队列:否则,便将该控制器分配给请求进程。 (3)分配通道 分配控制器后,通过C℃T又可找到与该控制器连接的通道的通道控制表CHCT检查CHCT 的状态字段。若通道忙,则将请求进程插入该通道的等待队列中;否则,便将该通道分配给进 为了获得设备独立性,进程应使用逻辑设备名来请求I/0,此时,系统先从SDT中找出第 个该类设备的DCT,若设备忙,则又可找出第二个该类设备的DCT,仅当所有该类设备都忙
备占一个表目,其中登记了相应设备的设备类型、设备标识符、设备控制表指针与设备驱动 程序入口地址等内容。 2.设备分配时应考虑的因素 (1)设备的固有属性 设备的固有属性决定了设各的使用方式,进而决定了设备的分配方式。某些设备的固有属 性要求相应设备在一段时间内只能被一个进程独享,对它们只能采用独享分配方式;而另一 些设备则允许被多个进程同时共享,因此可将它们同时分配给多个进程使用;还有一些设备 虽然要求被独享,但可通过虚拟设备技术将它们改造成可同时共享的虚拟设备,此时便可将 它们同时分配给多个进程使用。 (2)设备的分配算法 在一个系统中,请求设备的进程数目往往多于设备数目,故在多个进程竞争同个设备时, 系统必须按照某种算法将设备分配给其中的一个进程。常用的设备分配算法有先来先服务 和高优先权优先两种。 (3)设备分配中的安全性 在进程运行过程中,如果每当进程发出 I/O 请求后,它便进入阻塞状态,直到其 I/0 操作 完成时才被唤醒,则设备的分配不会引起死锁。如果进程发出 I/O 请求后仍可继续运行,需 要时又可发出下一个 I/O 请求,则可能会造成死锁,在这种分配方式下,设备分配程序应对每 次设备分配产生的新状态进行安全性检查,仅当检查结果是安全时,才能进行设备分配。 (4)设备独立性 设备的独立性是指应用程序独立于具体使用的物理设备,它可提高设备分配的灵活性 和设备的利用率。为了实现设备独立性,在应用程序中应使用逻辑设备名称来请求使用某类 设备:而系统中必须设置一张逻辑设备表 LUT,其中每个表目中包含了逻辑设备名、物理设备 名和设备驱动程序入口地址三项:当应用程序用逻辑设备名请求分配 I/0 设备时,系统必须 为它分配相应的物理设备,并在 LUT 中建立一个表目,以后进程利用该逻辑设备名请求 UO 操 作时,便可从中得到物理设各名和驱动程序入口地址 3.独占设备的分配程序 在一个系统中,如果使用 m 通道并采用单通路的连接方式(即每个设备只与一个设备控 制器相连,而每个设备控制器又只与一个通道相连),则当某进程以物理设备名对一独占设 备提出 I/O 请求时,系统的设备分配程序可按下述步骤进行设备分配。 (1)分配设备 根据进程给出的物理设备名,查找系统设备表 SDT,从中找出该设备的设备控制表 DCT。 再检查 DCT 中的设备状态字段,若设备处于忙状态,则将请求 I/O 的进程插入设备等待队列; 否则,便按照一定的算法来计算本次设备分配的安全性。若分配不会导致系统进入不安全状 态,便将设备分配给请求进程:否则仍将该进程插入设备等待队列。 (2)分配控制器 在系统把设备分配给请求进程后,再根据 DCT 中的与设备相连接的 COCT 指针找出对自 应的控制器控制表 COCT,检查 COCT 的状态字段。若控制器忙,便将请求进程插入控制器等待 队列:否则,便将该控制器分配给请求进程。 (3)分配通道 分配控制器后,通过COCT又可找到与该控制器连接的通道的通道控制表CHCT检查CHCT 的状态字段。若通道忙,则将请求进程插入该通道的等待队列中;否则,便将该通道分配给进 程。 为了获得设备独立性,进程应使用逻辑设备名来请求I/0,此时,系统先从SDT中找出第 一个该类设备的 DCT,若设备忙,则又可找出第二个该类设备的 DCT,仅当所有该类设备都忙