1. 程式人生 > >Xen中Credit排程演算法分析

Xen中Credit排程演算法分析

     schedule函式 -排程核心
     task_slice,排程器通過返回一個這樣的結構來確定下一個排程執行的虛擬機器
     struct task_slice{
           struct vcpu *task;
           s_time_t     time;
     }
      static void shcedule(void){
           struct vcpu *prev=current;
           ...
           next_slice=ops.do_schedule(now);//諮詢排程器得到下一個需要排程的VM;
           r_time=next_slice.time;
           next=next_slice.task;
           ...
           set_timer;
           context_switch(prev,next);
                 set_current(next);
                 ...
                  __context_switch();
                      ...
                      schedule_tail(next);//完成切換

      }
      static void __context_switch(void){
          struct cpu_user_regs *stack_regs=guest_cpu_user_regs();
          //儲存現場
          //恢復現場

     }
     schedule_tail 函式完成最後的切換,HVM下是vmx_do_resume或svm_do_resume都要呼叫reset_stack_and_jump