您的位置:首页 > 其它

关于磁盘缓存与磁盘缓冲区的理解与延伸

2015-09-04 21:27 330 查看

前言

前两天的腾讯电话面试,问到一个问题,文件写入磁盘的过程是怎样的?当时的回答是:用系统调用函数write文件内容到内核缓存中,后台有个守护进程会周期性的将缓存持久化到磁盘中。然后面试官问了一个问题:磁盘中有没有缓存?磁盘中有没有缓存呢?

磁盘缓存与磁盘缓冲区

查了一些资料,终于搞明白了。
磁盘缓存,又称磁盘快取,实际上就是将下载到的数据先保存于系统为软件分配的内存空间中(这个内存空间被称之为“内存池”),当保存到内存池中的数据达到一个程度时,便将数据保存到硬盘中。这样可以减少实际的磁盘操作,有效的保护磁盘免于重复的读写操作而导致的损坏。
磁盘缓冲区,磁盘的缓冲区是硬盘与外部总线交换数据的场所。硬盘的读数据的过程是将磁信号转化为电信号后,通过缓冲区一次次地填充与清空,再填充,再清空,一步步按照PCI总线的周期送出,可见,缓冲区的作用是相当重要的。它的作用也是提高性能,但是它与缓存的不同之处在于:一、它是容量固定的硬件,而不像缓存是可以由操作系统在内存中动态分配的。二、它对性能的影响大大超过磁盘缓存对性能的影响,因为如果没有缓冲区,就会要求每传一个字(通常是4字节)就需要读一次磁盘或写一次磁盘。
总而言之,磁盘缓存是属于内存的,而磁盘缓冲区是硬盘与PCI总线之间的容量固定的硬件。

延伸

CPU缓存即Cache是为了解决CPU主频与内存运行速度相差太大的问题。标准IO中的缓存是在用户态动态分配的内存。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: