欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 资讯 > 输入/输出管理 II(设备独立性软件)

输入/输出管理 II(设备独立性软件)

2025/5/5 5:14:26 来源:https://blog.csdn.net/weixin_49272453/article/details/143984263  浏览:    关键词:输入/输出管理 II(设备独立性软件)

一、I/O 核心子系统

I/O 核心子系统要实现的功能其实就是中间三层(设备独立性软件、设备驱动程序、中断处理程序)要实现的功能。

我们需要重点理解和掌握的功能是:I/O 调度、设备保护、假脱机技术(SPOOLing 技术)、设备分配与回收、缓冲区管理(即缓冲与高速缓存)。

注:假脱机技术(SPOOLing 技术)需要请求 “磁盘设备” 的设备独立性软件的服务,因此一般来说假脱机技术是在用户层软件实现的。

1. I/O 调度

用某种算法确定一个好的顺序来处理各个 I/O 请求。

如:磁盘调度(先来先服务算法、最短寻道优先算法、SCAN 算法、C-SCAN 算法、LOOK 算法、C-LOOK 算法)。当多个磁盘 I/O 请求到来时,用某种调度算法确定满足 I/O 请求的顺序。同理,打印机等设备也可以用先来先服务算法、优先级算法、短作业优先等算法来确定 I/O 调度顺序。

2. 设备保护

操作系统需要实现文件保护功能,不同的用户对各个文件有不同的访问权限(如:只读、读和写等)。

在 UNIX 系统中,设备被看做是一种特殊的文件,每个设备也会有对应的 FCB 。当用户请求访问某个设备时,系统根据 FCB 中记录的信息来判断该用户是否有相应的访问权限,以此实现 “设备保护” 的功能。

二、设备独立性软件

也称与设备无关的软件,是 I/O 系统的最高层软件,它的下层是设备驱动程序,其间的界限因操作系统和设备的不同而有所差异。比如,一些本应由设备独立性软件实现的功能,也可能放在设备驱动程序中实现。这样的差异主要是出于对操作系统、设备独立性软件和设备驱动程序运行效率等多方面因素的权衡。总体而言,设备独立性软件包括执行所有设备公有操作的软件。

三、SPOOLing 技术(假脱机技术)

【总结】:

1. 脱机技术的概念

为了缓和 CPU 的高速性与 I/O 设备低速性之间的矛盾,引入了脱机输入/输出技术,它是操作系统中采用的一项将独占设备改造成共享设备的技术。该技术利用专门的外围控制机,将低速 I/O 设备上的数据传送到高速磁盘上,或者相反。当 CPU 需要输入数据时,便可直接从磁盘中读取数据;反之,当 CPU 需要输出数据时,也能以很快的速度将数据先输出到磁盘上。

引入多道程序技术后,系统便可利用程序来模拟脱机输入 / 输出时的外围控制机,在主机的直接控制下实现脱机输入 / 输出功能。SPOOLing 系统的组成如下图所示:

2. 假脱机技术

“假脱机技术” ,又称 “SPOOLing 技术” ,是用软件的方式模拟脱机技术。

1)输入井和输出井

在磁盘上开辟出的两个存储区域。输入井模拟脱机输入时的磁盘,用于收容 I/O 设备输入的数据;输出井模拟脱机输出时的磁盘,用于收容用户程序的输出数据。一个进程的输入(或输出)数据保存为一个文件,所有进程的数据输入(或输出)文件链接成一个输入(或输出)队列。

【vs】

2)输入进程和输出进程

输入/输出进程用于模拟脱机输入/输出时的外围控制机。用户要求的数据从输入设备经过输入缓冲区送到输入井,当 CPU 需要输入数据时,直接从输入井读入内存。用户要求输出的数据先从内存送到输出井,待输出设备空闲时,再将输出井中的数据经过输出缓冲区送到输出设备。

【vs】

3)输入缓冲区和输出缓冲区

在内存中开辟的两个缓冲区。输入缓冲区用于暂存由输入设备送来的数据,以后再传送到输入井。输出缓冲区用于暂存从输出井送来的数据,以后再传送到输出设备。

4)井管理程序

用于控制作业与磁盘井之间信息的交换。

3. 共享打印机原理分析

共享打印机是使用 SPOOLing 技术的实例。当用户进程请求打印输出时,SPOOLing 系统同意打印,但是并不真正立即把打印机分配给该进程,而由假脱机管理进程完成两项任务:

  • 在磁盘缓冲区中为之申请一个空闲盘块,并将要打印的数据送入其中暂存。

  • 为用户进程申请一张空白的用户请求打印表,并将用户的打印要求填入其中,再将该表挂到假脱机文件队列上。

这两项工作完成后,虽然还没有任何实际的打印输出,但是对于用户进程而言,其打印任务已完成。对用户而言,系统并非立即执行真实的打印操作,而只是立即将数据输出到缓冲区,真正的打印操作是在打印机空闲且该打印任务已排在等待队列队首时进行的。

SPOOLing 系统的特点如下:

  • 提高了 I/O 的速度,将对低速 I/O 设备执行的 I/O 操作演变为对磁盘缓冲区中数据的存取,如同脱机输入/输出一样,缓和了 CPU 和低速 I/O 设备之间的速度不匹配的矛盾;。

  • 将独占设备改造为共享设备,在假脱机打印机系统中,实际上并没有为任何进程分配设备。
    例如:打印机是种 “独占式设备” ,但是可以用 SPOOLing 技术改造成 “共享设备” 。

  • 实现了虚拟设备功能,对每个进程而言,它们都认为自己独占了一个设备。

总结:SPOOLing 技术可以把一台物理设备虚拟成逻辑上的多台设备,可将独占式设备改造成共享设备。

【思考】:

SPOOLing 技术是一种以空间换时间的技术,我们很容易理解它牺牲了空间,因为它开辟了磁盘上的空间作为输入井和输出井,但它又如何节省时间呢?

我们了解到,磁盘是一种高速设备,在与内存交换数据的速度上优于打印机、键盘、鼠标等中低速设备。试想一下,若没有 SPOOLing 技术,CPU 要向打印机输出要打印的数据,打印机的打印速度比较慢,CPU 就必须迁就打印机,在打印机把数据打印完后才能继续做其他的工作,浪费了 CPU 的不少时间。在 SPOOLing 技术下,CPU 要打印机打印的数据可以先输出到磁盘的输出井中(这个过程由假脱机进程控制),然后做其他的事情。若打印机此时被占用,则 SPOOLing 系统就会把这个打印请求挂到等待队列上,待打印机有空时再把数据打印出来。向磁盘输出数据的速度比向打印机输出数据的速度快,因此就节省了时间。

四、设备分配与回收

【总结】:

在多道程序系统中,进程数多于资源数,因此要有一套合理的分配原则,主要考虑的因素有:I/O 设备的固有属性、I/O 设备的分配算法、I/O 设备分配的安全性以及 I/O 设备的独立性。

1. 设备分配概述(I/O 设备的固有属性)

设备分配是指根据用户的 I/O 请求分配所需的设备。分配的总原则是充分发挥设备的使用效率,尽可能地让设备忙碌,又要避免由于不合理的分配方法造成进程死锁。

从设备的特性来看,采用下述三种使用方式的设备分别称为独占设备、共享设备和虚拟设备。

  • 独占式使用设备。进程分配到独占设备后,便由其独占,直至该进程释放该设备。

  • 分时式共享使用设备。对于共享设备,可同时分配给多个进程,通过分时共享使用。

  • 以 SPOOLing 方式使用外部设备。SPOOLing 技术实现了虚拟设备功能,可以将设备同时分配给多个进程。这种技术实质上就是实现了对设备的 I/O 操作的批处理。
    如采用 SPOOLing 技术实现的共享打印机。

2. 设备分配的策略(I/O 设备的分配算法)

1)设备分配原则

设备分配应根据设备特性、用户要求和系统配置情况。既要充分发挥设备的使用效率,又要避免造成进程死锁,还要将用户程序和具体设备隔离开。

2)设备分配方式

设备分配方式有静态分配和动态分配两种。

静态分配主要用于对独占设备的分配,它在用户作业开始执行前,由系统一次性分配该作业所要求的全部设备、控制器。一旦分配,这些设备、控制器就一直为该作业所占用,直到该作业被撤销。静态分配方式不会出现死锁(破坏了 “请求和保持” 条件),但设备的使用效率低。

动态分配在进程执行过程中根据执行需要进行。当进程需要设备时,通过系统调用命令向系统提出设备请求,由系统按某种策略给进程分配所需要的设备、控制器,一旦用完,便立即释放。这种方式有利于提高设备利用率,但若分配算法使用不当,则有可能造成进程死锁。

3)设备分配算法

常用的动态设备分配算法有:先请求先分配、优先级高者优先等。

对于独占设备,既可以采用动态分配方式,又可以采用静态分配方式,但往往采用静态分配方式。共享设备可被多个进程所共享,一般采用动态分配方式,但在每个 I/O 传输的单位时间内只被一个进程所占有,通常采用先请求先分配和优先级高者优先的分配算法。

3. 设备分配的安全性(I/O 设备分配的安全性)

设备分配的安全性是指设备分配中应防止发生进程死锁。从进程运行的安全性上考虑,设备分配有两种方式:

1)安全分配方式

一个时段内每个进程只能使用一个设备。

每当进程发出 I/O 请求后便进入阻塞态,直到其 I/O 操作完成时才被唤醒。这样,一旦进程已经获得某种设备后便阻塞,不能再请求任何资源,而在它阻塞时也不保持任何资源。

优点:破坏了 “请求和保持” 条件,不会死锁,设备分配安全。

缺点:对于一个进程来说,CPU 和 I/O 设备只能串行工作。

2)不安全分配方式

一个进程可以同时使用多个设备。

进程在发出 I/O 请求后仍继续运行,需要时又发出第二个、第三个 I/O 请求等。仅当进程所请求的设备已被另一进程占用时,才进入阻塞态。

优点:进程的计算任务和 I/O 任务可以并行处理,一个进程可同时操作多个设备,使进程迅速推进。

缺点:有可能发生死锁(死锁避免、死锁的检测和解除)

4. 设备分配的数据结构

设备分配依据的主要数据结构有设备控制表(DCT)、控制器控制表(COCT)、通道控制表(CHCT)和系统设备表(SDT),各数据结构功能如下:

1)设备控制表(DCT)

一个设备控制表就表征一个设备,而这个控制表中的表项就是设备的各个属性,如下图所示。凡因请求本设备而未得到满足的进程,应将其 PCB 按某种策略排成一个设备请求队列,设备队列的队首指针指向该请求队列队首 PCB 。

设备控制表(DCT):系统为每个设备配置一张 DCT ,用于记录设备情况。

2)控制器控制表(COCT)

控制器控制表(COCT):每个设备控制器都会对应一张 COCT 。操作系统根据 COCT 的信息对控制器进行操作和管理。

3)通道控制表(CHCT)

设备控制器控制设备与内存交换数据,而设备控制器又需要请求通道为它服务,因此每个 COCT 有一个表项存放指向相应通道控制表(CHCT)的指针,而一个通道可为多个设备控制器服务,因此 CHCT 中必定有一个指针,指向一个表,这个表上的信息表达的是 CHCT 提供服务的那几个设备控制器。CHCT 与 COCT 的关系是一对多的关系。

通道控制表(CHCT):每个通道都会对应一张 CHCT 。操作系统根据 CHCT 的信息对通道进行操作和管理。

4)系统设备表(SDT)

系统设备表(SDT):整个系统只有一张 SDT ,如下图所示。它记录已连接到系统中的所有物理设备的情况,每个物理设备占一个表目。

5)设备分配的步骤

  • 根据进程请求的物理设备名查找 SDT(注:物理设备名是进程请求分配设备时提供的参数)

  • 根据 SDT 找到 DCT ,若设备忙碌则将进程 PCB 挂到设备等待队列中,不忙碌则将设备分配给进程。

  • 根据 DCT 找到 COCT ,若控制器忙碌则将进程 PCB 挂到控制器等待队列中,不忙碌则将控制器分配给进程。

  • 根据 COCT 找到 CHCT ,若通道忙碌则将进程 PCB 挂到通道等待队列中,不忙碌则将通道分配给进程。

注:只有设备、控制器、通道三者都分配成功时,这次设备分配才算成功,之后便可启动 I/O 设备进行数据传送。

【缺点】:

① 用户编程时必须使用 “物理设备名” ,底层细节对用户不透明,不方便编程。

② 若换了一个物理设备,则程序无法运行。

③ 若进程请求的物理设备正在忙碌,则即使系统中还有同类型的设备,进程也必须阻塞等待。

【改进方法】:

建立逻辑设备名与物理设备名的映射机制,用户编程时只需提供逻辑设备名。

5. 逻辑设备名到物理设备名的映射(I/O 设备的独立性)

