gpt4 book ai didi

memory-management - current-> mm在Linux内核中为NULL

转载 作者:行者123 更新时间:2023-12-04 07:44:26 25 4
gpt4 key购买 nike

我想遍历页表,所以我已经访问了current-> mm,但是它给出了NULL值。

我正在Linux内核3.9上工作,我不明白current-> mm怎么可能为零。

我有什么想念的吗?

最佳答案

这意味着您处于内核线程中。

在Linux中,内核线程没有mm结构。内核线程从前一个用户线程借用mm,并将其记录在active_mm中。因此,应该使用active_mm而不是

更多详细信息:

/kernel/sched/core.c中,您可以找到以下代码:

static inline void
context_switch(struct rq *rq, struct task_struct *prev,
struct task_struct *next)
{
...
if (!mm) {
next->active_mm = oldmm;
atomic_inc(&oldmm->mm_count);
enter_lazy_tlb(oldmm, next);
} else
switch_mm(oldmm, mm, next);
...
}

如果下一个线程没有mm(内核线程),则调度程序将不会切换mm,而仅重用上一个线程的mm。

关于memory-management - current-> mm在Linux内核中为NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16975393/

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