1.按照缓冲区存在的位置
按照缓冲区存在的位置可以把缓冲分为硬件缓冲和软件缓冲。所谓硬件缓冲是指设备本身配有少量必要的硬件缓冲器,而软件缓冲则是指在内存中划出一个特定区域来充当缓冲区,使用时,由输入指针和输出指针来控制对信息的写入和读取。
2.按照缓冲区的个数以及缓冲区的组织形式
按照缓冲区的个数以及缓冲区的组织形式可以把缓冲分为单缓冲、双缓冲、循环缓冲和缓冲池四种类型。
(1)单缓冲。单缓冲是在设备和CPU之间设置一个缓冲区。设备和CPU交换数据时,先把被交换数据写入缓冲区,然后,需要数据的设备和CPU从缓冲区取走数据。由于缓冲区属于临界资源,即不允许多个进程同时对一个缓冲区操作,因此,尽管单缓冲能匹配设备和CPU的处理速度,但是,设备和设备之间不能通过单缓冲达到并行操作。(www.xing528.com)
(2)双缓冲。为了加快输入和输出速度,提高并行性和设备的利用率,引入了双缓冲机制,也称缓冲对换。双缓冲即设置了两个缓冲区。设备输入时,输入设备先将数据送入第一缓冲区,装满后便转向第二缓冲区。此时,操作系统可以从第一缓冲区移出数据,送用户进程;输出时,CPU把要输出的数据装满第一缓冲区后,转向第二缓冲区,这时输出设备输出第一缓冲区内的数据。
(3)循环缓冲。当输入与输出的速度基本匹配时,采用双缓冲能获得较好的效果,可使输入和输出基本上能并行操作。但若两者的速度相差较远,双缓冲的效果就不够理想,不过可以随着缓冲区数量的增加,使情况有所改善。因此,又引入了多缓冲机制,可将多个缓冲组织成循环缓冲形式。对于用作输入的循环缓冲,通常是提供给输入进程或计算进程使用,输入进程不断向空缓冲区输入数据,而计算进程则从中提取数据进行计算。
(4)缓冲池。无论是单缓冲、双缓冲还是循环缓冲都仅适用于某特定的I/O进程和计算进程,因而它们属于专用缓冲。当系统较大时,将会有许多这样的缓冲,这不仅要消耗大量的内存空间,而且其利用率也不高。为了提高缓冲区的利用率,目前广泛流行公用缓冲池,在池中设置了多个可供若干个进程共享的缓冲区。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。