source

A Virtual Machine (VM) is a compute resource/ execution environment that uses software instead of a physical computer to run “guest” programs. It appears as a complete, independent machine from the perspective of the software running on it. There can be one or more virtual machines running on a physical “host” machine. Each virtual machined runs its own operating system and functions in isolation from other VM’s.

It sits between the host and the guest, translating operations from the guest, into operations the host can understand, managing resources like memory, CPU time, and I/O operations.

Process VM A process VM provides execution environments for specific programming languages. It allows a single process to run as an application on a host machine. The Java Virtual Machine (JVM), for example, creates a standardized environment where Java bytecode can run regardless of the underlying system.

System VM A system VM is a fully virtualized hardware environment. Think VMware, cloud instances, etc. These can run Operating Systems. Think running Windows inside a System VM on a Mac.