mycpu和myproc

本文探究xv6中myproc()函数的用法。

Xv6通常需要有指向当前进程的proc结构体的指针。
Xv6为每个CPU维护一个 struct cpu ,它记录当前在该CPU上运行的进程(如果有的话),为CPU的调度线程保存寄存器,以及管理中断禁用所需的自旋锁的技术。
函数mycpu(在kernel/proc.c中)返回一个指向当前CPU的struct cpu的指针。RISC-V给它的CPU编号,给每个CPU一个hartid。Xv6确保每个CPU的hartid在内核中存储在该CPU的tp寄存器中。这允许mycpu使用tp对一个cpu结构体数组(即cpus数组,kernel/proc.c:9)进行索引,以找到正确的那个.。

而函数myproc则返回当前CPU上运行进程struct proc的指针。

你可能感兴趣的:(linux)