linux 内核任务调度的三个任务队列(tast_list):
rt_sched_class
fair_sched_class
idle_sched_class
任务时间片(time slice):
DEF_TIMESLICE = (100 * HZ / 1000)
时间片启动(任务调中断)
{run_timer_softirq | tick_setup_sched_timer}-> update_process_times ->scheduler_tick->
curr->sched_class->task_tick{ task_tick_fair|task_tick_rt}
进程创建(fork)
do_fork->copy_process->sched_fork->__sched_fork(完成CPU 寄存器复制)
然后由 wake_up_new_task(p, clone_flags); 启动进程