gpt4 book ai didi

c - 当内核需要紧急释放内存时,JBD2中的检查点如何管理?

转载 作者:行者123 更新时间:2023-11-30 16:39:07 24 4
gpt4 key购买 nike

我正在深入研究 ext4 和 JBD2 源代码,但我不清楚如何在提交事务后立即执行读取操作。

这是我阅读源代码的理解:

  1. 交易使用buffer_head来存储元数据;
  2. 一旦事务提交,buffer_head ptr就会添加到检查点列表中;
  3. 检查点可能不会在提交操作后立即启动;
  4. 执行检查点并且可以从内存中释放buffer_head

我想知道在第 3 步和第 4 步之间,内核是否需要出于某种原因释放内存,并且根据我的理解,释放这些 buffer_head 是安全的,因为我们稍后可以将事务从磁盘上的日志区域读回内存。

Q1) 我想知道这种释放 buffer_head 的情况是否可能在检查点之前发生,或者是否 buffer_head 被锁定在内存中,直到检查点驱逐它们。

Q2) 另外,我不确定步骤 3,我无法确定检查点在执行之前是否需要一些时间。

最佳答案

Q1) 在执行检查点之前,buffer_head 不会被释放,因为释放缓冲区然后将其从磁盘加载回内存比释放缓冲区要昂贵得多将 buffer_head 保留在内存中,以便在短时间内达到检查点。delta 时间。

Q2) 由于磁盘上的日志区域没有空闲 block ,检查点可能会延迟或可以在提交之前执行,因此检查点会启动以释放即将进行的提交使用的 block 。

关于c - 当内核需要紧急释放内存时,JBD2中的检查点如何管理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47202582/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com