xen架构与源码分析课件_第1页
xen架构与源码分析课件_第2页
xen架构与源码分析课件_第3页
xen架构与源码分析课件_第4页
xen架构与源码分析课件_第5页
已阅读5页,还剩52页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

xen架构与源码分析xen架构与源码分析1xen架构与源码分析xen源码概览xen架构实现与源码分析Xen启动过程关注点下周计划xen架构与源码分析xen源码概览2xen架构与源码分析xen源码概览xen架构实现与源码分析Xen启动过程关注点下周计划xen架构与源码分析xen源码概览3Xen-3.4.0/buildconfigs/config/docs/extras/stubdom/tools/unmodified_drivers/xen/.bk-to-hg.hg_archival.txt.hgignore.hgtags.hg-to-bk.rootkeysConfig.mkCopyinginstall.shMakefileREADMEXen-3.4.0/buildconfigs/.bk-to-4xen源码概览buildconfigs/config/该文件夹下包含在多种操作系统下编译xen的配置参数设置文件。docsLaTEK格式的Xen文档以及man文档xen源码概览buildconfigs/5xen源码概览extras/--mini-OS,内含可运行在XenDomainU的微操作系统stubdom/IOEMUStubDomU,PV-GRUBStubDomU,以及创建新的stubdomainU的示例代码。tools/用于支持或增强xen监控器的工具集合xen源码概览extras/--mini-OS,内含可运6xen源码概览unmodified_drivers/Linux2.6驱动程序xen/Xen监控器内核xen源码概览unmodified_drivers/7xen-3.4.0/xenarch/架构相关,函数实现common/公用crypto/加解密drivers/驱动include/头文件目录,函数定义tools/工具xsm/安全模块COPYINGMakefileRules.mkmake配置规则xen-3.4.0/xenarch/架构相关,函数实现CO8xen架构与源码分析xen源码概览xen架构实现与源码分析MMUCPUIOVMXXen启动过程关注点xen架构与源码分析xen源码概览9xen--XenandtheArtofVirtualizationRevisited,IanPratt,CitrixSystemsIncxen--XenandtheArtofVirtua10Xen源码分析虚拟化四个核心技术MMU虚拟化CPU虚拟化事件通道IO虚拟化硬件支持VMX技术Xen源码分析虚拟化四个核心技术11xen架构与源码分析xen源码概览xen架构实现与源码分析MMUxen内存管理Guest内存管理CPUIOVMXXen启动过程关注点xen架构与源码分析xen源码概览12MMU/xen/include/asm-x86/config.h/xen/include/mm.h/xen/arch/x86/mm.c/xen/include/asm-x86/p2m.h/xen/include/public/memory.h/xen/common/memory.c/xen/include/public/xen.hXen-guest内存分配/隔离分页机制,分段机制地址转换MMU/xen/include/asm-x86/config13e.g.xen内存/xen/include/asm-x86/config.h最高168M给xen专用e.g.xen内存/xen/include/asm-x8614e.g.Guest内存/xen/include/asm-x86/p2m.h伪物理内存模型e.g.Guest内存/xen/include/asm-x15xen架构与源码分析xen源码概览xen架构实现与源码分析MMUCPUIOVMXXen启动过程关注点xen架构与源码分析xen源码概览16CPU/xen/arch/x86/irq.c/xen/include/xen/irq.h/linux*/include/linux/Interrupt.h/xen/arch/x86/trap.c/xen/include/asm-x86/processor.h/xen/include/asm-x86/desc.h/xen/include/xen/sched.h/xen/include/xen/timer.h/xen/common/timer.c/xen/arch/x86/time.c/xen/include/public/xen.h/linux*/arch/i386/kernel/time-xen.c/xen/include/public/vcpu.h/xen/include/asm-x86/domain.h/xen/include/public/arch-x86/xen.h/xen/arch/x86/setup.c/xen/common/domain.c/xen/common/schedule.c/xen/include/xen/sched-if.h中断/异常处理时间/计时器VCPU及其调度CPU/xen/arch/x86/irq.c中断/异常处理17xen架构与源码分析xen架构实现与源码分析MMUCPU物理中断虚拟中断异常处理xen异常处理Guest异常处理IOVMXxen架构与源码分析xen架构实现与源码分析18xen架构与源码分析xen架构实现与源码分析MMUCPU物理中断虚拟中断异常处理xen异常处理Guest异常处理IOVMXxen架构与源码分析xen架构实现与源码分析19物理中断处理/xen/arch/x86/irq.cXen自行处理两个中断:--串口中断+计时器中断Guest处理中断--利用异步通信机制xen->guest--通知所有注册该中断的GuestOS物理中断处理/xen/arch/x86/irq.cXen自行20物理中断向量表/xen/arch/x86/trap.c定义IDT/xen/include/asm-x86/processor.h/xen/include/asm-x86/desc.h物理中断向量表/xen/arch/x86/trap.c定义21IDT初始化/xen/arch/x86/boot/x86_32.S第一次初始化/xen/arch/x86/i8259.c第二次初始化IDT初始化/xen/arch/x86/boot/x86_322xen架构与源码分析xen架构实现与源码分析MMUCPU物理中断虚拟中断异常处理xen异常处理Guest异常处理IOVMXxen架构与源码分析xen架构实现与源码分析23虚拟中断/xen/include/public/xen.hVIRQ定义虚拟中断,8种(3个局部vcpu,5个全局中断)虚拟中断/xen/include/public/xen.h24虚拟中断/linux-*/drivers/xen/core/evtchn.cL101IRQ<->VIRQ映射/xen/common/event_channel.cXen发送中断通知虚拟中断/linux-*/drivers/xen/core/25xen架构与源码分析xen架构实现与源码分析MMUCPU物理中断虚拟中断异常处理xen异常处理Guest异常处理IOVMXxen架构与源码分析xen架构实现与源码分析26异常处理—xenxen内核异常处理IDT中0-31的中断向量+hypercall(0x82)重要源文件/xen/arch/x86/traps.c/xen/arch/x86/x86_32/entry.S/xen/include/asm-x86/processor.h异常处理—xenxen内核异常处理27异常处理—GuestGuest内核异常处理VIDT,GuestOS自行处理异常一旦domain不运行,对应VIDT被删除重要源文件/xen/include/public/arch-x86/xen.h/linux-*/arch/i386/kernel/traps-xen.c/xen/arch/x86/traps.c/xen/include/asm-x86/domain.h/xen/arch/x86/x86_32/entry.S异常处理—GuestGuest内核异常处理28xen异常处理/xen/arch/x86/traps.c将处理程序插入IDT表项xen异常处理/xen/arch/x86/traps.c29xen异常处理/xen/arch/x86/traps.cxen异常处理/xen/arch/x86/traps.c30xen异常处理/xen/arch/x86/traps.c初始化IDThypercall双重错误NMI延迟xen异常处理/xen/arch/x86/traps.c初31xen异常处理/xen/arch/x86/traps.c初始化IDThypercall双重错误NMI延迟xen异常处理/xen/arch/x86/traps.c初32e.g.INT3/xen/arch/x86/x86_32/entry.STRAP_int3为中断向量定义在/xen/include/asm-x86/processor.hL87-110hanlde_exception定义在/xen/arch/x86/x86_32/entry.S保存寄存器->调用C语言处理函数->退出处理函数e.g.INT3/xen/arch/x86/x86_32/33e.g.INT3/xen/arch/x86/x86_32/entry.Se.g.INT3/xen/arch/x86/x86_32/34e.g.INT3/xen/arch/x86/x86_32/entry.Sdo_int3由C语言实现/xen/arch/x86/traps.ce.g.INT3/xen/arch/x86/x86_32/35xen架构与源码分析xen架构实现与源码分析MMUCPU物理中断虚拟中断异常处理xen异常处理Guest异常处理IOVMXxen架构与源码分析xen架构实现与源码分析36Guest异常处理初始化VIDTGuestOS可直接使用xen的IDT表处理异常,也可以使用自己的VIDT自行处理异常GuestOS启动时会将自己的异常表发送给xen,注册到VCPU相应的数据结构。重要源码/xen/include/public/arch-x86/xen.h:structtrap_info/linux*/arch/i386/kernel/traps.xen.c:trap_init()注册到xen/xen/arch/x86/traps.c:do_set_trap_table()完成VCPU注册Guest异常处理初始化VIDT37Guest异常处理处理流程domain内部异常>xen捕获/识别>xen在Guest中创建异常栈框>交由Guest处理/xen/arch/x86/traps.cGuest异常处理处理流程38系统调用快速异常处理程序FastHandler重要源码/xen/include/public/arch-x86/xen.h/linux-*/arch/i386/kernel/traps-xen.c/xen/arch/x86/traps.c/xen/include/asm-x86/domain.h/xen/arch/x86/x86_32/entry.S系统调用快速异常处理程序FastHandler39系统调用快速异常处理程序FastHandler/xen/arch/x86/x86_32/traps.cVoidinit_int80_direct_trap(structvcpu*u)VCPU中int80_desc成员当GuestOS中产生系统调用时,将会直接调用该描述符中记录的处理程序,而不需要由xen处理/xen/include/asm-x86/domain.h系统调用快速异常处理程序FastHandler40xen架构与源码分析xen源码概览xen架构实现与源码分析MMUCPUIOVMXXen启动过程关注点xen校验domain0MMU监控:进程页/段的完整性CPU监控:Hypercall/system_call校验发起对象IO监控:校验发起对象xen架构与源码分析xen源码概览41IO设备虚拟化/xen/include/public/io/ring.h/xen/include/public/io/blkif.h/linux*/drivers/xen/blkfront/blkfront.c/xen/include/public/io/netif.h/xen/include/public/io/xs_wire.h/linux*/drivers/xen/xenbus/xenbus_xs.c/xen/include/public/io/xenbus.h/linux*/drivers/xen/xenbus/xenbus_probe.c/linux*/drivers/xen/blkback/xenbus.cIO环事件通道授权表xenstore和xenbusIO设备虚拟化/xen/include/public/io/42设备模型仿真设备模型Qemu直接分配设备模型IOMMU虚拟设备模型–半虚拟化修改guestOS,性能最好前端后端设备驱动分离页面共享设备模型仿真设备模型43设备模型仿真设备模型Qemu直接分配设备模型IOMMU虚拟设备模型–半虚拟化修改guestOS,性能最好前端后端设备驱动分离页面共享设备模型仿真设备模型44设备模型虚拟设备模型–半虚拟化设备IO环生产者消费者通讯方式事件通道一位表示一个事件,虚拟的“硬件中断”授权表Domain之间共享内存,授权表记录权限xenstore树状数据库,存放虚拟机的配置数据。xenbus数据交换中心,为设备读写的前后端提供安全通道。设备模型虚拟设备模型–半虚拟化45设备IO环/xen/include/public/io/ring.hIO环定义文件/xen/include/public/io/blkif.h块设备IO接口/linux*/drivers/xen/blkfront/blkfront.c块设备前端/xen/include/public/io/netif.h网络设备IO接口设备IO环/xen/include/public/io/ri46xenstore&xenbusxenstore/xen/include/public/io/xs_wire.h/linux*/drivers/xen/xenbus/xenbus_xs.cxenbus/xen/include/public/io/xenbus.h/linux*/drivers/xen/xenbus/xenbus_probe.c/linux*/drivers/xen/blkback/xenbus.cxenstore&xenbusxenstore47xen架构与源码分析xen源码概览xen架构实现与源码分析MMUCPUIOVMXXen启动过程关注点xen校验domain0MMU监控:进程页/段的完整性CPU监控:Hypercall/system_call校验发起对象IO监控:校验发起对象xen架构与源码分析xen源码概览48VMX技术/xen/include/asm-x86/hvm/*VMCS初始化陷入事件处理程序VMX技术/xen/include/asm-x86/hvm/49VMCS的设置VMCS定义/创建/设置/xen/include/asm-x86/hvm/vmx/vmcs.hVMCS的设置VMCS定义/创建/设置50xen架构与源码分析xen源码概览xen架构实

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论