Linux系统编程:文件I/O与缓冲I/O深度解析
1. 虚拟文件系统(VFS)对系统程序员的重要性
对于系统程序员而言,虚拟文件系统(VFS)的影响十分关键。他们无需担忧文件所在的文件系统类型或存储介质。通用的系统调用,如 read() 、 write() 等,能够对任何受支持的文件系统和存储介质上的文件进行操作。
2. 页面缓存(Page Cache)
页面缓存是内存中存储的最近从磁盘文件系统访问的数据。由于磁盘访问速度相对处理器速度极慢,将请求的数据存储在内存中,内核可以直接从内存满足后续对相同数据的请求,避免重复的磁盘访问。
- 时间局部性原理 :页面缓存利用了时间局部性这一引用局部性概念,即某一时刻访问的资源在不久的将来很可能再次被访问。因此,首次访问数据时缓存数据所消耗的内存是值得的,因为它避免了未来昂贵的磁盘访问。
- 页面缓存的工作机制 :内核首先在页面缓存中查找文件系统数据。只有当数据不在缓存中时,才会调用内存子系统从磁盘读取数据。首次读取数据时,数据从磁盘传输到页面缓存,再从缓存返回给应用程序。再次读取相同数据时,直接从缓存返回。所有操作都通过页面缓存透明执行,确保缓存数据的相关性和有效性。
- 页面缓存的动态大小 :Linux的页面缓存大小是动态的。随着I/O操作将越来越多的数据带入内存,页面缓存会不断增大,占用可用内存。当页面缓存耗尽所有可用内存,且有新的内存分配请求时,内核会自动修剪页面缓存,释放最少使用的页面,为“实际”内存使用腾出空间。
超级会员免费看
订阅专栏 解锁全文
1230

被折叠的 条评论
为什么被折叠?



