摘要: 在看xv6的代码,先做一下简单的笔记。通常来说,进程A持有锁,最终由A释放。但是在进程切换的时候不同。当一个进程释放CPU的时候,调用yield()1 yield()2 {3 lock(&proctab.lock);4 proc->state = RUNNABLE;5 sched();6 unlock(&proctab.lock);7 }proc是全局变量,指向当前进程。当A持有锁,然后调用sched的时候,转到scheduler中去了: 1 scheduler(void) 2 { 3 for(;;){ 4 lock(&proctab.l... 阅读全文
posted @ 2013-03-19 00:46 canghai 阅读(163) 评论(0) 推荐(0)