Qemu概述

1010阅读 0评论2014-01-11 learn007
分类:LINUX

搭建qemu测试环境
不值得花太多时间
装个fedora17,自带了。
libvirt带了virt-manage,通过ps看到qemu的启动参数,去掉-S和后台,可以在命令行运行,也可以gdb调试运行

qemu监控和命令添加
qemu提供了网络接口,QMP和HMP(区别是什么?)
mon_cmd_t结构定义了命令和命令的处理方式,可以通过编辑.hx文件来定义新的命令。
qemu在编译时使用hxtool将.hx转换成.h文件,在几个C文件中包含了这个文件,例如monitor.c。
增加新的接口,需要增加响应的处理函数。

qemu源码
支持多种架构的代码混到了一起,没有每个一个目录,不是很好去掉。不过总的代码不算太多,还能看。

qemu内存管理
弄清几点:
参数-m传递的内存,在什么时候分配的(g_malloc0,其实就是malloc)
怎么给kvm虚拟机分配内存的,ioctl怎么将内存传递下去的
kvm中怎么映射应用层的内存到虚拟机的?(动态分配给虚拟机的,按页来分配?还是批量分配?)
处理给虚拟机用的内存,本身qemu管理器还需要内存,有没有统一的内存池?

qemu IO模型
qemu虚拟了很多IO设备,这些IO设备需要定时器,需要处理guest机的IO。
据说定时器也是通过写fd,产生事件,从而在poll循环中被处理的。
定时器的精度怎么保证,不会出现大的延迟。

qemu的具体设备
rtc:
rtc本来是在cmos中的,也就是和guest机的cpu无关,属于和网卡一样的外设了。那么也应该是在qemu中模拟的。
据说rtc有变慢的问题,怎么产生的?
关机了,怎么保证启动后时间能准?保存在虚拟机的磁盘文件中了?
网卡:
e1000,8139
8254:
这个是在内核中模拟的,PIT。提供周期性的定时器中断,有了hpet就没用了。



上一篇:19.2 一般包的处理
下一篇:没有了