中断上下文切换
任务(task)调度时上下文切换
对于pcpu而言,每一个vcpu就像是一个任务,需要对分配给自己的每个任务进行调度管理- 将cpu的运行时间合理地分配给自己的任务队列
- 如果打开了migrate功能,则需要将cpu的运行时间合理地分配给适合的vcpu(范围是所有的vcpu哦)
任务的调度,对于单核来说,由时间中断判断每个任务的时间片,然后决定下一个调度的任务,在ia64中,使用
cpu上下文切换
cpu切换是什么
可能存在几种情况,使得pcpu(物理cpu)需要在vcpu(虚拟cpu)之间进行切换- vcpu一般会比pcpu多的,为了让每个vcpu都能使用,pcpu只好在多个vcpu之间切来切去
- 每个vcpu上的任务负载不见得是均匀的,pcpu可能会从比较闲的vcpu上切换到比较忙的vcpu上去,尽力达到负载均衡的目的
schedule()
context_switch()
flush_vtlb_for_context_switch()
flush_cache_for_context_switch()
context_saved()
lazy_fp_switch()
ia64_switch_to()
这个以后分析***
