Luiz Gustavo S. Costa escreveu: > mas o binario não é emulado e sim as bibliotecas linux para rodar um > binario compilado usando bibliotecas linux... > > é diferente de um vware ou vbox da vida > > 2009/9/18 Ederson de Moura <[email protected]>: >> Oi Luiz, >> >> Um binário "emulado" nunca será mais rápido que um binário nativo! >> >> Cordialmente, edm.
Como o Luiz Gustavo disse, não existe qualquer emulação. Existe compatibilidade binária. A call execve(2) vai avaliar o formato do binário ELF, e com base no tipo (brand elf) vai decidir em que ambiente e bibliotecas isola o processo, se / ou /compat/linux; se o elf for tipo Linux passa a fornecer interfaces de chamadas de sistemas plenamente compatível com o kernel do linux na versão da compat. De fato a interface não é apenas compatível, é a mesma. O código é portado do kernel Linux (por isso options LINUX nunca está no GENERIC, é licença GPL). Logico que é só a interface de compatibilidade. Internalmente quando a call é feita, o FreeBSD faz as coisas de sua forma. Por exemplo, o malloc, fork, exec, free, pthread_create, pthread_detach. A chamada é plenamente compatível mas ao alocar a memória, é a VM do FreeBSD quem gerencia a memória do jeito dele (hello, Riek Van Riel). Ao escalonar um processo, é o escalonador do FreeBSD (ULE, 4BSD) e não do Linux (CFS, etc). Ao criar uma thread, é do jeito FreeBSD de ser MT. Ou seja não tem nada de emulação. É compatibilidade. E as diferenças de performance, quando existe, são técnicamente justificáveis. Pois um binário de Linux no FreeBSD, ainda que não saiba (e não precisa mesmo saber, não faz diferença, não é algo que diz respeito a aplicação e sim ao kernel), é o ULE quem o escalona, é a VM do McKusick que gerencia sua memoria, é a jemalloc quem aloca, enfim, não tem nada a ve com Linux. No entanto a aplicação não sabe (nem precisa) justificando qualquer diferença de performance. -- Patrick Tracanelli FreeBSD Brasil LTDA. Tel.: (31) 3516-0800 [email protected] http://www.freebsdbrasil.com.br "Long live Hanin Elias, Kim Deal!" ------------------------- Histórico: http://www.fug.com.br/historico/html/freebsd/ Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd

