O Cygwin funciona fornecendo uma biblioteca, cygwin1.dll
, que atua como a camada de tradução entre as APIs POSIX e Linux e os recursos correspondentes do Windows. Dessa forma, não é necessário modificar o sistema operacional. (Os programas Cygwin, é claro, precisam ser compilados como programas nativos Win32 .exe, simplesmente vinculados a diferentes bibliotecas.)
Programas baseados em terminal podem ser executados nos dois sentidos: podem ser executados no console do Windows (onde o cygwin1.dll converte automaticamente seqüências do tipo VT100 impressas em funções da API do console do Windows) ou podem ser executados em terminal semelhante ao VT100 emuladores como MinTTY, URxvt ou PuTTYcyg. (Cygwin geralmente vem com o primeiro por padrão).
Normalmente, os serviços não são necessários para a operação normal, a menos que você instale programas que são projetados como serviços (por exemplo, o daemon do servidor OpenSSH).
[Apenas para comparação: Interix, também conhecido como Services for Unix, trabalha em uma camada inferior, fornecendo um subsistema
Mesmo assim, nem o kernel nem outros componentes do sistema operacional precisam ser modificados, nem os drivers personalizados devem estar instalados, já que os dois métodos apenas adicionam uma camada de tradução no espaço do usuário.]