Penguin
Diff: VirtualMachine
EditPageHistoryDiffInfoLikePages

Differences between current version and predecessor to the previous major change of VirtualMachine.

Other diffs: Previous Revision, Previous Author, or view the Annotated Edit History

Newer page: version 4 Last edited on Wednesday, April 14, 2004 6:11:26 am by AristotlePagaltzis
Older page: version 3 Last edited on Saturday, February 15, 2003 3:25:45 pm by GlynWebster Revert
@@ -1,16 +1,16 @@
-A ''virtual machine'' is a program that executes ObjectCode designed for a different type of computer than the virtual machine is running on. The [JVM] virtual machine for [Java] is the most widely used, just about every WebBrowser has one
+A program that emulates a hardware environment and executes MachineCode inside it
  
-Virtual machines are used for: 
+A well-known example is the [JVM], a VirtualMachine that allows for the execution of [Java] ByteCode : just about every WebBrowser has one. Lesser known examples include the SmallTalk and [LISP] [VirtualMachine]s.  
  
-; Compatibility : Virtual machines are simple, compilers are complicated. Object code from one compiler can run on any type of machine , with any type of [CPU ], providing someone' s written a virtual machine for it
+While many [VirtualMachine]s are designed to provide an environment different from the hardware they run on, this doesn't necessarily have to be the case: [VMWare] emulates a PC in a PC, f.ex. This is useful for running a real version of MicrosoftWindows under [Linux] instead of using [Wine ], or for testing multiple [LinuxDistribution] s on a fast machine without having to stop what you're doing
  
-; Safety : A virtual machine can limit what the object code it is running does. In theory that Java program your web browser automatically downloaded from a webserver in Estonia and started to run won't write anything to your disk, because the JVM won't let it.  
-  
-; Novelty : Programming languages implicitly define what a computer ''is''. If that computer is far different from a Von Neumann Machine (the basis of most modern CPU designs), then you may as well write a virtual machine for your imaginary computer, and have your compiler create code for that machine. The result probably won't be much less efficient than a native code compiler, and will be far easier to attain.  
-  
-; Debugging : A virtual machine can monitor what the ObjectCode it is running does. You can break out of a programming that is running on a virtual machine at any point and examine everything about the machine's state. [Bochs | http://bochs.sourceforge.net/] is [ia32] emulator for Linux for this purpose.  
+Virtual machines are used for: 
  
-; Emulation : I get to play my favourite ZX Spectrum video game[1] on my PC. Whee! 
+; Compatibility : a VirtualMachine is simple, a [Compiler] is complicated. MachineCode from one [Compiler] can run on any type of machine, with any type of [CPU], providing someone's written a VirtualMachine for it.  
+; %%% Safety : Anything the program running in a VirtualMachine does has to be done by the VirtualMachine on its behalf. The VirtualMachine could decide not to write to the harddisk because you haven't given permission for the program inside it to do so; and the VirtualMachine could even pretend to have written to disk successfully to the emulated code -- it will be none the wiser, because it exists in an isolated universe. Thus, in theory the [Java] applet your WebBrowser downloaded from a webserver in Estonia can't do any harm.  
+; %%% Novelty : Programming languages implicitly define what a computer ''is''. If that computer is far different from a JohnVonNeumann machine (the basis of most modern [CPU] designs), then you may as well write a VirtualMachine for your imaginary computer, and have your [Compiler] create code for that machine. The result probably won't be much less efficient than a native code compiler, and will be far easier to attain.  
+; %%% DeBugging : A VirtualMachine emulates an entire hardware environment. You can stop a running program at any point and examine ''everything'' about the machine's state -- something not possible with a regular debugger. [Bochs] was written for this purpose.  
+; %%% Emulation : I get to play my favourite ZX Spectrum video game[1] on my PC. Whee! 
  
 ---- 
 [1] [Ant Attack | http://sandywhite.co.uk/fun/ants/]! [http://www.wave.co.nz/~glyn/AALogo001.gif]