QEMU 是一个开源的、可移植的架构模拟器,它允许在一个平台上运行其他架构的操作系统和应用程序。本文将深入解析 QEMU 启动虚拟机的基本流程,从QEMU的主函数 `qemu-inside-main()` 开始,这个函数在 `binssvl.c` 中定义。 首先,在 `main()` 函数中,QEMU 的初始化过程如下: 1. **模块初始化**: 在 `main()` 中,会执行 `module_call_init()`,这是对QOM (QEMU Object Model)、QAPI (QEMU API) 和 OPTS (选项处理) 的初始化,确保这些核心组件能够正确配置和交互。 2. **选择机器类型**: 接下来,`select_machine` 负责根据用户提供的参数或默认配置,选择合适的虚拟化平台,如KVM或PC架构(如q35)。 3. **配置加速器**: 这一步通常针对特定架构,如KVM可能会配置硬件辅助虚拟化特性,而PC架构如q35则可能涉及PC相关的初始化设置。 4. **机器类初始化**: `machine_class->init(current_machine)` 调用选定机器类(例如PCMachine或KVMMachine)的初始化函数,设置虚拟机的基础架构和设备模型。 5. **内存和设备配置**: 继续进行内存和I/O设备的初始化,包括PCIBus(PCI总线)和IOAPIC(输入输出高级编程接口控制器)等,这些是虚拟机内部通信和硬件模拟的关键部分。 6. **虚拟机启动**: `vm_start` 函数标志着虚拟机的真正启动,此时操作系统内核映像开始加载,后续流程包括引导加载器的加载、启动引导过程等。 7. **主循环**: 最后,进入 `main_loop`,这是一个持续监控和管理虚拟机生命周期的核心循环,负责处理事件和指令,直至虚拟机退出。 在整个过程中,QEMU 利用了QOM的模块化设计,允许用户自定义对象模型,同时KVM作为QEMU的一个特定实现,通过`type_init()`注册了自己的初始化函数`kvm_type_init`。对于特定的硬件抽象层,如q35,其初始化函数`pc_machine_init_v2_8`也在适当的时候被调用。 QEMU的这种模块化结构和自适应性使得它能够支持多种平台和虚拟化技术,并提供了高度灵活性,使开发者可以根据需要扩展和定制虚拟化环境。
![](https://csdnimg.cn/release/download_crawler_static/11102457/bg5.jpg)
剩余24页未读,继续阅读
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://profile-avatar.csdnimg.cn/6f4365b1a94b4e53a458d613c0a986c0_hanksonyao.jpg!1)
- 粉丝: 15
- 资源: 35
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![](https://csdnimg.cn/release/wenkucmsfe/public/img/voice.245cc511.png)
最新资源
- 岩石滑动与断层冲击地压:声发射特征分析
- 新时代煤炭工业八大战略新取向剖析
- 开采强度对华亭矿区冲击地压危险性的影响分析
- 新安煤矿探采对比:影响安全生产的关键因素与技术支撑
- 210MW循环流化床锅炉引风机变频改造优化与节能效果
- 浅埋煤层开采沉陷预测:方法应用与影响分析
- 优化巷道过陷落柱支护方案:数值模拟与现场试验
- 坚硬顶板定向断裂爆破技术:安全高效采煤新方案
- 北航2019算法课作业解析:投资策略与凸子多边形优化
- 断层破碎带垮冒下堆积体边界抗力分布关键影响因素
- 哈拉沟选煤厂优化末煤系统提高效率与处理能力
- 瓦斯涌出影响下采动煤体蠕变失稳研究
- 提升煤矿装载效率的可控箕斗定量装载设备设计
- 水分调控下烟煤瓦斯吸附特性对比研究
- 重介质悬浮液密度控制硬件设计与选型探讨
- 坚硬顶板巷道支护参数设计:现场测试与数值分析
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035111.png)
![](https://csdnimg.cn/release/wenkucmsfe/public/img/green-success.6a4acb44.png)