关于磁盘缓存与磁盘缓冲区的理解与延伸
2015-09-04 21:27
330 查看
前言
前两天的腾讯电话面试,问到一个问题,文件写入磁盘的过程是怎样的?当时的回答是:用系统调用函数write文件内容到内核缓存中,后台有个守护进程会周期性的将缓存持久化到磁盘中。然后面试官问了一个问题:磁盘中有没有缓存?磁盘中有没有缓存呢?磁盘缓存与磁盘缓冲区
查了一些资料,终于搞明白了。磁盘缓存,又称磁盘快取,实际上就是将下载到的数据先保存于系统为软件分配的内存空间中(这个内存空间被称之为“内存池”),当保存到内存池中的数据达到一个程度时,便将数据保存到硬盘中。这样可以减少实际的磁盘操作,有效的保护磁盘免于重复的读写操作而导致的损坏。
磁盘缓冲区,磁盘的缓冲区是硬盘与外部总线交换数据的场所。硬盘的读数据的过程是将磁信号转化为电信号后,通过缓冲区一次次地填充与清空,再填充,再清空,一步步按照PCI总线的周期送出,可见,缓冲区的作用是相当重要的。它的作用也是提高性能,但是它与缓存的不同之处在于:一、它是容量固定的硬件,而不像缓存是可以由操作系统在内存中动态分配的。二、它对性能的影响大大超过磁盘缓存对性能的影响,因为如果没有缓冲区,就会要求每传一个字(通常是4字节)就需要读一次磁盘或写一次磁盘。
总而言之,磁盘缓存是属于内存的,而磁盘缓冲区是硬盘与PCI总线之间的容量固定的硬件。
延伸
CPU缓存即Cache是为了解决CPU主频与内存运行速度相差太大的问题。标准IO中的缓存是在用户态动态分配的内存。相关文章推荐
- JQ简单案例
- KMP算法
- 快捷键
- 5道经典的程序题 (4)
- wamp2.5(Apache2.4.9+PHP5.5.12)关于多站点的配置
- android 自定义属性
- UI控件圆角设置
- Linux(Ubuntu)下面SecureCRT 完全破解
- 敬业与乐业
- 学生管理系统——基于双向循环链表
- 使用testlink测试工具遇到的问题及解决方法
- matlab保存图片
- 3.5-Mysql备份与恢复
- UC/OS II任务管理(1)之任务控制块
- uva10340 - All in All
- 排序算法总结
- 双向循环链表
- 在你的用户之前发现BUG--Xamarin 测试云
- 欢迎使用CSDN-markdown编辑器
- 字符串替换空格算法