缓冲技术
概述
缓冲技术在现代操作系统中被广泛使用,主要是为了解决CPU与外围设备之间的速度不匹配问题,并提高系统各部件的工作效率和并行工作能力。通过引入缓冲区,系统能够更好地协调数据的输入和输出,减少对CPU中断频率的需求,提升整体性能。
缓冲的引入
缓和CPU与I/O设备间速度不匹配的矛盾
- 高速的CPU以微秒级或微毫秒级工作,而I/O设备则以毫秒或秒级工作。
减少对CPU中断频率,放宽对CPU中断响应时间限制
- 设置缓冲区可减少CPU中断次数,降低中断处理时间。例如,8位缓冲器可将中断频率降低为原来的1/8。
提高CPU和I/O设备之间的并行性
- 缓冲引入显著提高CPU与I/O设备之间的并行操作程度,提高系统吞吐量和设备利用率。
单缓冲
- 工作机制:在设备和处理器之间设置一个单缓冲器。数据交换时,先将数据写入缓冲器,再从缓冲器中读取。
- 局限性:由于单缓冲属于临界资源,输入和输出设备只能串行访问缓冲器,无法实现设备间的并行操作。
双缓冲
- 概念:双缓冲,即缓冲对换,是指为输入和输出设备设置两个缓冲区。设备可以在向一个缓冲区输入数据的同时,处理器从另一个缓冲区读取数据。
- 优点:通过交替使用两个缓冲区,进一步提高了CPU和I/O设备的并行性,减少等待时间。
- 局限性:在输入/输出设备与处理进程速度不匹配的情况下,双缓冲也难以完全适应,无法解决多个外围设备之间的速度不均衡问题。
多缓冲
- 机制:系统从主存中分配多个缓冲区,形成多缓冲机制。这些缓冲区可以组成循环缓冲,用于在输入进程和计算进程之间传递数据。
- 优势:通过共享多个缓冲区,系统可以提高缓冲区的利用率,减少数据传输过程中的等待时间,适应更多并行操作场景。
缓冲池
概念:缓冲池是一种公用缓冲区结构,由多个可共享的缓冲区组成,用于提高缓冲区的利用率,适用于多个I/O进程和计算进程。
缓冲区分类:
- 空缓冲区:未存储数据的缓冲区。
- 装满输入数据的缓冲区:包含输入数据等待处理。
- 装满输出数据的缓冲区:包含待输出的数据。
管理方式:通过将相同类型的缓冲区链成队列,可形成以下三个队列:
- 空缓冲队列(emq):存储空缓冲区。
- 输入队列(inq):存储装满输入数据的缓冲区。
- 输出队列(outq):存储装满输出数据的缓冲区。
四种工作缓冲区:
- hin:用于接收输入数据的缓冲区。
- sin:用于提取输入数据的缓冲区。
- hout:用于接收CPU输出数据的缓冲区。
- sout:用于提取CPU输出数据的缓冲区。