В какой момент программа становится виртуальной машиной процесса? - PullRequest
0 голосов
/ 07 февраля 2019

В какой момент программа, целью которой является быть средой выполнения, становится (виртуальной машиной) процесса?Что дает программе право называться виртуальной машиной в отличие от скромного времени выполнения?Попытка прочитать о программном обеспечении реального мира не проясняет различие.

Ответы [ 2 ]

0 голосов
/ 18 февраля 2019

В какой момент программа, целью которой является выполнение, становится виртуальной машиной (процесса)?

Любая программа, предназначенная для выполнения, является средой выполнения.Если он работает, то это так.Если он хранится только на диске, он не находится во время выполнения (скорее, «время ожидания» или «время небытия»).Если такая программа написана для выполнения других программ внутри себя, она может рассматриваться как своего рода виртуальная машина.

Что определяет программу как виртуальную машину в отличие от скромного времени выполнения?

Слово «время выполнения» очень расплывчато;его следует уточнять, например, «библиотека времени выполнения», «анализ времени выполнения», «поддержка времени выполнения» и т. д. Фраза «виртуальная машина» более конкретна: «привет мир», как правило, не является виртуальной машиной, а также не является программой для решения.система линейных уравнений;оба они выполняют статический алгоритм.Например, интерпретатор языка Python является виртуальной машиной, потому что то, что он делает, во многом определяется обрабатываемыми данными (другой программой), а не алгоритмом самого интерпретатора.

0 голосов
/ 16 февраля 2019

Я не уверен, что понимаю ваше представление о «времени выполнения».Как правило, это слово используется, чтобы подчеркнуть, что что-то происходит, когда программа уже запущена, а не до (во время, например, во время компиляции) или после (например, когда она потерпела крах и была закрыта).Виртуальная машина - это концепция, когда одна программа интерпретирует свои собственные данные как другую программу, написанную на определенном языке, для выполнения.

Обе программы, скомпилированные на родном машинном языке или на каком-либо языке виртуальной машины, могут нуждаться в компонент времени выполнения для выполнения.Примеры:

  • Для программы, скомпилированной из C ++ в машинный код, нужны системные библиотеки, которые реализуют стандартные операции, такие как математические библиотеки, динамически связанные с ним, а также службы операционной системы, такие как файловый и сетевой ввод.вывод
  • Java-программе, скомпилированной в байт-код, требуется JVM для ее интерпретации, а также службы выделения памяти, сборки мусора, планирования потоков и т. д.

Ни libstdc ++, ни JVMприсутствуют в двоичном коде программы, они прикрепляются в время выполнения , отсюда и название.

...