为了提高设备分配的灵活性和设备的利用率,方便实现 I/O 重定向,引入了设备独立性。设备独立性是指应用程序独立于具体使用的物理设备。

为了实现设备独立性,在应用程序中使用逻辑设备名来请求使用某类设备,在系统中设置一张逻辑设备表(Logical Unit Table, LUT),用于将逻辑设备名映射为物理设备名。

LUT 表项包括逻辑设备名、物理设备名和设备驱动程序入口地址;当进程用逻辑设备名来请求分配设备时,系统为它分配一台相应的物理设备,并在 LUT 中建立一个表目,当以后进程再利用该逻辑设备名请求 I/O 操作时,系统通过查找 LUT 来寻找对应的物理设备和驱动程序。

在系统中可采取两种方式设置逻辑设备表:

  • 在整个系统中只设置一张 LUT 。这样,所有进程的设备分配情况都记录在同一张 LUT 中,因此不允许 LUT 中具有相同的逻辑设备名,各用户所用的逻辑设备名不允许重复,主要适用于单用户系统。

  • 为每个用户设置一张 LUT 。每当用户登录时,系统便为该用户建立一个进程,同时也为之建立一张 LUT ,并将该表放入进程的 PCB 中,不同用户的逻辑设备名可重复,适用于多用户操作系统。

五、高速缓存与缓冲区(缓冲区管理)

【总结】:

1. 磁盘高速缓存(Disk Cache)

操作系统中使用磁盘高速缓存技术来提高磁盘的 I/O 速度,对访问高速缓存要比访问原始磁盘数据更为高效。例如,正在运行进程的数据既存储在磁盘上,又存储在物理内存上,也被复制到 CPU 的二级和一级高速缓存中。不过,磁盘高速缓存技术不同于通常意义下的介于 CPU 与内存之间的小容量高速存储器,而是指利用内存中的存储空间来暂存从磁盘中读出的一系列盘块中的信息。因此,磁盘高速缓存逻辑上属于磁盘,物理上则是驻留在内存中的盘块。

高速缓存在内存中分为两种形式:一种是在内存中开辟一个单独的空间作为磁盘高速缓存,大小固定;另一种是把未利用的内存空间作为一个缓冲池,供请求分页系统和磁盘 I/O 时共享。

2. 缓冲区(Buffer)

在设备管理子系统中,引入缓冲区的目的主要如下:

  • 缓和 CPU 与 I/O 设备间速度不匹配的矛盾。
  • 减少对 CPU 的中断频率,放宽对 CPU 中断响应时间的限制。
  • 解决基本数据单元大小(即数据粒度)不匹配的问题。
  • 提高 CPU 和 I/O 设备之间的并行性。

缓冲区是一个存储区域,可以由专门的硬件寄存器组成,也可利用内存作为缓冲区。其实现方法如下:

(a)采用硬件缓冲器,但由于成本太高,容量也较小,除一些关键部位和对速度要求非常高的场合外,一般不采用硬件缓冲器。

(b)采用缓冲区(位于内存区域),“设备独立性软件” 的缓冲区管理就是要组织管理好这些缓冲区。根据系统设置缓冲器的个数,缓冲技术可以分为如下几种:

1)单缓冲

假设某用户进程请求某种块设备读入若干块的数据。若采用单缓冲的策略,操作系统会在主存中为其分配一个缓冲区(若题目中没有特别说明,一个缓冲区的大小就是一个块)。

注意:当缓冲区数据非空时,不能往缓冲区冲入数据,只能从缓冲区把数据传出;当缓冲区为空时,可以往缓冲区冲入数据,但必须把缓冲区充满以后,才能从缓冲区把数据传出。

在块设备输入时,假定从磁盘把一块数据输入到缓冲区的时间为 T ,操作系统将该缓冲区中的数据传送到用户区的时间为 M ,而 CPU 对这一块数据处理的时间为 C 。

  • T > C:因此 CPU 处理完数据后暂时不能将下一块数据传送到工作区,必须等待缓冲区中冲满数据。处理一块数据的平均用时 = T + M 。

  • T < C:因此缓冲区中冲满数据后暂时不能继续冲入下一块数据,必须等待 CPU 处理结束后将数据从缓冲区传送到工作区。处理一块数据的平均用时 = C + M 。

2)双缓冲

假设某用户进程请求某种块设备读入若干块的数据。若采用双缓冲的策略,操作系统会在主存中为其分配两个缓冲区(若题目中没有特别说明,一个缓冲区的大小就是一个块)。

