在xv6中,switchuvm/switchkvm中的uvm和kvm分别代表什么?

In xv6, what does the uvm and kvm in switchuvm / switchkvm stand for?

我没有成功地找出 uvm 或 kvm 在 xv6 中代表什么。我将需要它来参加解释一段代码的每一部分的考试,我也希望能够说出它的定义。这里有人可以告诉我吗?我正在尝试了解 switch 命令的确切作用以及它在调用任一命令时切换的部分。

      c->proc = p;
      switchuvm(p);
      p->state = RUNNING;

      swtch(&(c->scheduler), p->context);
      switchkvm();

switchuvm中的u代表User。 k in switchkvm 代表Kernel.

OS加载进程信息给运行它。

加载进程后(参见 line 165switchuvm(p);

进程被标记为运行ning(p->state = RUNNING;),处理器切换执行(swtch(&(c->scheduler), p->context);)

当进程返回到调度程序时(因此在 swtch 之后),内核加载其内存:switchkvm();

这里是 proc.c 文件的解释:

//PAGEBREAK: 42
// Per-CPU process scheduler.
// Each CPU calls scheduler() after setting itself up.
// Scheduler never returns.  It loops, doing:
//  - choose a process to run
//  - swtch to start running that process
//  - eventually that process transfers control
//      via swtch back to the scheduler.