PHP
首页 | 下载 | 博客 | 链接

区域

工具

查看代码的工具推荐用cscope,配合vim查找原型/函数/结构相当方便,如果怕麻烦,lxr也是个不错的选择,比如lxr.linux.no


xen 3.4 代码分析

xen的启动(schedule)
xen的运行(schedule)
schedule && credit
Event Channel
per cpu
上下文切换过程
数据结构
hypercall


xen 3.0 代码分析

xen启动/运行过程简介


资源链接

to be continue...


说明

文章中引用的版本是xen-3.0.4,分析的是x86_64平台. 为了保证行号的一致性,中文的注释没有插入回车/换行符.可能会显得有些紧巴巴的.
由于个人能力有限,网站内容存在许多错误和不足,希望读者批评指正. 本人联系方式:yubo@yubo.org

中断上下文切换

任务(task)调度时上下文切换

对于pcpu而言,每一个vcpu就像是一个任务,需要对分配给自己的每个任务进行调度管理
  1. 将cpu的运行时间合理地分配给自己的任务队列
  2. 如果打开了migrate功能,则需要将cpu的运行时间合理地分配给适合的vcpu(范围是所有的vcpu哦)
schedule()的最后,使用context_switch()进行2个任务(task/vcpu)之间的切换 lazy_fp_switch() ia64_switch_to()
任务的调度,对于单核来说,由时间中断判断每个任务的时间片,然后决定下一个调度的任务,在ia64中,使用

cpu上下文切换

cpu切换是什么

可能存在几种情况,使得pcpu(物理cpu)需要在vcpu(虚拟cpu)之间进行切换 比如cpu在2个vcpu之间切换时,就会用到
schedule()
context_switch()
flush_vtlb_for_context_switch()
flush_cache_for_context_switch()
context_saved()
lazy_fp_switch()
ia64_switch_to()
这个以后分析***
 
Done in 0.0372049808502 seconds