В чем разница между WSL, SFU, SUA/Interix, подсистемой POSIX и Cygwin

Я нашел много информации о том, как Подсистема Windows для Linux (WSL) работает на видеоролике.
Я знаю, что это основано на переводе системных вызовов Linux на системные вызовы NT в режиме реального времени, и поэтому можно запускать неизмененные двоичные файлы ELF.

ВСЛ-подсистема NT, а так были в Microsoft POSIX подсистема служб Windows для Unix (СФУ), и подсистемы для Unix-приложений (sua) / Interix.

Cygwin с другой стороны, это приложение, которое находится на вершине подсистемы Win32.

в блоге написано, что программы нужно перекомпилировать для SUA. Поскольку SUA является (как я понимаю) преемником SFU, который в свою очередь является преемником подсистемы POSIX. Поэтому я предполагаю, что все эти необходимые перекомпилированные двоичные файлы тоже.

Если это так, то чем эти предшественники WSL отличаются от Cygwin?

Я ищу для сравнения между ранее упомянутые системы / программы и как они работают "под капотом". (В частности, как WSL отличается от своих преемников)

ЗЫ: нужно удалить некоторые ссылки теперь с моей репутацией на пределы СУ меня 2

23
задан itaton
05.12.2022 19:03 Количество просмотров материала 3238
Распечатать страницу

2 ответа

Interix / SFU / SUA-легкая подсистема, заменяющая только userspace Win32 слой с чем – то вроде Unix libc-несмотря на то, что есть "драйвер подсистемы" (psxss) для некоторых задач, он по-прежнему использует Windows PE (.exe) исполняемые файлы, libc по-прежнему использует системные вызовы ядра NT, процессы Interix выглядят почти полностью как Win32 или собственные процессы, и они имеют одинаковый доступ к файловой системе.

Cygwin похож, но проще; он построен полностью как пользовательское пространство библиотека времени выполнения сверху Win32 (при случайном вызове NT). В результате приложения Cygwin на самом деле являются просто приложениями Win32, которые используют действительно странную libc.

для сравнения, WSL гораздо более обширен, чем даже SUA-драйвер Lxss переопределяет системные вызовы ядра Linux, а не функции библиотеки userspace, и может запускать неизмененные двоичные файлы ELF (по умолчанию система WSL-это запас Ubuntu). Среда WSL в основном самодостаточна и является практически " пользовательским режимом Linux" виртуальная машина, с очень маленьким взаимодействием с операционной системой хозяина. Хотя процессы WSL отображаются в дереве общих процессов, вы не можете просто запустить /bin/sh напрямую-вы должны boot вся система WSL, которая выполняется bash.exe за кулисами. (Об этом была запись в блоге.)

2
отвечен grawity 2022-12-07 02:51

Что касается SUA / SFU и Interix, есть разница. Википедия объясняет это довольно хорошо и обширно: подсистема Microsoft POSIX и Interix

Interix был реализацией BSD поверх подсистемы POSIX. Вы можете заменить его другой реализацией, например GNU Debian или NetBSD (что и было сделано). SUA (2005) открыл подсистему POSIX, чтобы вы могли расширить ее вызовами NT и даже запустить смешанный Posix / Win32 приложения.

к сожалению, Microsoft никогда не выпускала подходящих инструментов разработки и даже привлекала стороннюю поддержку. Был форум, где пользователи могли помогать друг другу с разработкой и другими вещами. Компания поддержки поставила в репозиторий широкий спектр бинарных пакетов. В конце концов Microsoft прекратила финансирование, и почти вся информация о Interix исчезла, когда компания поддержки закрыла форум.

вкратце: приложения Sua Posix были очень быстро, вероятно, наиболее эффективным вы могли бы работать на Windows. Но их было больно разрабатывать, включая взлом системных файлов NT и Posix, т. е. очень весело.

3
отвечен BeErikk 2022-12-07 05:08

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх