Linux 内核 schedule时的preemption notify机制

内核进行进程切换时,先调用了__schedule,在关抢占后调用context_switch:
prepare_task_switch里面调用fire_sched_out_preempt_notifiers,进而调用prev进程注册的sched_out操作,
这里是分支:如果是新创建的进程被调度了,要调用schedule_tail:
回到主题:finish_task_switch这里会调用fire_sched_in_preempt_notifiers:
preempt_notifiers在哪里注册的呢,对kvm来说是这里:

kvm模块加载的时候vmx_init->kvm_init里面初始化了kvm_preempt_ops

所以kvm_sched_in和kvm_sched_out被调用时的上下文是关抢占的

Leave a Reply

Your email address will not be published. Required fields are marked *