|
From: Bryan F. <ba...@mi...> - 2005-12-22 19:07:45
|
Hi folks, I hope this announcement might be of interest to some of you as being related to and in some respects complementary to Valgrind. I've just released the first (very experimental) version of VX32, a new x86-based application-level virtual environment. Like Valgrind, VX32 does x86-to-x86 instruction translation for virtualization purposes. Unlike Valgrind, however, VX32 does not do any fancy manipulation of the virtualized x86 instruction stream, but instead does the minimum work necessary to isolate the guest code from the host OS and sandbox it so that buggy or malicious guest code cannot compromise the host application. Thus, VX32's functional purpose is more along the lines of a Java virtual machine than a debugging layer. Unlike Java VMs, of course, VX32 can run code written in any language, safe or unsafe. VX32 may be especially appropriate for safely running Unix filter-like applications such as compressors, decompressors, or transcoders, or crypto libraries, where performance is crucial and the legacy code bases you often want to re-use are already written in C or other non-typesafe languages. Under the hood, VX32 takes advantage of the x86 host processor's segmentation features to implement data access sandboxing, while using instruction translation only to provide code sandboxing. As a result, virtualization under VX32 typically costs less than about 15% slowdown versus native x86-32 execution, depending on the code. (Control-flow-heavy microbenchmarks such as dhrystone perform worse, but typical compute-intensive code such as codecs or crypto algorithms perform quite well.) I'm also working on instruction set emulation and binary translation to make the environment portable to other host architectures, but of course I don't expect it to perform as well in such situations. The VX32 home page, including the first source release, is here: http://pdos.csail.mit.edu/~baford/vm/ The home page for VXA (Virtual eXecutable Archives), a related project that uses VX32 to turn ZIP files into "active archvies", is here: http://pdos.csail.mit.edu/~baford/vxa/ Finally, a paper that discusses both VX32 and VXA can be found here: http://www.brynosaurus.com/pub/os/vxa.pdf I would appreciate any comments and feedback. Thanks for your time! Bryan |