在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 165)switchuvm(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.
我没有成功地找出 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 165)switchuvm(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.