Кажется, что это совершенно разные вещи, но все используют один и тот же термин для них.
2 ответа
Кажется, они совсем разные ... но ...
Ага. Конечно, это сбивает с толку.
Представьте себе в те времена, когда под "памятью" иногда подразумевалось ОЗУ (которое было краткосрочным), а иногда - дисковое пространство (которое было долговременным хранилищем). Ну, это то, чему меня учили еще во времена Apple 2. Тенденции изменились за эти годы.
Оба типа "виртуальных машин" относятся к машинам, которые не являются физическими, поэтому они являются виртуальными машинами. Термин "виртуальная машина" использовался Java со времени его изобретения в середине и конце 1990-х годов. Он ссылался на тот факт, что компилятор не компилировался в язык ассемблера, предназначенный для какого-либо реального физического ЦП, а скорее представлял собой «байт-код», который представлял собой спецификацию воображаемой компьютерной платформы. Люди были рады видеть совместимость программного обеспечения, работающего хорошо на нескольких компьютерных платформах, и некоторые люди размышляли, станет ли этот концептуальный проект основной частью будущего вычислительной техники.
Сегодня термин "виртуальная машина" имеет тенденцию относиться к экземпляру программного обеспечения, которое эмулирует множество деталей, включая регистры ЦП и ОЗУ, или к программному обеспечению, которое выполняет "более высокий уровень" эмуляции, способный к аналогичным результатам, за исключением часто с более высокой скоростью.
По мере того, как меняются технологии, я ожидаю, что изменится некоторая терминология, особенно если слова будут разумно применяться к другой концепции.
Виртуальная машина с виртуализированной ОС, она вызывается, когда у вас есть "инфраструктура" всей машины, то есть ЦП, ОЗУ, жесткий диск, и вы можете управлять ею в зависимости от использования.
А виртуальная машина, подобная Java, называется "препроцессором" для языка Java, это означает, что она больше с точки зрения программирования, чем с точки зрения "инфраструктуры".