Bochs X86 PC模拟器原理与启动流程分析--熊海泉解析

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Bochs X86 PC模拟器原 理与启动流程分析
熊 海 泉
xionghaiquan@sina.com.cn
2018/9/24
Bochs X86 PC模拟器原理与启动流程分析
熊海泉
1
主要内容
• • • • • • • • • • PC系统及X86模拟器 模拟主控模块 系统板的模拟 内存模块的模拟 CPU的模拟 I/O模块的模拟 Bochs模拟器初始化启动过程 基于Bochs的实验环境 下一步工作思路 参考资料
为用户提供交互的系统 配置信息更改以及控 制Bochs模拟器的运 根据用户的配置信息在 行 启动 Bochs模拟器并进 模拟主控对象中建立 入客户操作系统的引导 配置信息参数树并初 将宿主机的外部事件如, 始化,为Bochs系统 键盘键击,鼠标移动 硬件的初始化提供输 等通过信号量机制从 入 而触发 Bochs模拟器 相应设备进行响应(理 解不一定正确)
系统板定时器实 现的激励来源 I/O设备初始化 定时器实现的控制字 时注册的定时 段,其中 器回调函数 currCountdown 为0时将触发 CountdownEvent 时间,从而执行某 一个定时器函数, 这个函数通常是 I/O设备注册的回 调函数
CountdownEvent 63 inUse period timeToFire active ... continuous funct this_ptr id CMOS 键盘 串口
0
inUse=1
period=NullTi merInterval timeToFire=Nu llTimerInterval active=1
continuous=1
funct=nullTime r this_ptr=this id
主要用于 实现一些 控制功能
enable_a20 a20_mask kill_bochs_reques t
inUse
period
timeToFire active
continuous funct
this_ptr id
2018/9/24
系统板的模拟
熊海泉
9
系统板与CPU及I/O模块的相互关系
set_HRQ (用于DMA向系统发出总线请求) set_INTR (调用CPU的set_INTR ) MemoryMappingChanged(TLB刷新) invlpg(清除页表) Reset(CPU复位)
2018/9/24
Bochs X86 PC模拟器原理与启动流程分析
熊海泉
2
典型PC系统构成
2018/9/24
PC系统及X86模拟器
熊海泉
3
常见X86模拟器
• 比较典型的X86模拟器
– Bochs – PTLsim – COTson – Qemu –…
2018/9/24
PC系统及X86模拟器
Fra Baidu bibliotek
熊海泉
为CPU提供指令 及数据存取
内存模块(完成 Bochs内存系统的 创建以及I/O内存 映射的管理)
Bochs X86 PC模拟主控 模块
PC系统及X86模拟器
熊海泉
6
模拟主控模块
模拟主控模块 系统交互配置与控制 Bochs系统配置信息树的 建立及初始化准备 Bochs模拟器系统的初始 化与运行 辅助Bochs模拟器系统并 发机制的实现
4
Bochs模拟器
• Bochs是一个X86 PC的模拟器,它可以模拟几乎所有 类型的X86 CPU,包括16位,32位和64位(X86_64), 内存以及I/O设备,在其上可以运行Linux,Windows 等操作系统。 • 其中模拟的X86_64的工作方式包括以下两类:
– IA-32模式:包括实模式,保护模式和虚拟8086模式三 个子模式 – IA-32e模式:包括长模式和兼容模式
CPU模块
在CPU每次指令执行循环cpu_loop中通过调用调用 系统板的tick来实现系统板上各个定时器
系统板
向系统板注册工作驱动的定时器及中断
系统复位Reset或CPU的中断响应IAC
I/O设备模块
系统板的模拟
熊海泉
10
系统板初始化
cpu_loop tick1或tickn 0 timer numTimers=1 triggeredTimer=0 currCountdown=NullTi merInterval currCountdownPeriod= NullTimerInterval ticksTotal=0 lastTimeUsec=0 usecSinceLast=0 NullTimerInterval=0x7 FFFFFFF m_ips=系统配置值 HRQ=0 enable_a20 CMOS a20_mask kill_bochs_request=0 键盘 串口
PC系统及X86模拟器
熊海泉
5
Bochs模拟器基本构成
Bochs X86 PC系统基本构成
Bochs X86 PC模拟器 I/O控制指令 CPU模块(实现各类 指令,指令执行循环 引擎,内存管理单 元,中断异常处理以 外部中断的触发 及各种控制功能) 定时器激励 INTR,HRQ, Reset等控制 I/O模块(I/O地址 空间,中断等资 源以及I/O生成初 始化) 系统板(实现Bochs 各种定时器,系统控 制功能) I/O内存映射,如 vga,pci可能用到
模拟主控模块
熊海泉
7
系统板主要功能
系统板逻辑功能
定时器管理
事件控制信号的产生
其它相关功能
为系统外设,系统板等 模块提供工作时钟,从 而驱动各功能模块的正 负责为外设向CPU模块 常工作 触发中断控制信号,总 线请求信号等功能 负责提供CPU系统复 位,外设复位以及A20 地址线开启与关闭, I/O端口读写的相关功 能
2018/9/24
系统板的模拟
熊海泉
8
系统板的实现模型 64个定时器资源
cpu_loop tick1或tickn
实现定时 器功能的 字段
实现一些系统控 制功能的字段, 如HRQ代表示 否向CPU发出 总线请求等
timer numTimers triggeredTimer currCountdown currCountdownP eriod ticksTotal lastTimeUsec usecSinceLast NullTimerInterva l m_ips HRQ
相关文档
最新文档