ВМ представляет собой изолированную среду выполнения ПО, которая использует виртуализированные физические вычислительные ресурсы. Другими словами, речь идет о виртуализации системы. ПО в каждой ВМ получает тщательно контролируемый доступ к физическим ресурсам, чтобы обеспечить совместное использование этих ресурсов. ВМ, которые иногда называются системными ВМ, предлагают широкую функциональность, необходимую для выполнения полных стеков ПО, включая целые ОС и код приложений, использующих ОС. Как показано на рисунке 1, это отражается в виде элементов «Гостевая ОС» и «Приложение №» в каждой ВМ.
Цель ВМ — обеспечить одновременную работу нескольких приложений в одной аппаратной системе. При этом эти приложения остаются изолированными друг от друга. ПО, работающее в каждой ВМ, имеет свое собственное системное аппаратное обеспечение, такое как процессор, оперативная память, одно или несколько устройств для хранения данных и сетевое оборудование. Изолированность означает, что ПО, работающее в одной ВМ, отделено от ПО, работающего в других ВМ в той же системе, и это ПО никак не пересекается друг с другом. Также оно отделено от ОС хоста. Виртуализация обычно означает, что часть доступных физических вычислительных ресурсов может быть предоставлена каждой ВМ, например: ограниченное количество процессоров, ограниченный объем оперативной памяти, ограниченное пространство для хранения данных и контролируемый доступ к сети.
Каждая ВМ содержит полный стек ПО, начиная с операционной системы и заканчивая любым другим ПО, необходимым для работы одного или более приложений, выполняемых в ВМ. Программный стек может быть очень простым (например, собственное приложение, написанное на языке программирования С, использующее только функции, предоставляемые самой ОС) или сложным [например, приложение, написанное на языке программирования Java™, для которого требуется среда выполнения и которое активно использует библиотеки и (или) сервисы, которых нет в операционной системе и которые должны предоставляться отдельно].
Каждая ВМ может в принципе содержать любую ОС. Различные ВМ на одной аппаратной системе могут работать под управлением совершенно разных ОС, таких как Linux и Windows. Единственное требование заключается в том, что все ПО, выполняемое в ВМ, должно быть разработано для аппаратной архитектуры именно этой системы, поскольку аппаратное обеспечение виртуализируется, а не эмулируется. Так, например, программный код, созданный для архитектуры ARM, не будет работать в ВМ, запущенной в системе на базе архитектуры Intel х86 [из 6.2 Виртуальные машины и виртуализация систем ГОСТ Р 70860—2023]