双缓冲题目中,假设初始状态为:工作区空,其中一个缓冲区满,另一个缓冲区空。

① T > C + M :则可使块设备连续输入。

② T < C + M :则可使 CPU 不必等待设备输入。

总结:双缓冲区处理一块数据的用时为 max (C+M, T) 。

对于字符设备,若采用行输入方式,则采用双缓冲可使用户在输入第一行后,在 CPU 执行第一行中的命令的同时,用户可继续向第二缓冲区输入下一行数据。而单缓冲情况下则必须等待一行数据被提取完毕才可输入下一行的数据。

若两台机器之间通信仅配置了单缓冲,如下图 (a) 所示,则它们在任意时刻都只能实现单方向的数据传输。例如,只允许把数据从 A 机传送到 B 机,或从 B 机传送到 A 机,而绝不允许双方同时向对方发送数据。为了实现双向数据传输,必须在两台机器中都设置两个缓冲区,一个用作发送缓冲区,另一个用作接收缓冲区,如下图 (b) 所示。

3)循环缓冲

包含多个大小相等的缓冲区,每个缓冲区中有一个链接指针指向下一个缓冲区,最后一个缓冲区指针指向第一个缓冲区,多个缓冲区构成一个环形。

循环缓冲用于输入/输出时,还需要有两个指针 in 和 out 。对输入而言,首先要从设备接收数据到缓冲区中, in 指针指向可以输入数据的第一个空缓冲区;当运行进程需要数据时,从循环缓冲区中取一个装满数据的缓冲区,并从此缓冲区中提取数据, out 指针指向可以提取数据的第一个满缓冲区。输出则正好相反。

4)缓冲池

缓冲池由多个系统公用的缓冲区组成,缓冲区按其使用状况可以形成三个队列:空缓冲队列、装满输入数据的缓冲队列(输入队列)和装满输出数据的缓冲队列(输出队列)。

另外,根据一个缓冲区在实际运算中扮演的功能不同,又设置了 4 种工作缓冲区:用于收容输入数据的工作缓冲区(hin)、用于提取输入数据的工作缓冲区(sin)、用于收容输出数据的工作缓冲区(hout)及用于提取输出数据的工作缓冲区(sout),如下图所示。

  • 当输入进程需要输入数据时,便从空缓冲队列的队首摘下一个空缓冲区,把它作为收容输入工作缓冲区(hin),然后把输入数据输入其中,装满后再将它挂到输入队列队尾。

  • 当计算进程需要输入数据时,便从输入队列取得一个缓冲区作为提取输入工作缓冲区(sin),计算进程从中提取数据,数据用完后再将它挂到空缓冲队列尾。

  • 当计算进程需要输出数据时,便从空缓冲队列的队首取得一个空缓冲区,作为收容输出工作缓冲区(hout),当其中装满输出数据后,再将它挂到输出队列队尾。

  • 当要输出时,由输出进程从输出队列中取得一个装满输出数据的缓冲区,作为提取输出工作缓冲区(sout),当数据提取完后,再将它挂到空缓冲队列的队尾。

3. 高速缓存与缓冲区的对比

高速缓存是可以保存数据拷贝的高速存储器,访问高速缓存比访问原始数据更高效,速度更快。高速缓存和缓冲区的对比如下所示:

相同点:都介于高速设备和低速设备之间。

不同点:

高速缓冲缓冲区
存放数据存放的是低速设备上的某些数据的复制数据,即高速缓存上有的,低速设备上面必然有存放的是低速设备传递给高速设备的数据(或相反),而这些数据在低速设备( 或高速设备)上却不一定有备份,这些数据再从缓冲区传送到高速设备(或低速设备)
目的高速缓存存放的是高速设备经常要访问的数据,若高速设备要访问的数据不在高速缓存中,则高速设备就需要访问低速设备高速设备和低速设备的通信都要经过缓冲区, 高速设备永远不会直接去访问低速设备

六、设备驱动程序接口

下图展示了设备驱动程序接口:

不同的操作系统,对设备驱动程序接口的标准各不相同。
设备厂商必须根据操作系统的接口要求,开发相应的设备驱动程序,设备才能被使用。

如果每个设备驱动程序与操作系统的接口都不同,那么每次出现一个新设备时,都必须为此修改操作系统。因此,要求每个设备驱动程序与操作系统之间都有着相同或相近的接口。这样会使得添加一个新设备驱动程序变得很容易,同时也便于开发人员编制设备驱动程序。

