bochsxpc模拟器原理与启动流程分析熊海泉.pptVIP

bochsxpc模拟器原理与启动流程分析熊海泉.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
由bx_init_options建立的系 统配置参数树 * Bochs模拟器初始化启动过程 Bochs系统的运行准备 * Bochs模拟器初始化启动过程 熊海泉 熊海泉 主要内容 PC系统及X86模拟器 模拟主控模块 系统板的模拟 内存模块的模拟 CPU的模拟 I/O模块的模拟 Bochs模拟器初始化启动过程 基于Bochs的实验环境 下一步工作思路 参考资料 Bochs X86 PC模拟器原理与启动流程分析 典型PC系统构成 PC系统及X86模拟器 常见X86模拟器 比较典型的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模式三个子模式 IA-32e模式:包括长模式和兼容模式 * PC系统及X86模拟器 Bochs模拟器基本构成 * PC系统及X86模拟器 模拟主控模块 为用户提供交互的系统配置信息更改以及控制Bochs模拟器的运行 根据用户的配置信息在模拟主控对象中建立配置信息参数树并初始化,为Bochs系统硬件的初始化提供输入 启动Bochs模拟器并进入客户操作系统的引导 将宿主机的外部事件如,键盘键击,鼠标移动等通过信号量机制从而触发Bochs模拟器相应设备进行响应(理解不一定正确) * 模拟主控模块 * * 系统板主要功能 为系统外设,系统板等 模块提供工作时钟,从 而驱动各功能模块的正 常工作 负责为外设向CPU模块 触发中断控制信号,总 线请求信号等功能 负责提供CPU系统复 位,外设复位以及A20 地址线开启与关闭, I/O端口读写的相关功 能 系统板的模拟 系统板的实现模型 64个定时器资源 定时器实现的控制字段,其中currCountdown为0时将触发CountdownEvent时间,从而执行某一个定时器函数,这个函数通常是I/O设备注册的回调函数 系统板定时器实现的激励来源 I/O设备初始化时注册的定时器回调函数 实现一些系统控制功能的字段,如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 向系统板注册工作驱动的定时器及中断 * 系统板的模拟 系统板初始化 此时可以建立的概念就是,系统板的定时器资源已经生成,可以供I/O设备注册使用,同时I/O设备通过系统板向CPU发送系统控制信号的功能已经准备就绪 系统板的模拟 内存模块的基本功能 根据系统配置,一次性的向宿主机分配一片存储空间(应该不是物理内存),建立一套与实际机器类似的内存空间映像 在X86中,有些I/O设备可能以内存映射的方式存取而不是通过传统的in或out指令实现,如果有这需求,相应的I/O设备必须向内存模块注册I/O读写程序,这样当使用readPhysicalPage等接口时会判断是否是I/O设备空间而进行不同的存取操作 内存的一个主要功能就是向CPU提供存取指令和数据,以便CPU能够不停的取指,执行及回写,实现各种指令的功能 在Bochs硬件初始化时向Bochs模拟的内存空间的ROM地址空间加载可运行的BIOS二进制程序,以为后序Bochs复位运行作准备 * 内存模块的模拟 内存模块的实现模型 * * 2,记载目前系统内存使用情况的一些字段,用于实现内存的分配管理 3,实现I/O内存映射的注册管理服务,其中包含了地址信息,当系统通过readPhyicalPage writePhysicalPage 等存取函数时会判断是否是一个I/O内存映射,如果是则执行I/O内存映射处理函数 1,初始化时,根据.bochsrc配置文件中的(memory guest=512 host=256 )从宿主机中预先分配好Bochs模拟器所需的内存,并用vector,rom等保存相应的起始地址 4,内存模块为CPU提供了存取指令数据以及为I/O提供了内存映射服务 内存模块的模拟 内存模块与CPU及I/O交互关系 为CPU模块提供的服务 数据和指令的存取 MMU地址变换 为I/O提供的服务 I/O内存映射读写处理注册管理

文档评论(0)

kfcel5889 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档