首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

Linux内核Page Cache和Buffer Cache关系及演化历史

kernel通过 getblk 函数,会将一个指定dev, blocknr sector对应的buffer cache单元(buffer header)返回给调用方。...而 bread 内部则是通过上面提到的 getblk 函数,返回对应的buffer_head,接着执行数据读取。...-2.2.16版本的代码为例,在执行磁盘文件写入时,会通过xxx_getblk获取对应位置的 buffer_head 信息,并将对应的数据写入该buffer中。...而对于对应的文件读取,则是同样,先通过xxx_getblk找到对应的buffer_head,在此之后,完成对应的数据读取。...(通过while循环,一口气将所有目标block的buffer_head拿出来,再一把读取所有的数据) 而xxx_getblk最终,还是使用的 getblk 接口来定位到指定的 buffer_head

2.1K30

Linux - Linux内存管理

为了解决内存紧缺的问题,Linux引入了虚拟内存的概念。为了解决快速存取,引入了缓存机制、交换机制等。...要深入了解Linux内存运行机制,需要知道下面提到的几个方面。 首先,Linux系统会不时地进行页面交换操作,以保持尽可能多的空闲物理内存。...其次,Linux进行页面交换是有条件的,不是所有页面在不用时都交换到虚拟内存中,Linux内核根据“最近最经常使用”算法,仅仅将一些不经常使用的页面文件交换到虚拟内存中。...Linux虽然可以在一段时间内自行恢复,但是恢复后的系统已经基本不可用了。...Linux下可以使用文件系统中的一个常规文件或者一个独立分区作为交换空间。同时Linux允许使用多个交换分区或者交换文件。

52.1K41
领券