对于每种设备类型,例如磁盘,操作系统都要定义一组驱动程序必须支持的函数。对磁盘而言,这些函数自然包含读、写、格式化等。驱动程序中通常包含一张表格,这张表格具有针对这些函数指向驱动程序自身的指针。装载驱动程序时,操作系统记录这个函数指针表的地址,所以当操作系统需要调用一个函数时,它可以通过这张表格发出间接调用。这个函数指针表定义了驱动程序与操作系统其余部分之间的接口。给定类型的所有设备都必须服从这一要求。

下图展示了统一标准的设备驱动程序接口:

与设备无关的软件还要负责将符号化的设备名映射到适当的驱动程序上。例如,在 UNIX 中,设备名 /dev/disk0 唯一确定了一个特殊文件的i 结点,这个 i 结点包含了主设备号(用于定位相应的驱动程序)和次设备号(用来确定要读写的具体设备) 。

在 UNIX 和 Windows 中,设备是作为命名对象出现在文件系统中的,因此针对文件的常规保护规则也适用于 I/O 设备。系统管理员可以为每个设备设置适当的访问权限。

七、小结

1、当处理机和外部设备的速度差距较大时,有什么办法可以解决问题?

可采用缓冲技术来缓解 CPU 与外设速度上的矛盾,即在某个地方(一般为主存)设立一片缓冲区,外设与 CPU 的输入/输出都经过缓冲区,这样外设和 CPU 就都不用互相等待。

2、什么是设备的独立性?引入设备的独立性有什么好处?

设备独立性是指用户在编程序时使用的设备与实际设备无关。一个程序应独立于分配给它的某类设备的具体设备,即在用户程序中只指明 I/O 使用的设备类型即可。

设备独立性有以下优点:

  • 方便用户编程
  • 使程序运行不受具体机器环境的限制
  • 便于程序移植

3、设备分配

(a)分配设备。首先根据 I/O 请求中的物理设备名查找系统设备表(SDT),从中找出该设备的 DCT ,再根据 DCT 中的设备状态字段,可知该设备是否正忙。若忙,便将请求 I/O 进程的 PCB 挂到设备队列上;若空闲,则按照一定的算法计算设备分配的安全性,若安全则将设备分配给请求进程,否则仍将其 PCB 挂到设备队列上。

(b)分配控制器。系统把设备分配给请求 I/O 的进程后,再到其 DCT 中找出与该设备连接的控制器的 COCT ,从 COCT 中的状态字段中可知该控制器是否忙碌。若忙,则将请求 I/O 进程的 PCB 挂到该控制器的等待队列上;若空闲,则将控制器分配给进程。

(c)分配通道。在该 COCT 中又可找到与该控制器连接的通道的 CHCT ,再根据 CHCT 内的状态信息,可知该通道是否忙碌。若忙,则将请求 I/O 的进程挂到该通道的等待队列上;若空闲,则将该通道分配给进程。只有在上述三者都分配成功时,这次设备的分配才算成功。然后,便可启动该 I/O 设备进行数据传送。

为使独占设备的分配具有更强的灵活性,提高分配的成功率,还可从以下两方面对基本的设备分配程序加以改进:

I、增加设备的独立性。进程使用逻辑设备名请求 I/O 。这样,系统首先从 SDT 中找出第一个该类设备的 DCT 。若该设备忙,则又查找第二个该类设备的 DCT 。仅当所有该类设备都忙时,才把进程挂到该类设备的等待队列上;只要有一个该类设备可用,系统便进一步计算分配该设备的安全性。

II、考虑多通路情况。为防止 I/O 系统的“瓶颈“现象,通常采用多通路的 I/O 系统结构。此时对控制器和通道的分配同样要经过几次反复,即若设备(控制器)所连接的第一个控制器(通道)忙时,则应查看其所连接的第二个控制器(通道),仅当所有控制器(通道)都忙时,此次的控制器(通道)分配才算失败,才把进程挂到控制器(通道)的等待队列上。而只要有一个控制器(通道)可用,系统便可将它分配给进程。

设备分配过程中,先后分别访问的数据结构为 SDT → DCT → COCT → CHCT 。要成功分配一个设备,必须要:① 设备可用;② 控制器可用;③ 通道可用。所以,“设备分配,要过三关” 。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词