Как Вино не является эмулятором?

Стандартная команда df шоу на том, какая файловая система указанный файл (файлы) расположена.

if df -P -- "$1" "$2" | awk 'NR==2 {dev1=$1} NR==3 {exit($1!=dev1)}'; then
  echo "$1 and $2 are on the same filesystem"
else
  echo "$1 and $2 are on different filesystems"
fi

25
11.11.2013, 12:54
5 ответов

Ну, как эмуляторы и виртуальные машины моделируют внутреннюю логику Windows на хосте системы не-Windows? Не то, что путем перевода системных вызовов Windows в собственные соответствующие вызовы хоста?

Нет, или по крайней мере не в том смысле, что ВИНО делает - путем литерального перевода системных вызовов одного в один в пространстве пользователя. Эмулятор делает это абстрактно через более окольный маршрут; это не переводит системные вызовы непосредственно.

Истинный эмулятор создает виртуальную машину (например, x86-64), не виртуальная операционная система. Вы можете затем в теории выполнять любую операционную систему, предназначающуюся для того стиля машины. Обычно "эмулятор" включает операционную систему, но это не действительно, что это эмулирует; ОС, которую это включает, совпадает с тем, который работал бы на реальной машине.

Эмуляторы иногда используются для моделирования аппаратных средств, отличающихся от хост-машины, но также и аппаратных средств, которые являются точно тем же в целях выполнения того ОС в другом.

ВИНО отличается от этого, в котором это не на самом деле окна. Вы могли выполнить x86-64 эмулятор с реальной копией окон в нем, но это не, каково ВИНО. Их заявление, что это на самом деле более эффективно, чем эмулятор, имеет смысл - издержки для того, чтобы просто перевести системные вызовы, вероятно, ниже, чем то из выполнения VM. Недостаток - то, что ВИНО может только быть окнами; Вы не можете использовать его с некоторой другой ОС, поскольку Вы могли нормальный VM.

30
27.01.2020, 19:40

Рассмотрите виртуальные машины Java. Никакая JVM не эмулирует никакого другого, они - все реализации спецификации. Вино не эмулирует win32 api, это - реализация его. Спецификации и действительность не обязательно соответствие, и реализация Microsoft и реализация Вина имеет обходные решения, чтобы заставить содержащий ошибки код работать, и это не обязательно очевидно, какая реализация является лучшей целью для любого данного проекта.

13
27.01.2020, 19:40

Вино является контейнером, который прерывает вызовы API окон и преобразовывает их у мухи к соответствующему вызову (вызовам) API Linux. Эмулятор или виртуальная машина вместо этого эмулируют реальную машину. Очевидно, контейнер более эффективен, но не может быть абсолютно способным к имитации желаемой функциональности.

4
27.01.2020, 19:40

Эмуляторы виртуализируют процессор и/или ОС, которые обычно запускают приложение Windows, создавая логику и поведение платформы ОС/процессора в приложении-эмуляторе, которое само работает поверх другой платформы ОС/процессора. Wine не виртуализирует поведение ОС/процессора Windows, а запускает приложение Windows на том же уровне абстракции, что и ОС Windows. Это достигается за счет повторной -реализации Windows API для работы непосредственно на платформе ОС/процессора на основе Unix -. То есть Wine — это повторная -реализация основных элементов ОС Windows, набор скомпилированных библиотек DLL, которые напрямую транслируют запросы вызовов Windows API в эквивалентный код на основе Unix -, взаимодействующий напрямую с физическим процессором.

Это означает, что иногда существуют -контексты времени выполнения, которые позволяют Wine + Linux запускать приложения Windows быстрее, чем сама Windows! У эмулятора никогда не было бы такой возможности, потому что его код был бы занят имитацией платформы CPU/WinOS поверх платформы на базе Unix -на более высоком уровне абстракции. В этом случае для запуска приложения Windows требуется больше переводов и интерфейсов. (См. схему ниже)

Короче говоря, Wine — это новая -реализация Windows, а не ее эмуляция.

enter image description here

0
27.01.2020, 19:40

WINE — это эмулятор. То, как эмулятор делает то, что он делает, совершенно не имеет отношения к тому факту, что он по определению является механизмом для запуска программного обеспечения одной ОС в другой. На каком уровне этого маршрута BIOS к приложению это происходит, не имеет значения. Что уместно, так это то, что эмулируемая ОС не запускается, как в случае с WINE. WINW был бы более точным аббревиатурой, поскольку WINE — это не Windows.

0
13.07.2020, 09:58

Теги

Похожие вопросы