To accelerate the product development and test, we usual choose some kinds of virtualizer to simulate environment, such as VMware workstation, Virtual PC etc. With these kinds of VM, we can build the environment one time, and reuse it again and again, just take snapshot and rollback it.
But if we have some advance requirement, such as control the VM to implement some auto-test script, these commercial products maybe restrict your idea. Even they provided some SDK, the ability is very limited. Fortunately we have some alternative virtualization solutions, such as VirtualBox. It is a general-purpose full virtualizer for x86 hardware. Targeted at server, desktop and embedded use, it is now the only professional-quality virtualization solution that is also Open Source Software. The usage and GUI of VirtualBox is very like VMware, so we can switch to it easy. The VirtualBox can be downloaded and installed on Windows, Linux and OS X hosts; And the guest OS can support mostly common platform, such as Windows, Linux, xxxBSD, etc. A complete guest OS list can be found at Guest OSes. It also has an open source edition under the GPL license, but it isn’t including some advance features, such as RDP support. Compare with VMware or other VM vender, VirtualBox has a great openness. It’s virtual machine descriptions in XML, we can easy fetch information from it; It’s VM directly support RDP (Remote Desktop Protocol) protocol, so we can use remote desktop connection software to control it, the latest version of VMware – Workstation 6.0 provide similar feature which allow remotely access the console of a VM from a VNC client. Furthermore, the most important difference is VirtualBox provided a very powerful management interface. For end-users, they can use VBoxManage in command line to control most common functions of VM; for developers, they can get some depth control with a set of COM/XPCOM control interfaces, such as control the keyboard/mouse action etc. From the implementation viewpoint, the architecture of VirtualBox much likes a client/server solution. The controller client, such as QT-based GUI or console mode VBoxManage, connects to the backend VM implementation (VBoxVMM, etc.), through COM/XPCOM interface (VBoxSVC, VBoxC, etc). In addition, a kernel driver (VBoxDrv.sys on Windows) or module (vboxdrv on Linux) will allocating physical memory for the VM, control the context switch and other dirty work. But not like Xen and VMware, VirtualBox is not directly depending on some kinds of hardware virtualization technology, such as VT or AMD-V. VirtualBox run the guest OS kernel at ring 1, through some advanced code scanning, analysis and patching techniques, such as “Patch Manager” (PATM) and “Code Scanning and Analysis Manager” (CSAM). Before executing ring 0 code, we scan it recursively to discover problematic instructions. We then perform in-situ patching, i.e. we replace the instruction with a jump to hypervisor memory where an integrated code generator has placed a more suitable implementation. In reality, this is a very complex task as there are lots of odd situations to be discovered and handled correctly. So, with its current complexity, one could argue that PATM is an advanced in-situ recompiler. In addition, every time a fault occurs, we analyze the fault’s cause to determine if it is possible to patch the offending code to prevent it from causing more expensive faults in the future. This turns out to work very well, and we can reduce the faults caused by our virtualization to a rate that performs much better than a typical recompiler, or even VT-x technology, for that matter. This method seems specially but effective, at least on my machine, VirtualBox run some OS correctly and very fast. If you have more detail question, please refer to their Developer FAQ or directly read the source code.
搜索 / Search
-
-
最新文章 / Articles
最新评论 / Comments
- Flier Lu 在 介绍JVM虚拟机实现的培训PPT 上的评论
- 自行研发的疑问 在 介绍JVM虚拟机实现的培训PPT 上的评论
- renenglish 在 Gearman 性能调优 上的评论
- Snow.C 在 函数式编程入门培训PPT 上的评论
- hayate 在 2009 年的书、电影和音乐 上的评论
分类 / Categories
- business (1)
- debugging (2)
- development (3)
- internet (1)
- life (2)
- look'n'stop (1)
- plugin (1)
- security (3)
- software (1)
- Uncategorized (5)
- virtualization (3)
- wireshark (1)
-
book business c++ cxx0x functional programming gcc gearman google internet JVM training life movie music open performance tunning ppt training vs2010
WP Cumulus Flash tag cloud by Roy Tanck and Luke Morton requires Flash Player 9 or better.
Twitter: flierlu
- http://code.google.com/p/leveldb/ Google 的 Key-Value 存储引擎,应用场景比较特殊,同一数据库只能一个进程使用,也就是说没有服务端锁,估计是为了追求极端性能吧 02:08:30 上午 六月 14, 2011 from Silver Bird ReplyRetweetFavorite
- http://u.flier.lu/31 Google v8 终于提供了对内存分配操作的回调,虽然只是通知而已 11:53:06 下午 四月 09, 2011 from Silver Bird ReplyRetweetFavorite
- http://www.php-internal.com/book/ 不错的分析PHP源码的开源电子书,回头看看能否贡献一些内容 04:30:49 下午 四月 06, 2011 from Silver Bird ReplyRetweetFavorite
- http://u.flier.lu/30 现在都啥世道啊,清明那么好天气,就京郊那几个馒头山,居然还有两拨迷路的,需要直升飞机救援,只能说太不靠谱了 11:24:44 上午 四月 06, 2011 from Silver Bird ReplyRetweetFavorite
- 7年前代码里预留下的一个类抽象框架,居然今天被自己用上了。增加了一种新的服务提供商类型,对原有代码只改了十几行;新代码平铺直叙直接就工作了,这伏笔也打的太超前了 :S 11:10:04 上午 四月 06, 2011 from Silver Bird ReplyRetweetFavorite
- 出票了,五一目标清迈,再不决定又要黄了,管他能拉到几个人 05:07:40 下午 三月 29, 2011 from Silver Bird ReplyRetweetFavorite
- http://u.flier.lu/2z Pipe 这个Python库很有趣,支持把func1(func2(args))格式的调用,用 UNIX 管道的思路写成 args | func1 | func2,可以偷偷import一个,然后看读代码人抓狂的样子 :D 03:21:24 下午 三月 29, 2011 from Silver Bird ReplyRetweetFavorite
- RT @rtmeme: RT @80whole RT @xie107: 程序猿:一程序员去面试,面试官说:你毕业才两年,这三年经验是哪来的。程序员说:加班。 03:17:16 下午 三月 29, 2011 from Silver Bird ReplyRetweetFavorite
- 大唐电信应该收购一下东土科技,这样回头CEO到米国介绍业务,可以说“贫僧来自大唐东土”,倍儿有面子气势如虹啊 02:40:06 下午 三月 29, 2011 from Silver Bird ReplyRetweetFavorite
- http://www.qingfanqie.com/ 青番茄的商业模式很有趣,交会员费免费快递借/还书,下单到收到书大概1周。问了下专门做青番茄的快递,紫竹院一条街一天就有20-30单,规模貌似在逐步扩大。这种用商业方式做半公益事业的思路很靠谱,虽然网站做得比较山寨。 10:01:21 上午 三月 10, 2011 from Silver Bird ReplyRetweetFavorite
Post a Comment