/*
* schedule() is the main scheduler function.调度主函数,又称主调度
*/
asmlinkage void__schedschedule(void)
{
struct task_struct *prev, *next;//prev:换出进程标识符,next:换入进程标识符
unsigned long *switch_count;//对prev的进程切换进行计数
struct rq *rq;//运行队列
int cpu;//CPU号
need_resched:
preempt_disable();//关中断
cpu = smp_processor_id();//获取执行prev进程的cpu号
rq = cpu_rq(cpu);//获取cpu号所代表的CPU的运行队列
rcu_note_context_switch(cpu);//
prev = rq->curr;//获取运行队列中当前指向的进程,也是即将被换出的进程,进程状态是什么?
release_kernel_lock(prev);//释放大内核锁
need_resched_nonpreemptible:
schedule_debug(prev);
if (sched_feat(HRTICK))
hrtick_clear(rq);
r