简单了解那些磁盘的文件处理的概念
3 月,跳不动了?>>> 多级缓存 文件数据的存取是计算机世界比较常见的需求,为提升文件存取效率,操作系统对于整个文件IO过程做了比较大的优化,多级缓存的思路在设计中无处不在。 用户操作数据到达磁盘存取流程如下: 黑色实线是用户态和内核态的分界线。 C语言开发的stdio库定义了文件操作相关的函数,stdio中实现的文件操作函数都有自己的stdio buffer,是在用户态实现的缓存。 如果用户操作读写都是较小size文件连续读写的话,stdio库可以将多次读写操作通过buffer进行缓冲与聚合之后统一处理,以提高程序运行效率。stdio库中的fflush函数可以主动的刷新buffer,主动调用底层操作系统进行buffer里面的数据更新。 操作系统调用read/write函数操作和磁盘之间也存在一层buffer,kernel buffer cache就是这层缓存。我们经常把linux中文件缓存称为page cache,设备纬度的缓存称为buffer cache。 page cache用于缓存文件内容,和文件系统相关,文件系统和磁盘建立映射,映射关系由文件系统维护 buffer cache用于缓存存储设备扇(块)区的数据,而不关心文件系统 总结来说,linux下的io操作,write/read函数调用是用户态和内核态之间的分界线