BochsXPC模拟器原理与启动流程分析熊海泉课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《BochsXPC模拟器原理与启动流程分析熊海泉课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- BochsXPC 模拟器 原理 启动 流程 分析 熊海泉 课件
- 资源描述:
-
1、熊海泉熊海泉2023-1-301主要内容主要内容 PC系统及系统及X86模拟器模拟器 模拟主控模块模拟主控模块 系统板的模拟系统板的模拟 内存模块的模拟内存模块的模拟 CPU的模拟的模拟 I/O模块的模拟模块的模拟 Bochs模拟器初始化启动过程模拟器初始化启动过程 基于基于Bochs的实验环境的实验环境 下一步工作思路下一步工作思路 参考资料参考资料Bochs X86 PC模拟器原理与启动流程分析模拟器原理与启动流程分析熊海泉熊海泉2023-1-302典型典型PC系统构成系统构成PC系统及系统及X86模拟器模拟器熊海泉熊海泉2023-1-303常见常见X86模拟器模拟器 比较典型的比较典型的
2、X86模拟器模拟器 Bochs PTLsim COTson Qemu PC系统及系统及X86模拟器模拟器熊海泉熊海泉Bochs模拟器模拟器 Bochs是一个是一个X86 PC的模拟器,它可以模拟几乎所有的模拟器,它可以模拟几乎所有类型的类型的X86 CPU,包括,包括16位,位,32位和位和64位位(X86_64),内存以及内存以及I/O设备,在其上可以运行设备,在其上可以运行Linux,Windows等操作系统。等操作系统。其中模拟的其中模拟的X86_64的工作方式包括以下两类:的工作方式包括以下两类:IA-32模式模式:包括实模式,保护模式和虚拟包括实模式,保护模式和虚拟8086模式三模式
3、三个子模式个子模式 IA-32e模式模式:包括长模式和兼容模式包括长模式和兼容模式4PC系统及系统及X86模拟器模拟器熊海泉熊海泉Bochs模拟器基本构成模拟器基本构成5PC系统及系统及X86模拟器模拟器熊海泉熊海泉模拟主控模块模拟主控模块为用户提供交互的系统为用户提供交互的系统配置信息更改以及控配置信息更改以及控制制Bochs模拟器的运模拟器的运行行根据用户的配置信息在根据用户的配置信息在模拟主控对象中建立模拟主控对象中建立配置信息参数树并初配置信息参数树并初始化,为始化,为Bochs系统系统硬件的初始化提供输硬件的初始化提供输入入启动启动Bochs模拟器并进模拟器并进入客户操作系统的引导入
4、客户操作系统的引导将宿主机的外部事件如,将宿主机的外部事件如,键盘键击,鼠标移动键盘键击,鼠标移动等通过信号量机制从等通过信号量机制从而触发而触发Bochs模拟器模拟器相应设备进行响应相应设备进行响应(理理解不一定正确解不一定正确)6模拟主控模块模拟主控模块熊海泉熊海泉2023-1-307系统板主要功能系统板主要功能为系统外设,系统板等为系统外设,系统板等模块提供工作时钟,从模块提供工作时钟,从而驱动各功能模块的正而驱动各功能模块的正常工作常工作负责为外设向负责为外设向CPUCPU模块模块触发中断控制信号,总触发中断控制信号,总线请求信号等功能线请求信号等功能负责提供负责提供CPUCPU系统复
5、系统复位,外设复位以及位,外设复位以及A20A20地址线开启与关闭,地址线开启与关闭,I/OI/O端口读写的相关功端口读写的相关功能能系统板的模拟系统板的模拟熊海泉熊海泉2023-1-308系统板的实现模型系统板的实现模型64个定时器资源个定时器资源定时器实现的控制字定时器实现的控制字段,其中段,其中currCountdown为为0时将触发时将触发CountdownEvent时间,从而执行某时间,从而执行某一个定时器函数,一个定时器函数,这个函数通常是这个函数通常是I/O设备注册的回设备注册的回调函数调函数系统板定时器实系统板定时器实现的激励来源现的激励来源I/O设备初始化设备初始化时注册的定
6、时时注册的定时器回调函数器回调函数实现一些系统控实现一些系统控制功能的字段,制功能的字段,如如HRQ代表示代表示否向否向CPU发出发出总线请求等总线请求等系统板的模拟系统板的模拟熊海泉熊海泉系统板与系统板与CPU及及I/O模块的相互关系模块的相互关系set_HRQ(用于用于DMA向系统发出总线请求向系统发出总线请求)set_INTR(调用调用CPU的的set_INTR)MemoryMappingChanged(TLB刷新)刷新)invlpg(清除页表)(清除页表)Reset(CPU复位复位)在在CPU每次指令执行循环每次指令执行循环cpu_loop中通过调用调用中通过调用调用系统板的系统板的t
7、ick来实现系统板上各个定时器来实现系统板上各个定时器系统复位系统复位Reset或或CPU的中断响应的中断响应IAC向系统板注册工作驱动的定时器及中断向系统板注册工作驱动的定时器及中断9系统板的模拟系统板的模拟熊海泉熊海泉2023-1-3010系统板初始化系统板初始化此时可以建立的概念就是,此时可以建立的概念就是,系统板的定时器资源已系统板的定时器资源已经生成,可以供经生成,可以供I/O设设备注册使用,同时备注册使用,同时I/O设备通过系统板向设备通过系统板向CPU发送系统控制信号的功发送系统控制信号的功能已经准备就绪能已经准备就绪系统板的模拟系统板的模拟熊海泉熊海泉内存模块的基本功能内存模块
8、的基本功能根据系统配置,一次性根据系统配置,一次性的向宿主机分配一片的向宿主机分配一片存储空间存储空间(应该不是应该不是物理内存物理内存),建立一,建立一套与实际机器类似的套与实际机器类似的内存空间映像内存空间映像在在X86中,有些中,有些I/O设备可能以内存映设备可能以内存映射的方式存取而不射的方式存取而不是通过传统的是通过传统的in或或out指令实现,如指令实现,如果有这需求,相应果有这需求,相应的的I/O设备必须向设备必须向内存模块注册内存模块注册I/O读写程序,这样当读写程序,这样当使用使用readPhysicalPage等接口时会判断等接口时会判断是否是是否是I/O设备空设备空间而进
9、行不同的存间而进行不同的存取操作取操作内存的一个主要功能就内存的一个主要功能就是向是向CPU提供存取指提供存取指令和数据,以便令和数据,以便CPU能够不停的取指,执能够不停的取指,执行及回写,实现各种行及回写,实现各种指令的功能指令的功能在在Bochs硬件初始化时硬件初始化时向向Bochs模拟的内存模拟的内存空间的空间的ROM地址空间地址空间加载可运行的加载可运行的BIOS二二进制程序,以为后序进制程序,以为后序Bochs复位运行作准复位运行作准备备11内存模块的模拟内存模块的模拟熊海泉熊海泉内存模块的实现模型内存模块的实现模型2023-1-30122,记载目前系,记载目前系统内存使用情统内存
10、使用情况的一些字段,况的一些字段,用于实现内存用于实现内存的分配管理的分配管理3,实现,实现I/O内存映射的注内存映射的注册管理服务,其中包含了册管理服务,其中包含了地址信息,当系统通过地址信息,当系统通过readPhyicalPagewritePhysicalPage等存取函数时会判断是否是等存取函数时会判断是否是一个一个I/O内存映射,如果内存映射,如果是则执行是则执行I/O内存映射处内存映射处理函数理函数1,初始化时,根,初始化时,根据据.bochsrc配置文件中的配置文件中的(memory guest=512 host=256)从宿主机中预从宿主机中预先分配好先分配好Bochs模拟器所
11、需模拟器所需的内存,并用的内存,并用vector,rom等保存相应的起始地址等保存相应的起始地址4,内存模块为,内存模块为CPU提供了存提供了存取指令数据以取指令数据以及为及为I/O提供提供了内存映射服了内存映射服务务内存模块的模拟内存模块的模拟熊海泉熊海泉内存模块与内存模块与CPU及及I/O交互关系交互关系 为为CPU模块提供的服务模块提供的服务 数据和指令的存取数据和指令的存取 MMU地址变换地址变换 为为I/O提供的服务提供的服务 I/O内存映射读写处理注册内存映射读写处理注册管理管理 实现实现I/O内存映射的存取内存映射的存取13内存模块的模拟内存模块的模拟熊海泉熊海泉内存模块的初始化
12、内存模块的初始化2023-1-3014为为Bochs模拟器准备好了内存空间,模拟器准备好了内存空间,可以为可以为CPU提供存取指令数据服提供存取指令数据服务,同时也为需要实现务,同时也为需要实现I/O内存内存映射的设备准备好了注册使用功映射的设备准备好了注册使用功能能内存模块的模拟内存模块的模拟熊海泉熊海泉CPU模块的主要功能模块的主要功能根据根据X86指令的逻辑功指令的逻辑功能分别实现各类能分别实现各类X86指令,大部分指令按指令,大部分指令按其功能分别用不同的其功能分别用不同的源代码文件实现源代码文件实现通过通过prefetch,fetchDecode以及以及具体指令处理函数及具体指令处理
13、函数及异常处理等实现异常处理等实现Bochs指令执行循环指令执行循环逻辑逻辑为为CPU指令的执行提供数据指令的执行提供数据和指令地址的变换,安全和指令地址的变换,安全保护等功能,最终实现对保护等功能,最终实现对内存模块的存取,具体主内存模块的存取,具体主要通过要通过translate_linear,access_linear,dtranslate_linear,itranslate_linear主要包括系统复位,系主要包括系统复位,系统初始化等功能统初始化等功能实现实现X86系统的各类系统系统的各类系统寄存器和通用寄存器寄存器和通用寄存器以及其状态的变换逻以及其状态的变换逻辑辑在系统中设置一个
14、全局在系统中设置一个全局标志信息表示异步中标志信息表示异步中断异常是否有发生,断异常是否有发生,相应的异常请发生只相应的异常请发生只要将其进行相应设置要将其进行相应设置即可即可15CPU的模拟的模拟熊海泉熊海泉X86架构架构CPU的模拟的模拟-实现逻辑实现逻辑结构结构CPU的核心逻辑就是指的核心逻辑就是指令执行循环令执行循环16CPU的模拟的模拟熊海泉熊海泉CPU指令循环指令循环检测系统是否有异常、中断等检测系统是否有异常、中断等事件发生,这种事件的来源事件发生,这种事件的来源有有APIC,INIT,SMI,INTR,reset,bx_stop_simulation,系统板系统板DMA总线请求
15、以及某总线请求以及某些产生异常的指令些产生异常的指令根据逻辑地址获取线性地址,再由根据逻辑地址获取线性地址,再由线性地址变换到物理地址,这样线性地址变换到物理地址,这样就准备好了就准备好了CPU存取一条指令存取一条指令IP地址指针,可以由地址指针,可以由CPU通过内存通过内存模块获取指令了模块获取指令了根据上一步获取的地址开根据上一步获取的地址开始从内存模块中获取指始从内存模块中获取指令并译码填充在待处理令并译码填充在待处理的指令变量的指令变量i中,供下中,供下一步调用一步调用对译码好的指令进行调研对译码好的指令进行调研执行,完成指令的逻辑执行,完成指令的逻辑功能功能驱动系统板中的定时器,驱动
16、系统板中的定时器,从而为驱动从而为驱动Bochs其余其余设备等模块工作。设备等模块工作。17CPU的模拟的模拟熊海泉熊海泉CPU模块的初始化模块的初始化2023-1-3018CPU会在会在bx_init_hardware中中由系统板复位触发由系统板复位触发CPU的的复位,从而使得复位,从而使得CPU中各中各寄存器回到寄存器回到Intel手册手册上关于处理器初始化的上关于处理器初始化的初值,之后系统将会从初值,之后系统将会从0XFFFFFFF0处开始执处开始执行行熊海泉熊海泉I/O模块的主要功能模块的主要功能负责负责Bochs模拟设备实例的创模拟设备实例的创建与初始化,到底要创建哪建与初始化,到
17、底要创建哪些设备是根据模拟主控对象些设备是根据模拟主控对象初始化时收集的系统配置信初始化时收集的系统配置信息决定息决定在在X86架构中有专门的架构中有专门的I/O指令,指令,负责对各类设备寄存器的操作,负责对各类设备寄存器的操作,此功能就是提供此功能就是提供I/O地址空间管地址空间管理的,为不同的端口根据设备需理的,为不同的端口根据设备需要提供不同的读写函数要提供不同的读写函数负责外部设备资源的分配负责外部设备资源的分配管理,供各外设使用管理,供各外设使用为为CPU I/O指令提供的指令提供的具体实现具体实现各类具体外设的功能的逻各类具体外设的功能的逻辑模拟,一般包括初始辑模拟,一般包括初始化
18、,复位,以及设备专化,复位,以及设备专用功能的模拟用功能的模拟熊海泉熊海泉Bochs I/O模块的实现模型模块的实现模型作为与其它作为与其它Bochs模块模块如如CPU,系统板的接,系统板的接口,通过它可以找到口,通过它可以找到所有所有Bochs的设备,的设备,此外也在其中集中实此外也在其中集中实现了现了I/O地址空间的地址空间的管理管理具体设备的模拟实具体设备的模拟实现,根据各设备现,根据各设备功能,为每一个功能,为每一个设备单独构建一设备单独构建一个个C+类来实现类来实现20I/O模块的模拟模块的模拟熊海泉熊海泉Bochs模拟器设备基本结构模拟器设备基本结构向设备集注册向设备集注册I/O地
展开阅读全文