计算机英语缓冲技术缓冲,缓冲技术

缓冲技术是为了协调吞吐速度相差很大的设备之间数据传送而采用的技术。

为了缓和CPU和I/O设备速度不匹配的矛盾,提高CPU和I/O设备的并行性,在现代操作系统中,几乎所有的I/O设备在与处理机交换数据时都用了缓冲区,并提供获得和释放缓冲区的手段。总结来说,缓冲区技术用到了缓冲区,而缓冲区的引入是为了缓和CPU和I/O设备的不匹配,减少对CPU的中断频率,提高CPU和I/O设备的并行性。[1]

在数据到达与离去速度不匹配的地方,就应该使用缓冲技术。缓冲技术好比是一个水库,如果上游来的水太多,下游来不及排走,水库就起到“缓冲”作用,先让水在水库中停一些时候,等下游能继续排水,再把水送往下游。

中文名

缓冲技术外文名

buffering technique

所属领域

计算机

缓冲技术简要介绍

语音

通常CPU的速度要比I/O设备的速度快得多得多,所以可以设置缓冲区,对于从CPU来的数据,先放在缓冲区中,然后设备可以慢慢地从缓冲区中读出数据。常见的缓冲技术有:单缓冲,双缓冲,循环缓冲,缓冲池。其中,广泛流行使用公用缓冲池。

缓冲技术引入

语音

在操作系统中,引入缓冲的主要原因,可归结为以下几点:

1.改善CPU与I/O设备间速度不匹配的矛盾

例如一个程序,它时而进行长时间的计算而没有输出,时而又阵发性把输出送到打印机。由于打印机的速度跟不上CPU,而使得CPU长时间的等待。如果设置了缓冲区,程序输出的数据先送到缓冲区暂存,然后由打印机慢慢地输出。这时,CPU不必等待,可以继续执行程序。实现了CPU与I/O设备之间的并行工作。事实上,凡在数据的到达速率与其离去速率不同的地方,都可设置缓冲,以缓和它们之间速度不匹配的矛盾。众所周知,通常的程序都是时而计算,时而输出的。

2. 可以减少对 CPU的中断频率,放宽对中断响应时间的限制

如果I/O操作每传送一个字节就要产生一次中断,那么设置了n个字节的缓冲区后,则可以等到缓冲区满才产生中断,这样中断次数就减少到1/n,而且中断响应的时间也可以相应的放宽。

3. 提高 CPU和 I/O设备之间的并行性

缓冲的引入可显著提高 CPU和设备的并行操作程度,提高系统的吞吐量和设备的利用率。

根据I/O控制方式,缓冲的实现方法有两种:

一种是采用专用硬件缓冲器一种是在内存划出一个具有n个单元的专用缓冲区,以便存放输入/输出的数据。内存缓冲区又称软件缓冲。

缓冲技术种类

语音

根据系统设置的缓冲器的个数,可把缓冲技术分为:

单缓冲:在设备和处理机之间设置一个缓冲器。设备相处理机交换数据时,先把被交换数据写入缓冲器,然后,需要数据的设备或处理机从缓冲器取定数据。由于缓冲器属于临界资源,即不允许多个进程同时对一个缓冲器操作,因此,尽管单缓冲能匹配设备相处理机的处理速度,但是,设备和设备之间不能通过单缓冲达到并行操作。

b7223269b9ee04a6fad701632de31f29.png缓冲器之后,CPU可把输出到打印机的数据放入其中一个缓冲器(区)、让打印机慢慢打印;然后,它又可以从另一个为终端设置的缓冲器(区)中读取所需要的输入数据。

e84a6893fdd7084bded4e33a7da2d7eb.png多缓冲:是把多个缓冲区连接起来组成两部分,一部分专门用于输入,另一部分专门用于输出的缓冲结构。

12e23c18cbe1d935bf626d296d31db76.png

多缓冲:把多个缓冲区连接起来统一管理,既可用于输入又可用于输出的缓冲结构。

缓冲技术缓冲池的管理

语音

缓冲技术结构

缓冲池由多个缓冲区组成。

而一个缓冲区由两部分组成:一部分是用来标识该缓冲器和用于管理的缓冲首部,另一部分是用于存放数据的缓冲体。这两部分有一一对应的映射关系。对缓冲池的管理是通过对每一个缓冲器的缓冲首部进行操作实现的。

缓冲首部包括设备号、设备上的数据块号(块设备时)、互斥标识位以及缓冲队列连接指针和缓冲器号等。

857d0311cc2ba45b8196d97e34400438.gif

缓冲首部系统把各缓冲区按其使用状况连成三种队列:

(1) 空白缓冲队列em,其队首指针为F(em),队尾指针为L(em);

(2) 装满输入数据的输入缓冲队列in,其队首指针为F(in),队尾指针为L(in);

(3) 装满输出数据的输出缓冲队列out,其队首指针为F(out),队尾指针为L(out)。

888abe34876e683666c9c1004b27bd13.gif

缓冲区队列另外,在缓冲池中还具有四种工作缓冲区:

(1) 用于收容输入数据的工作缓冲区(hin);

(2) 用于提取输入数据的工作缓冲区(sin);

(3) 用于收容输出数据的工作缓冲区(hout);

(4) 用于提取输出数据的工作缓冲区(sout)。 可见,缓冲区工作在收容输入、提取输入、收容输出和提取输出四种工作方式如下:

8667f603db75361eb48f0e0d84230d76.png

缓冲区四种工作方式

缓冲技术管理

对缓冲池的管理由如下几个操作组成:

(1)从三种缓冲区队列中按一定的选取规则取出一个缓冲区的过程take_buf(type);

(2)把缓冲区按一定的选取规则插入相应的缓冲区队列的过程add_buf(type,number);

(3)供进程申请缓冲区用的过程get_buf(type,number);

(4)供进程将缓冲区放入相应缓冲区队列的过程put_buf(type,work_buf)。

其中,参数type表示缓冲队列类型,number为缓冲区号,而work_buf则表示工作缓冲区类型。

缓冲技术工作过程

使用这几个操作,缓冲池的工作过程可描述如下:

首先,输入进程调用get_uf(em,number)过程从空白缓冲区队列中取出一个缓冲号为number的空白缓冲区,将其作为收容输入缓冲区hin,当hin中装满了由输入设备输入的数据之后,系统调用过程put_buf(in,hin)将该缓冲区插入输入缓冲区队列in中。

另外,当进程需要输出数据数据时,输出进程经过缓冲管理程序调用过程get_buf(em,number)从空白缓冲区队列中取出一个空白缓冲区number作为收容输出缓冲区hout,待hout中装满输出数据之后,系统再调用过程Put_buf(out,hout)将该缓冲区插入输出缓冲区队列out.

对缓冲区的输入数据和输出数据的提取也是由过程get_buf和put_buf实现的。get_buf(out,number)从输出缓冲队列中取出装满输出数据的缓冲区number,将其作为sout。当sout中数据输出完毕时,系统调用过程put_buf(em,sout)将该缓冲区插入空白缓冲队列。而get_buf(in,number)则从输入缓冲队列中取出一个装满输入数据的缓冲区number作为输入缓冲区sin,当CPU从中提取完所需数据之后,系统调用过程put_buf(em,sin)将该缓冲区释放和插入空白缓冲队列em中。

词条图册

更多图册

参考资料

1.

汤小丹 梁红兵 哲凤屏 汤子瀛.计算机操作系统:西安电子科学大学出版社,2000年12月

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值