Qual é a diferença entre WSL, SFU, SUA / Interix, o subsistema POSIX e Cygwin?

4

Eu encontrei muitas informações sobre como o Windows Subsystem para Linux ( A WSL trabalha com o msdn Blog . Eu sei que é baseado na tradução do syscalls do Linux para o syscalls do NT em tempo real e, portanto, é possível executar binários ELF não modificados.

O WSL é um subsistema NT e, portanto, é / são o subsistema Microsoft POSIX, o Windows Services para UNIX (SFU) e o Subsistema para Aplicativos baseados em Unix (SUA) / Interix.

O Cygwin, por outro lado, é uma aplicação que fica no topo do subsistema Win32.

No blog, os programas precisam ser recompilados para o SUA. Desde SUA é (como eu entendo isso) o sucessor do SFU, que por sua vez é o sucessor do subsistema POSIX. Então eu assumo todos os binários recompilados, também.

Se for esse o caso, como esses predecessores do WSL diferem do Cygwin?

Estou procurando uma comparação entre os sistemas / programas mencionados anteriormente e como eles funcionam "sob o capô". (Especificamente como a WSL difere de seus sucessores)

PS: precisava remover alguns links por enquanto, já que minha reputação na SU me limita a 2

    
por itaton 15.05.2017 / 13:50

2 respostas

2

O Interix / SFU / SUA é um subsistema leve, substituindo apenas a camada Win32 do userspace por algo como um Unix libc - embora exista um "driver de subsistema" (psxss) para certas tarefas, ainda usa executáveis do Windows PE (.exe), a libc ainda usa os syscalls do kernel NT, os processos Interix são quase inteiramente parecidos com processos Win32 ou nativos, e eles têm o mesmo acesso ao sistema de arquivos.

O Cygwin é semelhante mas mais simples; é construído inteiramente como uma biblioteca de tempo de execução do espaço do usuário no topo do Win32 (com a chamada NT ocasional). Como resultado, os aplicativos Cygwin são realmente apenas aplicativos Win32 que usam uma libc muito estranha.

Em comparação, o WSL é muito mais extenso do que o SUA - o driver Lxss reimplementa o syscalls do kernel Linux em vez das funções de biblioteca do userspace, e pode executar binários ELF não modificados (o sistema WSL padrão é o Ubuntu). O ambiente WSL é praticamente auto-contido e é praticamente uma máquina virtual "User-mode Linux", com muito pouca interação com o sistema operacional host. Embora os processos do WSL apareçam na árvore de processos compartilhados, você não pode simplesmente executar / bin / sh diretamente - você tem que inicializar todo o sistema WSL, o que é feito por bash.exe nos bastidores. (Houve uma postagem no blog sobre isso.)

    
por 15.05.2017 / 14:46
3

Em relação ao SUA / SFU e Interix, há uma diferença. Wikipedia explica muito bem e extensa: Subsistema Microsoft POSIX e Interix

O Interix era uma implementação do BSD no topo do subsistema POSIX. Você poderia substituí-lo por outra implementação como o GNU Debian ou o NetBSD (o que foi feito). SUA (2005) abriu o subsistema POSIX para que você pudesse estendê-lo com chamadas NT e até mesmo executar aplicativos Posix / Win32 mistos.

Infelizmente, a Microsoft nunca lançou ferramentas de desenvolvimento adequadas e até terceirizou o suporte. Houve um fórum onde os usuários poderiam ajudar uns aos outros com o desenvolvimento e outras coisas. A empresa de suporte forneceu um repositório com uma ampla variedade de pacotes binários. Eventualmente, a Microsoft parou de financiar e praticamente todas as informações sobre o Interix desapareceram quando a empresa de suporte encerrou o fórum.

Resumindo: os aplicativos SUA Posix eram muito rápidos, provavelmente os mais eficientes que você poderia executar no Windows. Mas eles foram uma dor para desenvolver, envolvendo hacking em arquivos de sistema NT e Posix, ou seja, muito divertido.

    
por 12.09.2017 / 08:46