Файлы .exe не будут работать непосредственно в Linux, а исполняемый файл Linux не будет работать непосредственно в Windows. Но мы устанавливаем VMware в Windows, и мы можем запускать файлы на одном оборудовании и архитектуре. Как работают исполняемые файлы ??
1 ответ
Чтобы получить более глубокое представление, вы можете взглянуть на википедию о VMware Workstation [ 1 ] и мониторе виртуальной машины [ 6 ].
VMware Workstation может в любой момент сохранить состояние виртуальной машины ("снимок"). Эти снимки могут быть позже восстановлены, фактически возвращая виртуальную машину в сохраненное состояние.
Таким образом, вы можете одновременно запустить более одной операционной системы, каждая из которых имеет свой исполняемый файл.
Это как "Супероперативная система", которая постоянно переключается между каждой виртуальной машиной.
Разные исполняемые файлы могут работать в верхней части системы, для которой они были скомпилированы, и если все сделано правильно, они не заметят никакой разницы.
Еще несколько слов
В общем, у вас есть разные способы настроить машину, позволяющую работать с исполняемыми файлами, скомпилированными для разных операционных систем или разных архитектур:
Вы можете установить более одной операционной системы, например, Windows и Linux, одновременно.
Во время загрузки вы выбираете, с какой операционной системой работать.
(+)
Вы будете иметь полную функциональность и скорость, но один на время.
(-)
Это подразумевает использование пространства, необходимого для каждой установки на дисках.У вас может быть эмулятор, программа, которая переводит ("эмулирует") каждую машинную инструкцию, возможно, позволяя запускать 64-битный код на 32-битной машине. Например,
bochs
[ 2 ] или знаменитыйmame
[ 3 ] способны подражать многим тысячам классических аркадных видеоигр и оборудования на современном компьютере.
(+)
Вы, вероятно, сэкономите место на дисках.
(-)
Вы будете бегать медленно, потому что вам нужно переводить каждую инструкцию.У вас может быть слой совместимости, например,
wine
[ 4 ] (вначале сокращение от "Wine Is Not the Emulator"), способный запускать приложения Windows в нескольких POSIX-совместимых операционных системах, таких как Linux, Mac OSX и BSD, переводя Windows API вызывает вызовы POSIX на лету.
(+)
Быстрее предыдущего(-)
Не всегда совместимоВы можете установить монитор виртуальной машины VMM типа II [ 6 ]. Это программное обеспечение для виртуализации, как VirtualBox с открытым исходным кодом [ 5 ], позволит установить целую немодифицированную операционную систему, в которой будут выполняться соответствующие исполняемые файлы. Так называемая виртуальная машина будет работать под управлением вашей исходной операционной системы (см. Рисунок ниже).
... своего рода виртуализация, которая позволяет неизмененной операционной системе со всем установленным программным обеспечением работать в специальной среде поверх существующей операционной системы. Эта среда, называемая "виртуальной машиной", создается программным обеспечением для виртуализации путем перехвата доступа к определенным аппаратным компонентам и определенным функциям [ 5 ].
VMM типа I, II [ 6 ]:
И последнее, но не менее важное: гипервизор типа I [ 6 ] или монитор виртуальной машины (VMM), часть программного обеспечения, встроенного программного обеспечения или аппаратного обеспечения, которая создает и запускает виртуальные машины. На этот раз он будет работать непосредственно на оборудовании, а операционная система будет одной из его программ. Смотрите рисунок выше.
Он работает непосредственно на оборудовании хоста для управления оборудованием и управления гостевыми операционными системами. По этой причине их иногда называют железными гипервизорами. Гостевая операционная система работает как процесс на хосте.
Заключение
Каждый исполняемый файл компилируется для одной операционной системы, через которую он должен взаимодействовать с оборудованием. Различные инструкции, библиотеки, политики ... по этой причине исполняемый файл Windows обычно не будет работать в Linux и наоборот, но, как вы можете видеть, есть много способов позаботиться о переводе этого языка, добавив слой другого типа. , так что программа может не знать.
Примечание. Некоторым ассемблерным программам требовался прямой доступ к памяти и прерываниям [ 7 ], и им может потребоваться особый уход.