缓冲的引入
- 缓和CPU和I/O设备间的速度不匹配
- 减少对CPU的中断频率,放宽对CPU中断时间的限制
例如:如果从远地终端发来的数据仅用一位缓冲来接收,则必须在每收到一位数据时便中断一次CPU,对于速率9.6kb/s的数据通信来说,就意味着其中断CPU的频率也是9.6kb/s,即每100us就要中断一次CPU,而且CPU必须在100us内予以相应,否则缓冲区的数据会被冲刷掉。
如果设置一个具有8位的缓冲寄存器,则可使CPU被中断的频率降低为原来的1/8。
若再设置一个8位寄存器,可以把CPU对中断的响应时间从100us放宽到800us。 - 解决数据粒度不匹配的问题
缓冲区可用于解决生产者和消费者之间交换的数据粒度(数据单元大小)不匹配的问题。例如生产者所生产的数据粒度比消费者消费的数据粒度小时,生产者进程可以一连生产多个数据单元的数据,当其总和已达到消费者进程所要求的数据单元大小时,消费者便可从缓冲区中取出消费。
反之,如果生产者的生产的数据粒度比消费者消费的数据粒度大时,生产者每次生产的数据消费者可以分几次从缓冲区中取出消费。 - 提高CPU和I/O设备间的并行性
在CPU(生产者)和打印机(消费者)之间设置缓冲区之后,生产者在生产了一部分数据后,把它们放入缓冲区,便可立即去进行下一次的生产。同时,消费者可以从缓冲区中取出数据消费,可以使CPU与打印机处于并行工作状态。