我是靠谱客的博主 陶醉钢笔,最近开发中收集的这篇文章主要介绍linux清空某个文件io缓存,linux下的文件IO缓冲区,及其相关操作,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

linux下的文件IO操作

浅谈文件IO缓冲

Read()和write()函数在操作磁盘文件时不会直接发起磁盘访问,而是仅仅在用户空间缓冲区与内核缓冲区高速缓存之间复制数据。

当调用write()函数的写入3个字节的时候,由于系统调用与磁盘操作并不同步,在write()函数结束后续某个时刻,内核才会将其缓冲区中的数据写入磁盘。如果在此期间,另一个进程试图读取该文件的这几个字节,那么内核将自动从缓冲区高速缓存中提供这些数据,而不是文件中。

与此同理,对输入而言,内核从磁盘中读取数据并存储到内核缓冲区中。Read()调用将从该缓冲区中读取数据,直至把缓冲区中的数据取完,这时,内核会将文件的下一段内容读入缓冲区高速缓存。

采用这一设计,目的是令read()和write()调用的操作更为快速,因为它们不需要等待磁盘操作。同时,这一设计也极为高效,因为这减少了内核必须执行的磁盘传输次数。

Linux内核对缓冲区高速缓存的大小没有固定上限。内核会分配尽可能多的缓冲区高速缓存页,而仅受限于两个因素:可用的物理内存总量,以及出于其他目的对物理内存的需求。若可用内存不足,则内核会将一些修改过的缓冲区高速缓存页刷新到磁盘,并释放其供系统重用。

缓冲区大小对IO系统调用性能的影响

在磁盘上写1000个字节,无论是每次写一个字节还是一次写入1000个字节,内核访问磁盘的次数都是相同的。但是前者的所消耗的时间明显比后者要多,后者只需要一次系统调用,而前者需要调用1000次。

在使用write函数和read函数的时候,我们可以定义一个缓冲区,一个大小适中的缓冲区能大大增加读写的效率,

最后

以上就是陶醉钢笔为你收集整理的linux清空某个文件io缓存,linux下的文件IO缓冲区,及其相关操作的全部内容,希望文章能够帮你解决linux清空某个文件io缓存,linux下的文件IO缓冲区,及其相关操作所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(53)

评论列表共有 0 条评论

立即
投稿
返回
顶部