Operating system 在xv6中,switchuvm/switchkvm中的uvm和kvm代表什么?
我还没有成功地找出uvm或kvm在xv6中代表什么。我需要它来做一个解释代码每一部分的考试,我也希望能说出它的定义。有人能告诉我吗?我试图理解switch命令到底做了什么,以及它在调用这两个命令时切换了哪些部分Operating system 在xv6中,switchuvm/switchkvm中的uvm和kvm代表什么?,operating-system,xv6,Operating System,Xv6,我还没有成功地找出uvm或kvm在xv6中代表什么。我需要它来做一个解释代码每一部分的考试,我也希望能说出它的定义。有人能告诉我吗?我试图理解switch命令到底做了什么,以及它在调用这两个命令时切换了哪些部分 c->proc=p; uvm(p); p->状态=运行; swtch(&(c->scheduler),p->context); switchkvm(); 开关UVM中的u代表用户。 switchkvm中的k代表内核 操作系统加载进程信息以运行它 加载过程后(参见)switchuvm(p)
c->proc=p;
uvm(p);
p->状态=运行;
swtch(&(c->scheduler),p->context);
switchkvm();
开关UVM
中的u代表用户。
switchkvm
中的k代表内核
操作系统加载进程信息以运行它
加载过程后(参见)switchuvm(p)代码>
进程被标记为正在运行(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.