/*
* nr_running and cpu_load should be in the same cacheline because
* remote CPUs use both these fields when doing load calculation.
*/
unsigned long nr_running; //运行队列链表中可运行进程的数量
#ifdef CONFIG_SMP
unsigned long cpu_load; //基于运行队列中进程的平均数量的CPU复杂因子
#endif
unsigned long long nr_switches; //CPU执行进程切换的次数
/*
* This is part of a global counter where only the total sum
* over all CPUs matters. A task can increase this counter on
* one CPU and if it got migrated afterwards it may decrease
* it on another CPU. Always updated under the runqueue lock:
*/
unsigned long nr_uninterruptible; //先前在允许队列链表中而现在睡眠在TASK_UNINTERRUPTIBLE状态的进程数量
unsigned long expired_timestamp; //过期队列中最老的进程被插入队列的时间
unsigned long long timestamp_last_tick; //最近一次定时器中断的时间戳值
task_t *curr, *idle; //当前cpu上swapper进程的进程描述符指针
struct mm_struct *prev_mm; //在进程切换期间用来存放被替换进程的内存描述符地址
prio_array_t *active, //指向活动进程链表的指针
*expired, //指向过期进程链表的指针
arrays[2]; //活动进程和过期进程的两个集合
int best_expired_prio; //过期进程中静态优先级最高的进程
atomic_t nr_iowait; //先前在允许队列的链表中而现在正在等待磁盘I/O操作结束的进程的数量