Qemu 学习笔记
Qemu
开门见山,Qemu可以看成一款虚拟机,他可以模拟很多CPU架构。比如Alpha, ARM, Cris, i386, M68K, PPC, Sparc, Mips等;以及大部分的硬件设备,也就可以模拟出不同的目标系统。
Qemu的主要原理与机制
Qemu可以实现目标平台的仿真,但是arm平台的程序怎么能在我们电脑上运行呢?这是Qemu主要要做的事情,翻译,那如何进行翻译呢。大致上就是下面这样:
客户代码 ——>中间代码 ——> 主机代码
那就会有人问了为什么要转换成中间代码,直接转换成主机代码不香吗?问得好。
在Qemu中执行翻译这部分流程的是TCG模块,因为Qemu是支持跨平台的,他不仅可以在linux下执行arm的程序还可以在ppc下等等不同的平台下执行,这里为了通用性方面的考虑,先转换成中间代码,在将中间代码转换成主机代码。
Qemu的两种运行模式
Qemu 有两种运行模式,一种是全系统模拟(system mode),一种是用户态模拟(user mode)。
从名字就可以看出来system mode肯定是模拟全了,可以直接跑操作系统之类的。user mode肯定就弱一点,跑个进程之类的。
放个图吧,两种用户态模式: