资源预览内容
第1页 / 共33页
第2页 / 共33页
第3页 / 共33页
第4页 / 共33页
第5页 / 共33页
第6页 / 共33页
第7页 / 共33页
第8页 / 共33页
第9页 / 共33页
第10页 / 共33页
亲,该文档总共33页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
1缓冲( Buffering )管理 缓冲管理的主要职责:组织好缓冲区并提供获得和释放缓冲 区的手段。 (1)引入缓冲的主要原因,可归结为以下几点: 1、改善CPU与I/O设备间速度不匹配的矛盾事实上,凡在数据的到达速率与其离去速率不同的地方,都 可设置缓冲,以缓和它们之间速度不匹配的矛盾。 2、可以减少对 CPU的中断频率,放宽对中断响应时间的限制如果I/O操作每传送一个字节就要产生一次中断,那么设置了 n个字节的缓冲区后,则可以等到缓冲区满才产生中断,这样中 断次数就减少到1/n,而且中断响应的时间也可以相应的放宽。 3、提高 CPU和 IO设备之间的并行性例如,在CPU和打印机之间设置了缓冲区后,便可以使CPU 和打印机并行工作。2缓冲区设置硬缓冲:在设备中设置缓冲区,由硬件实现软缓冲:在内存中开辟一个空间,用作缓冲区 管理单缓冲双缓冲循环缓冲 (多缓冲)缓冲池:多个缓冲区连接起来统一管理,常采用 多缓冲管理3(1)单缓冲( Single Buffer )单缓冲是操作系统提供的最简单的一种缓冲形式。在设备 和CPU之间设置一个缓冲器,由输入和输出设备共用。例如, CPU要从磁盘上读一块数据进行计算,先从磁盘把一块数据读 入到缓冲区中,然后由OS将缓冲区的数据传送到用户区,最后 由CPU对这一块数据进行计算。可见第一步和最后一步是可以 并行执行的,这样就提高了CPU和外设的利用率。但是对缓冲 区中数据的输入和提取是串行工作的。 (如下图所示)处理时间=MAX(C,T)+M。通常,M远小于T或C缓冲区用户区输入T传送M I/O设备操作系统用户进程计算C4(2)双缓冲( Double Buffer )双缓冲(缓冲对换)工作方式基本方法是在设备输入时,先 将数据输入到缓冲区A,装满后便转向缓冲区B。此时OS可以从 缓冲区A中提取数据传送到用户区,最后由CPU对数据进行计算 。(如下图所示)系统处理一块数据的处理时间可粗略地认为:MAX(C,T) 。若CT,可使块设备连续输入;若CT,可使CPU不必等 待设备输入。 缓冲区A用户区 缓冲区B输入T传送MI/O设备操作系统用户进程 计算C5解决外设之间并行工作的最简单的办法是设置双缓冲 。在双缓冲方案中,具体的做法是为输入或输出操作设置 两个缓冲区buffer1和buffer2。双缓冲方式和单缓冲方式相比,虽然双缓冲方式能进一 步提高CPU和外设的并行程度,并能使输入设备和输出设备 并行工作,但是在实际系统中很少采用这一方式,这是因 为在计算机系统中的外设很多,又有大量的输入和输出, 同时双缓冲很难匹配设备和CPU的处理速度。因此现代计算 机系统中一般使用循环缓冲或缓冲池结构。6(3)循环缓冲 (多缓冲( Circular Buffer )多缓冲可以实现对缓冲区中数据的输入和提取,与CPU的 计算,三者并行工作。所以多缓冲进一步加快了I/O的速度, 提高了设备的利用率。当对缓冲区中数据的输入和提取的速度基本相匹配时,采 用双缓冲可使两者并行工作,获得较好的效果。但是如果两者 的速度相差甚远时,双缓冲的效果就不够理想了。如果增加缓 冲区的个数,情况就会有所改善。我们可以将多个缓冲区组织 成循环队列的形式(如下图所示)。缓冲区1 用户区缓冲区2缓冲区N输入T传送M I/O设备操作系统用户进程7环形缓冲技术是在主存中分配一组大小相等的存储区作为缓冲区,并将这些缓冲区链接起来,每个缓冲区 中有一个指向下一个缓冲的指针,最后一个缓冲区的指 针指向第一个缓冲区,这样n个缓冲区就成了一个环形。 此外,系统中有个缓冲区链首指针指向第一个缓冲区。8R:空缓冲区;G:装满数据的缓冲区;C:正在使用的缓冲区;9环形缓冲技术使用设置一个输入指针in、一个输出指针out、开始指针strat。 系统初始时,strat=in=out。输入时,要判断in是否与out相等,若相等,则要等待。 否则,将信息送入in指向的缓冲区,填满后,将缓冲区中 的指向下一个缓冲区的指针next置in,如此类推。输出时,首先判断out=in,若相等,则等待(意味着系 统中没有数据可取)。否则,取出缓冲区中的信息,将缓 冲区中的next置out; 10一组缓冲仅适用于某个特定的I/O进程和计算进程,当系统 配置较多的设备时,使用专用缓冲区就要消耗大量的内存空间 ,且其利用率不高。为了提高缓冲区的利用率,目前广泛使用 公用缓冲池,池中的缓冲区可供多个进程共享。对于同时用于输入/输出的公用缓冲池,至少含有三种类型 的缓冲区:空缓冲区、装满输入数据的缓冲区和装满输出数据 的缓冲区。为了管理上的方便,可将相同类型的缓冲区链成一 个队列,于是就形成三个队列:空缓冲区队列、输入缓冲区队 列和输出缓冲区队列。 空缓冲区队列(emq):由空缓冲区所链成的队列。 输入缓冲区队列(inq):由装满输入数据的缓冲区所链成的队列. 输出缓冲区队列(outq):由装满输出数据的缓冲区所链成的队 列。(4)缓冲池(Buffer Pool)11另外还应具有四种工作缓冲区: 用于收容输入数据的工作缓冲区(hin); 用于提取输入数据的工作缓冲区(sin); 用于收容输出数据的工作缓冲区(hout); 用于提取输出数据的工作缓冲区(sout)。缓冲区工作在收容输入、提取输入、收容输出和提取输出 四种工作方式下(如下图所示)。hinsoutsinhout用 户 程 序收容输入提取输入提取输出收容输出缓冲池12设备的分配在多道程序环境下,设备必须由系统分配。每当进程 向系统提出I/O请求时,设备分配程序按照一定的策略, 把其所需的设备及其有关资源(如缓冲区、控制器和通道 )分配给该进程。在分配设备时还必须考虑系统的安全性 ,避免发生死锁现象。 分配原则:根据设备特性、用户要求和系统配置情况决定的。总 原则是:既要充分发挥设备的使用效率,又要避免由于不 合理的分配方法造成进程死锁,还要做到设备的无关性。131、静态分配当一个作业(或进程)运 行前,根据作业要求的设备, 系统如果能满足,则将其要求 的设备全部分配给它,然后开 始运行,运行完成释放其占用 的所有设备。这种分配方式的优点是系 统绝不会出现死锁,缺点是设 备利用率太低。2、动态分配这种分配方法是在作业( 或进程)运行的过程中,需要 使用设备时,就向系统申请, 系统根据某种分配原则进行分 配。这种方法的优点是设备的 利用率高,缺点是系统有出现 死锁的可能。设备的分配141. 设备分配中数据结构数据结构有:设备控制表(DCT)、控制器控制表( COCT)、通道控制表(CHCT)、系统设备表(SDT)。设备的分配1516设备分配程序是负责向对系统提出I/O请求的进程分 配设备,及其相应的控制器和通道。 1. 设备分配中的数据结构数据结构有:设备控制表(DCT)、控制器控制表( COCT)、通道控制表(CHCT)、系统设备表(SDT)。个 表的具体内容如下图所示。在整个系统中,有一张系统设备表(SDT),用于记 录系统中全部设备的信息。每个设备占一个表目,其中包 括设备类型、设备标识符、设备控制表指针及设备驱动程 序的入口地址等表项。17设备分配的数据结构图表目1 表目i 设备类型 设备标识符 进程标识符 DCT表指针 驱动程序入口地址表目1 表目i 设备类型 设备标识符 设备状态(等待/不 等待,忙/闲) COCT表指针 重复执行次数或时间 设备队列的队首指针 设备队列的队尾指针表目1 表目i 控制器标识符 控制器状态(忙/闲) CHCT表指针 控制器队列的队首指针 控制器队列的队尾指针表目1 表目i 通道标识符 通道状态(忙/闲) 通道队列的队首指针 通道队列的队尾指针DCT 设备控制表SDT 系统设备表DCT集合 SDT集合 COCT 控制器控制表CHCT 通道控制表CHCT集合COCT集合18系统为每一个设备都配置了一张设备控制表(DCT), 用于记录该设备的情况。表中除了有用于指示设备类型 的字段和设备标识符字段外,还应有下列字段:1)设备队列的队首指针:凡因请求本设备而未得到满 足的进程,其PCB都应按照一定的策略排成一个队列,称 为设备请求队列或简称为设备队列。其队首指针指向队 首PCB,在有的系统中还设置了队尾指针。2)设备状态:当设备自身处于“忙”状态时,将设备的 忙标志置“l”。若与该设备相连接的控制器或通道处于“ 忙”状态,而不能启动该设备,则将设备的等待标志置 “l”。设备的分配193)与设备连接的控制器表指针:该指针指向与该设备相 连接的控制器的控制表。在具有多条通路的情况下,一个 设备可与多个控制器相连接。此时,在DCT中应设置多个控 制器表指针。4)重复执行次数:外部设备在传送数据时,若发生信息 传送错误,系统并不立即认为传送失败,而是允许它重新 传送。只要在规定的重复次数或时间内恢复正常传送,则 仍认为传送成功,否则才认为传送失败。设备的分配202.设备分配的流程对于具有单通道的系统,则当进程提出I/O请求后,系统 进行设备分配的流程图如下图。 3.设备分配程序的改进为了获得设备的独立性,进程应用逻辑设备名请求I/O。 这样,系统首先从系统设备表SDT中找出第一个该类设备的 设备控制表DCT。如忙,则查找第二个该类设备的DCT,当 所有该类设备都忙时,才把进程挂在该类设备的等待队列 中。实际上,系统为了提高可靠性和灵活性,通常采用多通 路的I/O系统结构。此时对多个控制器和通道的分配,必须 查找所有的控制器和通道,才能决定是否将该进程挂起。设备的分配21进程P提出所需的I/O设备根据物理设备名,从SDT中找出该设备的DCT由DCT的设备状态字段,检查该设备是否忙 ?将该进程的PCB插入到 该设备的等待队列中检查本次设备分配是否安全?将此设备分配给该进程从其DCT中找出与该设备连接的控制 器的COCT,检查该控制器是否忙?将该进程的PCB插入到 该控制器的的等待队列中将该控制器分配给进程从COCT中找到与该控制器连接的 通道的CHCT,检查该通道是否忙?将该进程的PCB插入到 该通道的的等待队列中将该通道分配给进程至此,设备、控制器和 通道三者都已分配成功启动I/O设备,进行具体的I/O操作不忙不忙不忙忙忙安全不安全忙单通道系统的 设备分配流程221根据设备的固有属性而采取的策略 独占性独占性是指将一个设备分配给某进程后,便一直由它 独占,直至该进程完成或释放该设备为止,系统才能将该 设备分配给其它进程使用。这种分配方式是对独占设备采 用的分配策略。它不仅往往造成设备利用率低,而且还会 引起系统死锁。针对独占设备,系统一般采用静态分配方式。即在一 个作业执行前,将它所需要使用的这类设备分配给它,当 作业结束撤离时,才将分配给它的独占设备收回。设备分配时应考虑的因素23共享性共享性是指将共享设备(磁盘)同时分配给多个进程使 用。但是这些进程访问设备的先后次序需进行合理的调度。对共享设备的分配一般采用动态分配这一方式 。 虚拟设备是指通过高速的共享设备,把一台慢速的以独占方式工 作的物理设备改造成若干台虚拟的同类逻辑设备.需要引入SPOOLing技术。虚拟设备属于逻辑设备。242设备分配算法(与进程的调度算法相似)先来先服务:当多个进程同时向某设备提出I/O请求 时,该算法就根据对该设备提出请求的先后次序将这些进 程排列成一个设备请求队列,设备分配程序把设备首先分 配给队首进程。优先级高者优先:对优先权高的进程所提出的I/O请 求赋予高优先权,在形成设备队列时,将优先级高的进程 排在设备队列前面,先得到分配。而对于优先权相同的 I/O请求,则按先来先服务原则排队分配。设备的分配253设备分配中的安全性 安全分配方式每当进程发出一个I/O请求后,便进入阻塞状态,直到其 I/O操作完成时才被唤醒。当它停止运行时不保持任何设备 资源,打破了产生死锁一个必要条件“请求和保持”,所 以这种分配方式是安全
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号