执行进程切换
进程切换可能只发生在精心定义的点: schedule()函数。这里,我们仅关注内核如何执行一个进程切换,从本质上说,每个进程切换由两步组成,
- 切换页全局目录以安装一个新的地址空间,
- 切换内核态堆栈和硬件上下文,因为硬件上下文提供了内核执行新进程所需要的所有信息,包含 CPU寄存器。
context_switch
进程切换的代码如下所示:
/*
* context_switch - switch to the new MM and the new
* thread's register state.
*/
static inline
task_t * context_switch(runqueue_t *rq