LINUX.ORG.RU

Что такое Wine с технической (терминологической) точки зрения?

 , , ,


1

1

Само название - рекурсивный акроним это wine is not an emulator. Ок, не эмулятор, тогда что?

В чем его отличие от эмулятора и от гипервизора?

Вот например здесь пишут:

Wine is also more a hypervisor/virtual machine (albeit at a higher ABI level) than an emulator.

из чего следует, что он где-то посерединке между ними. Но я-то, как «чайник», считал что есть четкое разделение: мальчики налево, девочки направо есть гипервизоры, есть эмуляторы, и на этом всё. А теперь выясняется, что ситуация более сложная, чем казалась.

Deleted

Это реализация Win32 API для линукса. Но т.к. вендовый API крайне упорот и облеплен всякими костылями, в нём есть широко используемые в вендовом софте функции которые требуют всяких вендовых сервисов и прочей шняги для работы. Вот и приходится не только предоставлять библиотеки с функциями, но и запускать/останавливать демонов которые будут обеспечивать работоспособность этих функций и надзирать за этими демонами. Поэтому это не просто библиотека типа GTK/Qt, а вот такое вот поделие со своими процессами (wineserver и всякие winedevice.exe, services.exe) и пр.

Stanson ★★★★★ ()
Последнее исправление: Stanson (всего исправлений: 3)

Это свободная реализация WINAPI поверх технического стека современных UNIX-ов. Т.е. это парсер .exe, .dll, .msi и может чего ещё + набор библиотек. Исполняемые файлы вином именно парсятся (схожим образом с тем, как парсятся нативные elf-ы), а не выполняются в виртуальной машине/гипервизоре (как, например JAVA программы) и уж тем более не эмулируется x86.

robus ★★★★ ()

Альтернативная реализация Windows API. Wine не обеспечивает работу ОС, по этому он не гипервизор. Wine не эмулятор, т.к. он не эмулирует никакое железо.

peregrine ★★★★★ ()

Не придавай слишком большое значение терминологии. И это конечно же не гипервизор с виртуалками, товарищ со стековерфлоу, вероятно, пошутил.

Не эмулятор он в том смысле, что он не эмулирует отдельную железяку как, например, qemu. Но можно в какой-то степени считать, что он эмулирует виндовое API. Но на самом деле он просто оборачивает нативные API виндовыми. Это сравнительно безболезненно в плане расходования системных ресурсов. Видимо, чтобы подчеркнуть это, виноделы и отмазываются от определения «эмулятор». Да, слой совместимости — более правильное определение.

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

hobbit ★★★★★ ()
Последнее исправление: hobbit (всего исправлений: 2)
Ответ на: комментарий от peregrine

peregrine, hobbit:

И еще один вопрос.

Вот смотри. Когда говорят про эмуляторы - говорят про эмуляцию железа. Но вот, например, есть VMware Workstation и WMware Fusion. Я смотрел видео по установке Windows 95 на WMware Fusion на современном Маке. Когда чувак все установил, и в виртуалке открыл окно со свойствами системы (17:39 на видео) - там написано:

Pentium Pro(r)
64.0 MB RAM

(скриншот)

То есть, железо ведь сэмулировалось? А если так, то значит ли это, что Fusion это нечто большее, чем просто гипервизор?

Deleted ()

Собственная реализация WinAPI: считывалка Windows PE, переписанные системные и некоторые популярные библиотеки и бинарники винды.

xDShot ★★★★★ ()
Ответ на: комментарий от Deleted

Там в гипервизоре виртуалка разве не встроена? Это тоже не эмуляция, а трансляция по некоторым правилам. Эмуляция это когда скажем bochs, оверхэд там не сравнимый. Ты просто не учитываешь, что одна программа может быть всем, чем угодно, одномоментно.

anonymous ()
Ответ на: комментарий от anonymous

Ты просто не учитываешь, что одна программа может быть всем, чем угодно, одномоментно.

Стараюсь учиться учитывать.

Можешь привести примеры, когда программа является и гипервизором и эмулятором одномоментно? Если такие есть, конечно.

Deleted ()
Ответ на: комментарий от peregrine

Wine не обеспечивает работу ОС, по этому он не гипервизор. Wine не эмулятор, т.к. он не эмулирует никакое железо.

Ты не мог бы прояснить:

При всём этом, в Wine используется виртуализация? Я вот читал такое, что, якобы, Wine прдеставляет из себя «library-level virtualization».

Deleted ()
Ответ на: комментарий от Deleted

Я не разраб вайна. Но, как понимаю, library-level virtualization в этом контексте это то же самое, что и compatibility layer. То есть то же самое, что и проброс directx-а через vulcan аналогичный проект (как оно там называется).

peregrine ★★★★★ ()
Последнее исправление: peregrine (всего исправлений: 3)