Bochs X PC模拟器原理与启动流程分析课件.ppt
《Bochs X PC模拟器原理与启动流程分析课件.ppt》由会员分享,可在线阅读,更多相关《Bochs X PC模拟器原理与启动流程分析课件.ppt(44页珍藏版)》请在三一办公上搜索。
1、2022/12/20,1,主要内容,PC系统及X86模拟器模拟主控模块系统板的模拟内存模块的模拟CPU的模拟I/O模块的模拟Bochs模拟器初始化启动过程基于Bochs的实验环境下一步工作思路参考资料,Bochs X86 PC模拟器原理与启动流程分析,2022/12/20,2,典型PC系统构成,PC系统及X86模拟器,2022/12/20,3,常见X86模拟器,比较典型的X86模拟器BochsPTLsimCOTsonQemu,PC系统及X86模拟器,Bochs模拟器,Bochs是一个X86 PC的模拟器,它可以模拟几乎所有类型的X86 CPU,包括16位,32位和64位(X86_64),内存以
2、及I/O设备,在其上可以运行Linux,Windows等操作系统。其中模拟的X86_64的工作方式包括以下两类:IA-32模式:包括实模式,保护模式和虚拟8086模式三个子模式IA-32e模式:包括长模式和兼容模式,4,PC系统及X86模拟器,Bochs模拟器基本构成,5,PC系统及X86模拟器,模拟主控模块,为用户提供交互的系统配置信息更改以及控制Bochs模拟器的运行,根据用户的配置信息在模拟主控对象中建立配置信息参数树并初始化,为Bochs系统硬件的初始化提供输入,启动Bochs模拟器并进入客户操作系统的引导,将宿主机的外部事件如,键盘键击,鼠标移动等通过信号量机制从而触发Bochs模拟
3、器相应设备进行响应(理解不一定正确),6,模拟主控模块,2022/12/20,7,系统板主要功能,为系统外设,系统板等模块提供工作时钟,从而驱动各功能模块的正常工作,负责为外设向CPU模块触发中断控制信号,总线请求信号等功能,负责提供CPU系统复位,外设复位以及A20地址线开启与关闭,I/O端口读写的相关功能,系统板的模拟,2022/12/20,8,系统板的实现模型,64个定时器资源,定时器实现的控制字段,其中currCountdown为0时将触发CountdownEvent时间,从而执行某一个定时器函数,这个函数通常是I/O设备注册的回调函数,系统板定时器实现的激励来源,I/O设备初始化时注
4、册的定时器回调函数,实现一些系统控制功能的字段,如HRQ代表示否向CPU发出总线请求等,系统板的模拟,系统板与CPU及I/O模块的相互关系,set_HRQ (用于DMA向系统发出总线请求) set_INTR (调用CPU的set_INTR ) MemoryMappingChanged(TLB刷新)invlpg(清除页表)Reset(CPU复位),在CPU每次指令执行循环cpu_loop中通过调用调用系统板的tick来实现系统板上各个定时器,系统复位Reset或CPU的中断响应IAC,向系统板注册工作驱动的定时器及中断,9,系统板的模拟,2022/12/20,10,系统板初始化,此时可以建立的概
5、念就是,系统板的定时器资源已经生成,可以供I/O设备注册使用,同时I/O设备通过系统板向CPU发送系统控制信号的功能已经准备就绪,系统板的模拟,内存模块的基本功能,根据系统配置,一次性的向宿主机分配一片存储空间(应该不是物理内存),建立一套与实际机器类似的内存空间映像,在X86中,有些I/O设备可能以内存映射的方式存取而不是通过传统的in或out指令实现,如果有这需求,相应的I/O设备必须向内存模块注册I/O读写程序,这样当使用readPhysicalPage等接口时会判断是否是I/O设备空间而进行不同的存取操作,内存的一个主要功能就是向CPU提供存取指令和数据,以便CPU能够不停的取指,执行
6、及回写,实现各种指令的功能,在Bochs硬件初始化时向Bochs模拟的内存空间的ROM地址空间加载可运行的BIOS二进制程序,以为后序Bochs复位运行作准备,11,内存模块的模拟,内存模块的实现模型,2022/12/20,12,2,记载目前系统内存使用情况的一些字段,用于实现内存的分配管理,3,实现I/O内存映射的注册管理服务,其中包含了地址信息,当系统通过readPhyicalPagewritePhysicalPage等存取函数时会判断是否是一个I/O内存映射,如果是则执行I/O内存映射处理函数,1,初始化时,根据.bochsrc配置文件中的(memory guest=512 host=2
7、56 )从宿主机中预先分配好Bochs模拟器所需的内存,并用vector,rom等保存相应的起始地址,4,内存模块为CPU提供了存取指令数据以及为I/O提供了内存映射服务,内存模块的模拟,内存模块与CPU及I/O交互关系,为CPU模块提供的服务数据和指令的存取MMU地址变换为I/O提供的服务I/O内存映射读写处理注册管理实现I/O内存映射的存取,13,内存模块的模拟,内存模块的初始化,2022/12/20,14,为Bochs模拟器准备好了内存空间,可以为CPU提供存取指令数据服务,同时也为需要实现I/O内存映射的设备准备好了注册使用功能,内存模块的模拟,CPU模块的主要功能,根据X86指令的逻
8、辑功能分别实现各类X86指令,大部分指令按其功能分别用不同的源代码文件实现,通过prefetch,fetchDecode以及具体指令处理函数及异常处理等实现Bochs指令执行循环逻辑,为CPU指令的执行提供数据和指令地址的变换,安全保护等功能,最终实现对内存模块的存取,具体主要通过translate_linear,access_linear,dtranslate_linear,itranslate_linear,主要包括系统复位,系统初始化等功能,实现X86系统的各类系统寄存器和通用寄存器以及其状态的变换逻辑,在系统中设置一个全局标志信息表示异步中断异常是否有发生,相应的异常请发生只要将其进行
9、相应设置即可,15,CPU的模拟,X86架构CPU的模拟-实现逻辑结构,CPU的核心逻辑就是指令执行循环,16,CPU的模拟,CPU指令循环,检测系统是否有异常、中断等事件发生,这种事件的来源有APIC,INIT,SMI,INTR,reset,bx_stop_simulation,系统板DMA总线请求以及某些产生异常的指令,根据逻辑地址获取线性地址,再由线性地址变换到物理地址,这样就准备好了CPU存取一条指令IP地址指针,可以由CPU通过内存模块获取指令了,根据上一步获取的地址开始从内存模块中获取指令并译码填充在待处理的指令变量i中,供下一步调用,对译码好的指令进行调研执行,完成指令的逻辑功能
10、,驱动系统板中的定时器,从而为驱动Bochs其余设备等模块工作。,17,CPU的模拟,CPU模块的初始化,2022/12/20,18,CPU会在bx_init_hardware中由系统板复位触发CPU的复位,从而使得CPU中各寄存器回到Intel手册上关于处理器初始化的初值,之后系统将会从0XFFFFFFF0处开始执行,I/O模块的主要功能,负责Bochs模拟设备实例的创建与初始化,到底要创建哪些设备是根据模拟主控对象初始化时收集的系统配置信息决定,在X86架构中有专门的I/O指令,负责对各类设备寄存器的操作,此功能就是提供I/O地址空间管理的,为不同的端口根据设备需要提供不同的读写函数,负责
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Bochs PC模拟器原理与启动流程分析课件 PC 模拟器 原理 启动 流程 分析 课件

链接地址:https://www.31ppt.com/p-1827506.html