Virtualization 101

Do you know how sometimes you have to test one or more programs to see if you like it? If you do it on your regular system your computer may get infected with viruses and spyware. And I do not need to tell you how bad it is to get infected. Most of the times, viruses and spyware cause you minor annoyances, but in other cases they can steal your passwords, bank account numbers, or let bad people use your computer to send spam or access your personal information on your hard drive. If only there was a way to test your software in an isolated environment and only then install these tested programs on your main machine. There are two ways to do so. First of all, you can browse for programs on software.informer. All of the linked downloads on that site are checked by an external antivirus and spyware services and are clean of viruses and spyware, otherwise downloads are clearly marked as potentially harmful, so you do not even need to try them. Through the reviews, screen shots and video tutorials you can see your program of interest in action, but if you would like hands-on experience then this article is for you. Virtualization 101.

Virtualization is possible.

Only a few years ago, consumer PCs could barely handle running only one operating system at a time let alone two. Therefore, the predecessor to Virtualization was dual booting. You could set up two independent sessions on your system and use one for testing your software, the other one as your primary operating system. This is a very annoying way to test the software. Booting into an operating system could take up to five minutes, and you have to live through doing that at least twice! Also, even though the ideal environment for software testing is an isolated environment, you would want a way to share files with your main system. This is extremely convenient when dealing with files that are of a huge size. But for years people had no other choice but to use this method for software testing.

The technology advancements in the recent years allowed developers around the world to revisit the idea of virtualization. At that point, the developers could only take advantage of the increased computing power of personal computer for software emulation versus hardware emulation. I believe, this is a good time to step back and explain what the heck am I talking about.

Virtualization is a way to emulate basic functions of an operating system (in reality it is a computer’s basic input-output system, but for the sake of simplicity we’ll leave the OS), so a user can execute certain code on their machines. There are two types of virtualization (or maybe even more) in today’s computing word: the software emulation and the hardware emulation. Software emulation uses your existing system’s resources to execute code in an isolated environment. If you are low on RAM, your video memory is meh, and your cycle clock (processor) is from 1980s, then forget about it! Your system won’t be able to handle the requests, and probably will crash. Computers with multiple processing cores (one processor but it acts like as there are actually two or four of them on one chip) will handle software emulation but it is still not the ideal way to test your software. But there is also hardware emulation. Hardware emulation allocates system’s resources to specifically run an isolated environment on your system, the guest operating system. The host operating system (your main one) should not have any effect on its performance when a guest operating system is running, given your RAM and VIDEO card has enough memory, and your motherboard and its processor supports virtualization. If your system does not support virtualization on the hardware level then the hybrid mode of hardware and software emulation will be used to run guest code. You will definitely feel when this is happening as everything will slow down considerably.

Software emulation.

 There are times when you do not need the entire operating system running to test a piece of software or code. Sometimes, just the important functions of the operating system are enough. For example, if you ever used Linux operating system, then you know, despite the fact that this operating system has abundant resources of open source, hence free, programs, there are programs that are made only for Windows that you cannot leave aside and stop using. There aren’t just any substitutes for some of them. Therefore, WINE was born. Developers around the world reverse-engineered Microsoft Windows and re-wrote the system to run on Linux. It is still corky but it lets you run some of your windows programs in Linux without any need to run the entire Windows operating system in addition to your main operating system. Windows also offers some programs that let you run isolated software environments so you can run code or test your programs. In fact, all major consumer-based operating systems have some sort of software emulator for other operating systems, so that’s great!

But remember, software emulation will only get you so far. This method won’t let you run specialized programs at all, such as Microsoft Office or some video editing tools. There are benefits of using the software emulation, but for an average user it is just better to stick with the hardware emulated virtual machines. However, software emulation also takes place in hardware emulated setup, so you will read about it in the next article as well.

Summary: software emulators should be used to execute code, requirements of which are lower than your computing power. An example of software emulation: if you still got cartridges from your old Super Nintendo system, you can play those games on your computer. SNES9X is a trusted program for Super Nintendo Emulation. There are emulators for all the old game consoles and there are sites that sell computer version of the cartridge contents in one file. And that’s just one of the examples of how software emulation is used at the present day. The next article is about hardware emulation, but it will also touch upon software emulation once or twice.

Comments on Virtualization 101