Virtualization Technologies Overview
"Virtualization" isn't new, but it's becoming more prevalent lately - at least in my perception. There are various types of virtualization: virtual machine software like VMware Workstation or Microsoft Virtual PC are commonly used in software and setup develoment and testing. But I also find application virtualization particularly interesting as an alternative approach to software packaging and deployment, and it might even be an alternative to setup programs for ISVs.
While I'm learning more about virtualization, I plan to blog along the way. As a start, I'll try to summarize the different virtualization technologies.
Operating System Virtualization
The virtualization software creates virtualized hardware, in which the guest operating system and its applications run. So there can be mutiple "virtual PCs" (pieces of virtualized hardware) running on one physical PC. I'll write more about this type of virtualization in a separate blog article.
Products in this category are for example: VMware Workstation and Server, Microsoft Virtual PC and Virtual Server.
In contrast to the previous category, only a single application is executed in a partially virtualized operating system. It's running on the physical hardware and is using most of the resources from the "real" operating system. This is another topic for a separate blog article.
Products in this category include Microsoft SoftGrid (formerly Softricity), Altiris SVS, or Thinstall virtualization suite.
This is a shim that Microsoft introduced in Windows Vista to enable restriction of user rights without breaking too many existing applications. If an application tries to write data into locations like the Windows or the Program Files folder, those write accesses are redirected to a special directory in the user's data folder. This happens transparently so the application doesn't notice. The same happens if the application tries to write to the local machine hive of the registry.
The redirection only happens if User Account Control (UAC) is enabled and it doesn't apply to setup programs.
The advantage is that older applications that don't follow Microsoft's application development guidelines and best practices still work on Windows Vista. The disadvantage is that these redirected data are kept in a per-user location so the changes of user A are not visible to user B.
According to Microsoft this shim is going to be removed in some future version. So if your application writes to the Windows or Program files folder you better fix it sooner than later.
Sandboxes and Interpretors
Here the application runs in a sandbox and is often not compiled in native machine code but run though an interpreter.
Java and the Visual Basic Virtual Machine fall in this category.
This was part one of my series about virtualization technologies. Here are links to all parts (will be updated when additional articles are published):