计算机操作系统(第四版)第五章缓冲管理、设备分配

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

28
设备的分配
设备独立性带来以下两方面的好处: 设备分配时的灵活性:当进程以逻辑设备名请求某类 设备时,如果一台设备已经分配给其它进程或正在检修, 此时系统可以将其它几台相同的空闲设备中的任一台分 配给该进程,只有当此类设备全部被分配完时,进程才 会被阻塞。 设备分配适应性强 , 易于实现 I/O 重定向:所谓重定向 是指用于I/O操作的设备可以更换,而不必改变应用程序。
7
R:空缓冲区;
G:装满数据的缓冲区;
C:正在使用的缓冲区;
Nex ti R 1 G G 6 5 4 G 2 3 R G Nex tg G G 6 5 4 G Nex tg R 1 2 3 R C curren t Nex ti
8
(4)缓冲池(Buffer Pool)
10
一组缓冲仅适用于某个特定的I/O进程和计算进程,当系统 配置较多的设备时,使用专用缓冲区就要消耗大量的内存空间, 且其利用率不高。为了提高缓冲区的利用率,目前广泛使用公 用缓冲池,池中的缓冲区可供多个进程共享。 对于同时用于输入/输出的公用缓冲池,至少含有三种类型 的缓冲区:空缓冲区、装满输入数据的缓冲区和装满输出数据 的缓冲区。为了管理上的方便,可将相同类型的缓冲区链成一 个队列,于是就形成三个队列:空缓冲区队列、输入缓冲区队 列和输出缓冲区队列。 空缓冲区队列(emq):由空缓冲区所链成的队列。 输入缓冲区队列(inq):由装满输入数据的缓冲区所链成的队列. 输出缓冲区队列(outq):由装满输出数据的缓冲区所链成的队 列。
27
设备独立性(Device Independence )
为了提高OS的可适应性和可扩展性,目前几乎所有的 OS都实现了设备的独立性(也称为设备无关性)。 其基本思想是:用户程序不直接使用物理设备名(或 设备的物理地址),而只能使用逻辑设备名;而系统在实 际执行时,将逻辑设备名转换为某个具体的物理设备名, 实施I/O操作。
缓冲( Buffering )管理
缓冲管理的主要职责 :组织好缓冲区并提供获得和释放缓冲 区的手段。 (1)引入缓冲的主要原因,可归结为以下几点: 1、改善CPU与I/O设备间速度不匹配的矛盾 事实上,凡在数据的到达速率与其离去速率不同的地方,都 可设置缓冲,以缓和它们之间速度不匹配的矛盾。 2、可以减少对 CPU的中断频率,放宽对中断响应时间的限制 如果I/O操作每传送一个字节就要产生一次中断,那么设置了 n个字节的缓冲区后,则可以等到缓冲区满才产生中断,这样中 断次数就减少到1/n,而且中断响应的时间也可以相应的放宽。 3、提高 CPU和 I/O设备之间的并行性 例如,在CPU和打印机之间设置了缓冲区后,便可以使CPU 和打印机并行工作。
1.根据设备的固有属性而采取的策略
独占性
独占性是指将一个设备分配给某进程后,便一直由它 独占,直至该进程完成或释放该设备为止,系统才能将该 设备分配给其它进程使用。这种分配方式是对独占设备采 用的分配策略。它不仅往往造成设备利用率低,而且还会 引起系统死锁。 针对独占设备,系统一般采用静态分配方式。即在一 个作业执行前,将它所需要使用的这类设备分配给它,当 作业结束撤离时,才将分配给它的独占设备收回。
22
共享性 共享性是指将共享设备(磁盘)同时分配给多个进程使 用。但是这些进程访问设备的先后次序需进行合理的调度。 对共享设备的分配一般采用动态分配这一方式 。 虚拟设备 是指通过高速的共享设备,把一台慢速的以独占方式工 作的物理设备改造成若干台虚拟的同类逻辑设备. 需要引入SPOOLing技术。虚拟设备属于逻辑设备。
用户区
系统处理一块数据的处理时间可粗略地认为:MAX(C,T)。 若C<T,可使块设备连续输入;若C>T,可使CPU不必等待 设备输入。
4
解决外设之间并行工作的最简单的办法是设置双缓冲。 在双缓冲方案中,具体的做法是为输入或输出操作设置两 个缓冲区buffer1和buffer2。 双缓冲方式和单缓冲方式相比,虽然双缓冲方式能进一 步提高CPU和外设的并行程度,并能使输入设备和输出设备 并行工作,但是在实际系统中很少采用这一方式,这是因 为在计算机系统中的外设很多,又有大量的输入和输出, 同时双缓冲很难匹配设备和CPU的处理速度。因此现代计算 机系统中一般使用循环缓冲或缓冲池结构。
26
设备的相对号和绝对号
计算机系统中配置了各种不同类型的外围设备,每一类型外围设备 可以有若干台。为了对设备进行管理 , 系统为每一台设备确定一个编 号,用于区分和识别设备,称为绝对号。 在多道程序设计系统中, 用户无法知道当前计算机系统中设备的 使用情况, 因此 , 一般用户不直接使用设备的绝对号 , 直接向系统说明 所要使用的设备类型。由系统根据该类设备的分配情况决定使用哪一 台设备。为了避免使用时产生混乱 ,用户可以在程序中对自己要求使 用的若干台同类型设备给出编号,称为设备的相对号。 用户总是用“设备类、相对号”向系统提出作用设备的要求 , 而 系统为用户分配一个绝对号设备供用户使用。
13
设备的分配
1. 设备分配中数据结构 数 据 结 构 有 : 设 备 控 制 表 ( DCT ) 、 控 制 器 控 制 表 (COCT)、通道控制表(CHCT)、系统设备表(SDT)。
DCT 1 设备类型 typ e 设备标识符:d ev iceid DCT 2 设备状态:等待/ 不等待 指向控制器表的指针 重复执行次数或时间 DCT n 设备队列的队首指针 忙/ 闲
另外还应具有四种工作缓冲区: ⑴ 用于收容输入数据的工作缓冲区(hin); ⑵ 用于提取输入数据的工作缓冲区(sin); ⑶ 用于收容输出数据的工作缓冲区(hout); ⑷ 用于提取输出数据的工作缓冲区(sout)。 缓冲区工作在收容输入、提取输入、收容输出和提取输出 四种工作方式下(如下图所示)。
5
(3)循环缓冲 (多缓冲( Circular Buffer )) 多缓冲可以实现对缓冲区中数据的输入和提取,与CPU的 计算,三者并行工作。所以多缓冲进一步加快了I/O的速度, 提高了设备的利用率。 当对缓冲区中数据的输入和提取的速度基本相匹配时,采 用双缓冲可使两者并行工作,获得较好的效果。但是如果两者 的速度相差甚远时,双缓冲的效果就不够理想了。如果增加缓 冲区的个数,情况就会有所改善。我们可以将多个缓冲区组织 成循环队列的形式(如下图所示)。
COCT集合
表目1 …… 表目i ……
COCT 控制器控制表
控制器标识符 控制器状态(忙/闲) CHCT表指针 控制器队列的队首指针 控制器队列的队尾指针
CHCT集合
表目1 …… 表目i ……
CHCT 通道控制表
通道标识符 通道状态(忙/闲) 通道队列的队首指针 通道队列的队尾指针
17
设备分配时应考虑的因素程序入口
表目i

