这里的Disk buffer指的是磁盘上的缓存,现代的磁盘基本上都有8MB-32MB的板载缓存,这个缓存是易失性缓存,掉电后数据即丢失。
磁盘缓存的意义:
预读——磁盘是个机械装置,当读取一块数据的时候,需要先把磁盘臂移到指定的磁道,这个过程是纯机械的过程,与电子传输的速度比起来缓慢得多。磁盘控制器为了尽量减少这种缓慢的过程,会将指定数据块附近的数据预先读入缓存,以备OS会发出指令读取这些内容。
与高速设备匹配——众所周知,磁盘一直是计算机系统中性能提升最缓慢的一环,其与系统总线、内存的性能相差不是一个数量级,所以主板芯片组有一个专门的功能是将这些慢速设备与cpu、内存这样的高速设备相匹配,磁盘缓存的功能与此类似,尽量提高磁盘的响应速度,使OS可以得到快速响应继续处理下一个任务。
回写——也就是写加速,磁盘接收到数据之后立即返回操作系统表示写入完毕,其实数据仍然在磁盘的缓存中,并未真正写到盘片上。当缓存达到一定的数据量时,才一次性写入盘片,这个过程叫flush。回写加快了数据写入磁盘的过程,但是引入了掉电情况下数据丢失的风险。过大的缓存会造成flush时间较长,可能反过来影响磁盘的性能,回写缓存可以关闭。
命令队列——SCSI磁盘和新的SATA磁盘都有命令队列的功能,可以把接收到的指令保存在缓存中排队,磁盘控制器甚至还有对这个队列进行优化的能力,例如把队列中先后相差比较大的但读取相邻数据块的指令一次执行。
阅读(960) | 评论(1) | 转发(0) |