Linux源码笔记-任务切换

(1)被动调度的决策:定时检查时间片

timer_handler

  clock_event_device->event_handler 

  tick_handle_periodic

     tick_periodic

        do_timer

        update_process_times

           scheduler_tick

             task_struct->sched_class->task_tick

               task_tick_fair

                   entity_tick

                       check_preempt_tick

                          resched_curr

                             set_tsk_need_resched

                                TIF_NEED_RESCHED

 

(2)抢占式调度的执行:中断或系统调用结束时

 preempt_enable

   preempt_schedule

      preempt_schedule_common

          _schedule

             context_switch

                switch_to

                finish_task_switch

 

(3)主动调度的执行:主动让出CPU。

schedule

    _schedule

           context_switch

                 switch_to

                  finish_task_switch

posted @ 2021-03-15 11:13  乌鸦嘴-raven  阅读(76)  评论(0)    收藏  举报