1.磁盘高速缓存(Disk Cache)
OS使用磁盘高速缓存来提高磁盘的I/O速度,对磁盘高速缓存的访问要比对磁盘数据的直接访问更为高效。
磁盘高速缓存技术不同于常规意义下的介于CPU和内存之间的小容量高速存储器,而是利用内存
中的存储空间暂存从磁盘中读出的一系列盘块中的信息,因此,磁盘高速缓冲物理上是驻留在内存中的盘块,逻辑上属于磁盘。
高速缓存在内存中分为两种形式,一种是在内存中开辟一个单独的空间作为磁盘高速缓存;另一种是把未利用的内存空间作为一个缓冲池,供请求分页系统和磁盘I/O时共享。
2.缓冲区(Buffer)
2.1 概述
引入缓冲区技术的目的:
- 缓和CPU与I/O设备间速度不匹配的矛盾。
- 减少对CPU的中断频率,放宽对CPU中断响应时间的限制。
- 解决基本数据单位(数据粒度)不匹配的问题。
- 提供CPU与I/O设备之间的并行性。
2.2 实现方法
2.2.1 硬件缓冲器
但是硬件缓冲器成本太高,除了一些关键部位外,其他地方一般很少使用硬件缓冲器。
2.2.2 缓冲区(位于内存区域)
2.2.2.1 单缓冲
在内存中设置一个缓冲区,当设备和处理机需要交换数据时,先将数据写入缓冲区,然后需要数据的设备或处理机就从缓冲区取走数据。在一方写入或取出数据的过程中,另一方需要等待。
通常认为
工作区大小 ≈ 缓冲区大小
。
单缓冲区对每块数据的处理用时为max(C,T) + M
。
2.2.2.2 双缓冲
由于在数据传送时间M内,CPU处于空闲状态,因而CPU的利用率不高,因此引入双缓冲。I/O设备输入数据时先装填数据到缓冲区1,在缓冲区1装满后再去装填缓冲区2,与此同时处理机可以从缓冲区1取出数据送入工作区,当缓冲区1中的数据处理完之后,若缓冲区2的数据已经填满,则处理机又从缓冲器2取出数据进行处理,而此时I/O设备可能又把缓冲区1的数据填满了,然后如此反复。
双缓冲区对每块数据的处理用时为max(C + M,T)
。