缓冲区,作为现代操作系统中所有I/O设备与处理机交换数据时的设备,一般用于对速度要求非常高的场合。而大多数缓冲区是由内存组成的,缓冲区管理的主要功能就是组织好这些缓冲区。 缓冲区的引入,主要原因有:缓和CPU和I/O设备间速度不匹配的矛盾,设置缓冲区可以让输出设备慢慢从中取出数据,也不需要让CPU进行等待,提高了CPU的利用率。 减少CPU的中断频率,放宽了对CPU中断响应时间的限制,根本原因也是由于I/O设备的低速导致CPU经常会等待I/O操作,产生多次中断。 解决数据粒度不匹配的问题,生产者和消费者彼此生产和消费的数据粒度不一样大,就可以使生产者多生产几个单元的数据或将生产的数据由消费者分几次取出,消费者反之亦然。 提高了CPU和I/O设备之间的并行性,缓冲区的引入可显著地提高CPU和I/O设备间的并行操作程度,提高系统的吞吐量和利用率。 操作系统中若只设置单缓冲区,当一组数据输入到缓冲区后进行处理尚未输出,当第二组数据输出时,则用户进程就会陷入阻塞。而为了解决生产者和消费者在使用缓冲区时互斥的问题,为生产者和消费者设置两个缓冲区。当第一缓冲区装满后,便转向第二缓冲区,此时便可将第一缓冲区的数据移出。 而现在广泛流行的既可用于输入又可用于输出的公用缓冲池,与缓冲区最主要的区别在于,缓冲区仅仅是一组内存块的链表,缓冲池则包括了一个管理的数据结构及一组操作函数的管理机制。 缓冲池中具有相同类型的缓冲区链接成一个队列,可形成三个队列:空白缓冲队列、输入队列和输出队列,还具有四种工作缓冲区:收容输入数据的工作缓冲区、提取输出数据的工作缓冲区、收容输出数据的工作缓冲区和提取输出数据的工作缓冲区。工作方式也是四种:收容输入、提取输入、收容输出和提取输出。 |
|