(c) 系统设备表SDT
设备分配的数据结构图 SDT集合
表目1 …… 表目i ……
SDT 系统设备表
设备类型 设备标识符 进程标识符 DCT表指针 驱动程序入口地址
DCT集合
表目1 …… 表目i ……
DCT 设备控制表
设备类型 设备标识符 设备状态(等待/不 等待,忙/闲) COCT表指针 重复执行次数或时间 设备队列的队首指针 设备队列的队尾指针
24
设备的分配
3.设备分配中的安全性
安全分配方式 每当进程发出一个I/O请求后,便进入阻塞状态,直到其 I/O 操作完成时才被唤醒。当它停止运行时不保持任何设备 资源,打破了产生死锁一个必要条件 ——“ 请求和保持”, 所以这种分配方式是安全的。但是这种分配算法使得 CPU 与 I/O设备串行工作,设备的利用率比较低。
1
缓冲区设置 硬缓冲:在设备中设置缓冲区,由硬件实现 软缓冲:在内存中开辟一个空间,用作缓冲区 管理 单缓冲 双缓冲 循环缓冲 (多缓冲) 缓冲池:多个缓冲区连接起来统一管理,常采用 多缓冲管理
2
(1)单缓冲( Single Buffer ) 单缓冲是操作系统提供的最简单的一种缓冲形式。在设备 和 CPU 之间设置一个缓冲器 , 由输入和输出设备共用。例如, CPU 要从磁盘上读一块数据进行计算,先从磁盘把一块数据读 入到缓冲区中,然后由OS将缓冲区的数据传送到用户区,最后 由 CPU 对这一块数据进行计算。可见第一步和最后一步是可以 并行执行的,这样就提高了 CPU 和外设的利用率。但是对缓冲 区中数据的输入和提取是串行工作的。 (如下图所示) 操作系统 用户进程 计算C 传送M 用户区
缓冲池 收容输入
hin sout
提取输出
sin hout
提取输入
用 户 程 序
收容输出
11
设备的分配
在多道程序环境下,设备必须由系统分配。每当进程 向系统提出 I/O 请求时,设备分配程序按照一定的策略, 把其所需的设备及其有关资源(如缓冲区、控制器和通道) 分配给该进程。在分配设备时还必须考虑系统的安全性, 避免发生死锁现象。 分配原则: 根据设备特性、用户要求和系统配置情况决定的。总 原则是:既要充分发挥设备的使用效率,又要避免由于不 合理的分配方法造成进程死锁,还要做到设备的无关性。
12
设备的分配
1、静态分配 当一个作业(或进程)运 行前,根据作业要求的设备, 系统如果能满足,则将其要求 的设备全部分配给它,然后开 始运行,运行完成释放其占用 的所有设备。 这种分配方式的优点是系 统绝不会出现死锁,缺点是设 备利用率太低。
2、动态分配
这种分配方法是在作业 (或进程)运行的过程中,需 要使用设备时,就向系统申请, 系统根据某种分配原则进行分 配。 这种方法的优点是设备的 利用率高,缺点是系统有出现 死锁的可能。
操作系统 输入T I/O设备 缓冲区1 缓冲区2 …… 缓冲区N 传送M 用户区 用户进程
6
环形缓冲技术是在主存中分配一组大小相等的存储
区作为缓冲区,并将这些缓冲区链接起来,每个缓冲区 中有一个指向下一个缓冲的指针,最后一个缓冲区的指 针指向第一个缓冲区,这样n个缓冲区就成了一个环形。 此外,系统中有个缓冲区链首指针指向第一个缓冲区。
23
设备的分配
2.设备分配算法(与进程的调度算法相似)
先来先服务:当多个进程同时向某设备提出I/O请求 时,该算法就根据对该设备提出请求的先后次序将这些进 程排列成一个设备请求队列,设备分配程序把设备首先分 配给队首进程。 优先级高者优先:对优先权高的进程所提出的I/O请 求赋予高优先权,在形成设备队列时,将优先级高的进程 排在设备队列前面,先得到分配。而对于优先权相同的 I/O请求,则按先来先服务原则排队分配。
设 备 控 制 表 集 合
14
控制器标识符:controllerid 控制器状态:忙/闲 与控制器连接的通道表指针 控制器队列的队首指针 控制器队列的队尾指针 (a) 控制器表COCT
15
通道标识符:channelid 通道状态:忙/闲 与通道连接的控制器表首址 通道队列的队首指针 通道队列的队尾指针 (b) 通道表CHCT
I/O设备
输入T
缓冲区
处理时间=MAX(C,T)+M。通常,M远小于T或C
3
(2)双缓冲( Double Buffer ) 双缓冲 ( 缓冲对换 ) 工作方式基本方法是在设备输入时, 先将数据输入到缓冲区 A ,装满后便转向缓冲区 B 。此时 OS 可 以从缓冲区 A 中提取数据传送到用户区,最后由 CPU 对数据进 行计算。(如下图所示) 操作系统 输入T I/O设备 缓冲区A 缓冲区B 传送M 用户进程 计算C
25
设备的分配
不安全分配方式 进程发出一个 I/O 请求后仍可以继续运行,需要时还可 以发第二个 I/O 请求、第三个 I/O 请求。只有当进程所请求 的设备已被另一个进程占用时,进程才进入阻塞状态。这种 分配方式是不安全,因为它可能具备“请求和保持”条件, 从而可能造成系统死锁。 当一个进程P1发出第一个I/O请求,占有了资源1后,再 继续向前推进时,又要申请资源2;此时,进程P2却占有了 资源2,在继续向前推进时,又要申请资源1,从而造成系统 死锁。所以,在设备分配程序中应该增加安全性检查的功能。
相关文档
最新文档