
Файлы .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 an Emulator»),возможность запуска приложений Windows на нескольких операционных системах, совместимых с POSIX, таких как Linux, Mac OSX и BSD,преобразование вызовов Windows API в вызовы POSIX «на лету».
(+)
Быстрее, чем предыдущий(-)
Не всегда совместимоВы можете установитьМонитор виртуальной машины, VMM, тип II [6] . Этотпрограммное обеспечение для виртуализации, как и VirtualBox с открытым исходным кодом [5] , позволит установить целую немодифицированную операционную систему, на которой будут работать соответствующие исполняемые файлы. Так называемыевиртуальная машина будет работать на хостингевашей оригинальной операционной системой (см. рисунок ниже).
... вид виртуализации, позволяющий немодифицированной операционной системе со всем установленным программным обеспечением работать в специальной среде,поверх вашей существующей операционной системы.Эта среда, называемая «виртуальной машиной», создается программным обеспечением виртуализации путем перехвата доступа к определенным аппаратным компонентам и определенным функциям. [5] .
ВММ Типа I,II [6] :
И последнее, но не менее важное:гипервизор типа I [6] , илимонитор виртуальной машины(ВММ),часть компьютерного программного обеспечения, прошивки или оборудования, которая создает и запускает виртуальные машины. На этот раз он будет работать непосредственно на оборудовании, а операционная система будет такой жеодна из его программ. См. рисунок выше.
Он работает непосредственно на оборудовании хоста, управляя оборудованием и гостевыми операционными системами.По этой причине их иногда называют гипервизорами bare metal. Гостевая операционная система работает как процесс на хосте.
Заключение
Каждый исполняемый файл скомпилирован для одной операционной системы, через которую он должен взаимодействовать с оборудованием. Различные инструкции, библиотеки, политики... по этой причине исполняемый файл Windows обычно не будет работать под Linux инаоборот, но как вы видите, есть много способов решить эту проблемуперевод языка, добавляя слой другого типа, так что программа может не знать об этом.
Примечание:Некоторым ассемблерным программам требовался прямой доступ к памяти и прерываниям [7] и им может потребоваться особый уход.