专栏名称: 脚本之家
脚本之家(jb51.net)是国内专业的网站建设资源、脚本编程学习类网站,以后将为大家分享更多有用的信息,希望大家多多支持宣传。
目录
相关文章推荐
生物探索  ·  Nature Methods | ... ·  23 小时前  
生信宝典  ·  生信入门一对一,数据操作带你飞 ·  昨天  
河北交通广播  ·  严肃处理!他彻底凉凉!被禁言 ·  2 天前  
51好读  ›  专栏  ›  脚本之家

今天,Linux文件系统部门来了一个新人···

脚本之家  · 公众号  ·  · 2025-06-01 17:00

正文

请到「今天看啥」查看全文


在小码的帮助下,阿飞很快适应了这里的环境。

渐渐地,他发现这份工作还挺轻松,每次收到文件读取请求后,做一些转换处理,就交给文件系统驱动部门去处理,让他们去找硬盘要数据。

因为硬盘那家伙是机械式的,读写速度比起内存条可差远了,一般都要等很久才能拿到数据,所以在等待的时间里还可以划水摸鱼。

“咱们这一直都这样,没什么奇怪的,不是我不想提升工作效率,实在是硬盘太慢了”,一旁的小码告诉他。

阿飞倒是觉得这样实在浪费时间,便提了一个主意:“虽然硬盘快不了,但咱们可以加缓存啊!”

“缓存?那是什么东西?”,小码一听来了兴趣。

“我是听我的好朋友阿Q说的,他们CPU嫌弃内存读写数据太慢,就在它们内部加了存储电路,把内存中的数据读取到这些存储电路中保存起来,后面再读取的时候,就先去这里找,找不到再去内存读取,这个存储电路就是缓存”,阿飞说到。

小码听完眼前一亮,问道:“你是说,咱们也可以依葫芦画瓢,把文件的数据缓存到内存里面来?”

“没错!我估计能节省不少时间,反正现在这样干等着,不如做点什么”

俩人一拍即合,开始谋划起具体的方案来。

没过多久,方案就落地了,他们给每一个要读取的文件建立了一个数据结构,里面记录了已经缓存的文件数据块信息,硬盘读取过来的数据,就缓存到内存中,并记录到这个数据结构中。

以后读取文件的时候,先通过这个数据结构去查询,查到了就直接拷贝给应用程序,查不到再去找硬盘要。

你还别说,CPU的局部性原理在这里也同样适用,就这一个改动,性能提升相当明显,不用每次都找硬盘要数据了。

不过加了一个缓存也带来了一些新的问题,小码在写文件的时候,是先写到缓存页的,并不会立即同步到硬盘上的文件中,要是这个时候突然断电了,那缓存的数据可就丢掉了。

后来他们又提供了一个叫 fsync 的函数,只要调用它,就会马上进行同步写入到硬盘上。

2. 内存映射文件

这天,阿飞拉住小码说到:“不知道你发现了没有,现在读取文件的时候,会拷贝两次数据。”







请到「今天看啥」查看全文