GNU Hurd

Origem: Wikipédia, a enciclopédia livre.
Ir para: navegação, pesquisa
GNU Hurd
Logótipo
Captura de tela
HURD Live CD
Produção Projeto GNU
Thomas Bushnell
Roland McGrath
Marcus Brinkmann
Neal Walfield
Família do SO Unix-like
Linguagem Assembly, C
Modelo Código Aberto e Livre
Estado Corrente
Lançamento 1 de novembro de 1993 (20 anos)[1]
Versão estável 0.5 / 27 de setembro de 2013; há 52 semanas e 5 dias[2]
Arquitetura(s) i386
Núcleo Núcleo híbrido servidor/cliente
Interface Bash
Licença GNU General Public License
Página oficial www.gnu.org/software/hurd/

GNU Hurd (também conhecido como the Hurd) é um conjunto de servidores núcleo de um sistema operacional desenvolvido para substituir o Unix [3] publicado como free software sobre a licença GNU General Public License. O seu desenvolvimento têm sido continuo desde 1990 pela equipe do Projeto GNU da Free Software Foundation. O GNU Hurd consiste num conjunto de protocolos e processo de servidores (ou daemons, em terminologia Unix) que correm no microkernel GNU Mach; juntando tudo tenciona-se formar o kernel do sistema operativo GNU.[3] O Hurd pretende ultrapassar os sistema operativo Unix em funcionalidade, segurança, e estabilidade, enquanto se mantêm bastante compatível a eles. O projeto GNU escolheu para o sistema operativo a arquitetura arquitetura microkernel servidor–cliente, ao notar ganhos sobre o tradicional arquitetura kernel monolítico Unix. Isto é alcançado no Hurd através da implementação da especificação POSIX (entre outros), mas eliminando as restrições arbitrárias aos usuários. [4]

[editar | editar código-fonte]

Em dezembro de 1991, o arquiteto principal do Hurd, explicou que "HURD" é um acrônimo indiretamente recursivo para: "HIRD of Unix-Replacing Daemons", em que "HIRD" significa "HURD of Interfaces Representing Depth", a opinião que prevalece atualmente na equipe é de que Hurd é um substantivo concreto.[5] [6]

É hora [de] explicar o significado de "Hurd". "Hurd" significa "Hird de daemons substituindo Unix". E, então, "Hird" significa "Hurd de interfaces representando profundidade". Temos aqui, ao meu conhecimento, o primeiro software a ser nomeado por um par de siglas mutuamente recursivas.
Thomas Bushnell

Ainda em estágio de desenvolvimento, os próprios (e pouquíssimos) desenvolvedores pedem ajuda à pessoas conhecedoras da Linguagem C (tanto para o desenvolvimento do núcleo, quanto para o porte de aplicativos), assim como pessoas que tenham disponibilidade para efetuar testes e reportar bugs.

Como ambos "Hurd" e "Hird" são homófonos da palavra em Inglês "rebanho" (herd), o nome completo GNU Hurd também é uma brincadeira com as palavras rebanho de gnus, refletindo como o kernel funciona[7] o logotipo é chamado de caixas Hurd e isso também reflete na arquitetura. O logotipo é um gráfico onde os nós representam servidores do kernel Hurd e as bordas são dirigidas IPC. Mensagens [6]

Devido ao estado da tecnologia microkernel, na sigla duplamente recursiva é muitas vezes referida pelos especialistas como a característica mais interessante do GNU Hurd.[8]

Desenvolvimento e historia[editar | editar código-fonte]

O Richard Stallman fundou o projeto GNU em setembro de 1983 com a finalidade de criar o sistema operativo free GNU. Inicialmente os componentes necessários para o kernel e seu desenvolvimento foram escritos: editores, shell, compilador e todos os outros. Em 1989, foi criado o GPL e "só" faltava um importante componente: o kernel.[9] [10]

O desenvolvimento do Hurd começou em 1990 depois de ter abandonado uma tentativa de construir o kernel em 1986, baseado na investigação do sistema operativo TRIX desenvolvido pelo professor Steve Ward e seu grupo em MIT's laboratório de informática (LCS).[11] De acordo com Thomas Bushnell, o arquiteto inicial do Hurd, o plano inicial era adaptar o kernel 4.4BSD-Lite kernel e, em retrospecto, "É perfeitamente óbvio a mim que isto iria ter um sucesso esplêndido e que o mundo seria muito diferente hoje".[12] Em 1987 Richard Stallman propôs utilizar o Mach microkernel desenvolvido na Universidade Carnegie Mellon (CMU). O trabalho foi atrasado três anos devido incerteza se a CMU iria liberar o código Mach numa licença correspondente.[11]

Com a publicação do Kernel Linux em 1991, o usuário primário das ferramentas e componentes GNU de espaço de usuário em breve se tornaram sistemas operativos construídos sobre o kernel linux (Distribuições linux), solicitando a controvérsia controvérsia do termo GNU/Linux.

Desenvolvimento do Hurd têm ocorrido lentamente. Apesar dos anúncios positivos de Stallman em 2002 prevendo a publicação do GNU/Hurd mais tarde nesse ano,[13] o Hurd ainda não é considerado adequado para ambientes de produção. O seu desenvolvimento, em geral, não atingiu as expectativas, e ainda há bugs e falta particularidade. [14] Isso resultou em um produto mais pobre do que muitos (inclusive o Stallman) esperavam. [15] Em 2010, após 20 anos em desenvolvimento, Stallman disse que ele" não era muito otimista sobre o GNU Hurd. Faz algum progresso, mas para ser realmente superior seria necessário resolver muitos problemas complexos", mas acrescentou que" o acabamento não é crucial "para o sistema GNU porque um kernel livre já existia (Linux), e completando Hurd não resolveria o principal problema restante para um sistema operacional livre: suporte a dispositivos. [16]

O projeto Debian, entre outros, trabalhou no projeto Hurd para produzir distribuições binárias do Sistemas operativos baseados em Hurd para sistemas compatíveis com IBM PC.[8]

Arquitetura[editar | editar código-fonte]

Estrutura geral de sistemas operacionais monolíticos, microkernel e kernel hibrido, respectivamente

Ao contrário da maioria de kernels Unix-like, o Hurd utiliza uma arquitetura cliente-servidor, construída em um microkernel, que é responsável por fornecer os serviços mais básicos do kernel - coordenar o acesso ao hardware: o CPU (a escalonamento de processos e gerenciamento de processos), RAM (via gerenciamento de memória), e vários outros dispositivos de entrada/saída (via agendamento I/O) para o som, gráficos, armazenamento de massa, etc, em teoria o projeto microkernel permitiria a todos os drivers de dispositivo serem construídos como servidores que trabalham em espaço do usuário, mas hoje a maioria dos drivers desse tipo são ainda contida no espaço do kernel no GNU Mach. [17]

De acordo com os desenvolvedores do Hurd a principal vantagem do projeto baseado em microkernel é a capacidade de estender o sistema: o desenvolvimento de um novo módulo não exige conhecimento profundo do resto do kernel e um bug em um módulo não travar o sistema inteiro. Hurd fornece um conceito de tradutores, uma estrutura de módulos usados ​​para estender a funcionalidade do sistema de arquivos [18]

Desde cedo, o Hurd foi desenvolvido para usar GNU Mach como o microkernel. Esta foi uma decisão técnica feita por Richard Stallman, que pensou que iria acelerar o trabalho de salvar uma grande parte dela. Ele admitiu que estava errado sobre isso [19] Outros sistemas Unix-like que trabalham no Mach microkernel. Incluem OSF/1, Lites e MkLinux. Mac OS X e NeXTSTEP usam núcleos híbridos baseados no Mach.

Outros microkernels[editar | editar código-fonte]

De 2004 em diante, vários esforços foram lançados para portar o Hurd para microkernels mais modernos. O L4 microkernel era a escolha original, em 2004, mas desacelerou a um impasse. No entanto, em 2005, o desenvolvedor Hurd, Neal Walfield terminou a estrutura de gerenciamento de memória inicial para a porta L4/Hurd e Marcus Brinkmann portou as partes essenciais de glibc, ou seja, obter o código de inicialização do processo de trabalho, permitindo que os programas sejam executados, permitindo assim que os primeiros programas de usuários (os triviais, como o programa Olá Mundo em C) possa ser executado.

Desde 2005 Brinkmann e Walfield começou a pesquisar sobre o Coyotos como um novo kernel para HURD. [20] [21] Em 2006, conheceu Brinkmann com Jonathan Shapiro (o principal arquiteto do sistema operacional Coyotos) para ajudar e discutir o uso do kernel Coyotos para GNU/Hurd. Uma discussão mais aprofundada dos desenvolvedores HURD perceberam que o Coyotos (bem como outros núcleos similares) não são adequados para o Hurd.

Em 2007, os desenvolvedores do Hurd, Neal Walfield e Marcus Brinkmann fizeram uma crítica da arquitetura Hurd, conhecida como "a crítica", [22] e uma proposta de como o futuro sistema pode ser projetado, conhecido como "o papel de posição". [23] em 2008, Neal Walfield começou a trabalhar no microkernel Viengoos como um kernel nativo moderno para HURD. A partir de 2009, o desenvolvimento em Viengoos está em pausa devido à falta de tempo que Walfield tem para trabalhar nele [24] .

Enquanto isso, os outros continuaram a trabalhar na variante Mach do Hurd. [25]

extensões Unix[editar | editar código-fonte]

Uma série de conceitos tradicionais do Unix são substituídos ou extensíveis no Hurd.

No Unix, cada programa em execução tem um associado user id, que normalmente corresponde ao usuário que iniciou o processo. Este id amplamente dita as ações permitidas para o programa. Nenhum processo exterior pode mudar o ID de usuário de um programa em execução. Um processo Hurd, por outro lado, é executado sob uma set no IDs de usuário, que pode conter vários ids, um ou nenhum. Um processo suficientemente privilegiado pode adicionar e remover ids para outro processo. Por exemplo, existe um servidor de senha que irá distribuir ids em troca de uma senha de login correta.

Quanto ao sistema de arquivos, um programa adequado pode ser designado como um tradutor para um único arquivo ou uma hierarquia de diretório inteiro. Todo o acesso ao processo traduzido, ou abaixo de uma hierarquia de arquivos, no segundo caso, é, de facto, processado pelo programa. Por exemplo, um arquivo tradutor pode simplesmente redirecionar ler e escrever operações para outro arquivo, e não ao contrário de um link simbólico Unix. O efeito montagem do Unix é alcançado através da criação de um sistema de arquivos tradutor (usando o comando "settrans"). Os tradutores também podem ser usados ​​para fornecer serviços ao utilizador. Por exemplo, o ftpfs tradutor permite que um usuário para encapsular sites FTP remotos dentro de um diretório. Em seguida, as ferramentas padrão, como ls, cp e rm pode ser usado para manipular arquivos no sistema remoto. Mesmo os tradutores mais poderosos são aqueles, como UnionFS, que permite que um usuário para unificar vários diretórios em um, listando assim o diretório unificado revela o conteúdo de todos os diretórios (um recurso que está faltando em muitos sistemas Unix, embora disponível nos modernos BSDs).

O Hurd requer um multiboot compatível com boot loader, como o GRUB.

A arquitetura dos servidores[editar | editar código-fonte]

De acordo com a documentação Debian existem 24 servidores (18 servidores centrais e seis servidores do sistema de arquivos) nomeados da seguinte forma: [26]

Servidores Núcleo[editar | editar código-fonte]

  • auth (servidor de autenticação): Recebe solicitações e senhas de programas e dá-lhes um ID, que muda os privilégios do programa.
  • crash (servidor de travamento): Aceita todos os erros fatais.
  • exec (servidor de execução): Traduz uma imagem executável (corrente ELF e a.out que são suportadas) rodando uma imagem executável na memória.
  • fifo (tradutor FIFO): Implementa pipes nomeados.
  • new-fifo (novo servidor FIFO): Um servidor alternativo para pipes nomeados.
  • firmlink (o tradutor firmlink): Implementa firmlinks - "a meio caminho entre a link simbólico e um link duro" [27]
  • fwd (servidor forward): encaminha solicitações para outros servidores, usado por servidores de FIFO e symlink.
  • hostmux (servidor de multiplexador host)
  • ifsock (servidor para a interface de sockets): Ajuda com domínio endereços de soquetes UNIX.
  • init (servidor init): O sistema básico de inicialização e configuração.
  • magic (servidor de magic)
  • null (servidor null): Implementa /dev/null e /dev/zero.
  • pfinet (servidor pfinet): Implementa o protocolo da familia PF_INET.
  • pflocal (servidor pflocal): Implementos soquetes de domínio Unix.
  • proc (servidor process): Atribui PID s e gere acções a nível de processo.
  • symlink (tradutor link simbólico): Implementa links simbólicos para os sistemas de arquivos que não os suportam.
  • term (servidor de terminal): Um terminal POSIX.
  • usermux (servidor de usuário multiplexador): Invoca tradutores específicos do usuário.

Servidores do Sistema de Arquivos[editar | editar código-fonte]

Ext2fs
O tradutor para o sistema de arquivos ext2. Ele recebe blocos de disco do microkernel e dando arquivos e diretórios para as aplicações.
Isofs
O tradutor para o sistema de arquivos ISO 9660. Traduz blocos de um CD ou DVD para arquivos e diretórios para as aplicações.
Nfs
Veja Network File System.
Ufs
Tradutor para o sistema de arquivos BSD com o mesmo nome, UFS.
Ftpfs
File Transfer Protocol tradutor de sistema de arquivo.
Storeio
O tradutor de armazenamento.

Os servidores coletivamente implementam o POSIX API, com cada servidor de implementando parte da interface. Por exemplo, os vários servidores de sistemas de arquivos individualmente implementam as chamadas de sistema de arquivos. O servidor de armazenamento vai funcionar como uma camada de wrapping, semelhante à camada de bloqueio do Linux. O equivalente a VFS no Linux é conseguido através libdiskfs e bibliotecas libpager.

Distribuições GNU rodando Hurd[editar | editar código-fonte]

Portal A Wikipédia possui o portal:

As distribuições baseadas em Hurd GNU incluem:

Ver também[editar | editar código-fonte]

Referências

  1. Situação do Hurd e chamada a voluntários (em Inglês). Página visitada em 24 de Maio de 2013.
  2. debian gnu hurd 2013 (em Inglês). Página visitada em 27 de setembro de 2013.
  3. a b What Is the GNU Hurd? GNU.
  4. vantagens (em Inglês) GNU. Página visitada em 7 de dezembro de 2013.
  5. Grammatically speaking.... Página visitada em 24 de maio de 2013.
  6. a b Vervloesem, Koen (Julho 7, 2010). The Hurd: GNU's quest for the perfect kernel (em Inglês) LWN.net.
  7. GNU Hurd: Origin of the Name GNU. Página visitada em 2010-03-04.
  8. a b Doeppner, Thomas W. "Operating System Design." Computer Science 167. Brown University. Providence, RI, Oct 1, 2011.
  9. Hillesley, Richard (30 de junho de 2010). GNU HURD: Altered visions and lost promise (em Inglês). Página visitada em 1 de outubro de 2012.
  10. Linux and the GNU Project GNU. (2010-01-26). Página visitada em 2010-03-04.
  11. a b The GNU Hurd History, "How it Started" GNU.. Página visitada em 2006-08-27.
  12. Salus, Peter H.. The Daemon, the GNU and the Penguin. Página visitada em 2006-08-08.
  13. Ribeiro, John (2002-03-11). Free Software Sees GNU Loose of Linux PC World.. Página visitada em 2012-10-05.
  14. Status GNU.. Página visitada em 2010-03-04.
  15. Stallman, Richard (2006-03-09). The Free Software Movement and the Future of Freedom (ogg) Free Software Foundation.. "Este é o caminho, também, que as pessoas pensavam que era a maneira mais limpa possível de projetar kernels em 1990. Bem, demorou muitos muitos muitos anos para conseguir este kernel para funcionar em tudo, e ainda não funciona bem, e parece que pode haver problemas fundamentais com este projeto, que ninguém conhecia em 1990."
  16. Stallman, Richard (2010-07-29). RMS AMA Reddit. Página visitada em 2011-12-07.
  17. Kousoulos, Constantine (2007-03-21). "Re: Device drivers in Mach?". bug-hurd mailing list. http://lists.gnu.org/archive/html/bug-hurd/2007-03/msg00089.html. 
  18. Thomas W. Doeppner. Sistemas Operacionais em profundidade.: Design e Programação. [S.l.: s.n.]. ISBN 978-0-471-68723 -8
  19. Stallman, Richard (2000-10-12). In Defense of Red Hat Linux Today.. Página visitada em 2011-12-07. "Assumo total responsabilidade pela decisão técnica para desenvolver o kernel GNU baseado no Mach, uma decisão que parece ter sido responsável pela lentidão no desenvolvimento. Pensei usando Mach iria acelerar o trabalho, salvando-nos em grande parte do trabalho , mas eu estava errado."
  20. Shapiro, Jonathan S. (2005-10-27). "Re: A comment about changing kernels". l4-hurd mailing list. http://lists.gnu.org/archive/html/l4-hurd/2005-10/msg00755.html. 
  21. Bachmann, Tom (2006-07-07). "Re: seL4, L4.sec and coyotos mess". l4-hurd mailing list. http://lists.gnu.org/archive/html/l4-hurd/2006-07/msg00004.html. 
  22. A Critique of the GNU Hurd Multi-server Operating System (PDF) GNU. (2007-07). Página visitada em 2011-12-07.
  23. Improving Usability via Access Decomposition and Policy Refinement (PDF) GNU. (2007-01-04). Página visitada em 2011-12-07.
  24. viengoos GNU. Página visitada em 2010-03-04.
  25. What happened to the L4/Coyotos/viengoos micro-kernels? GNU. Página visitada em 2011-01-07.
  26. Preliminary GNU/Hurd User Interface Description Debian. (1996-10-10). Página visitada em 2010-03-04.
  27. GNU/Hurd - Documentation Debian (1996-10-10). Página visitada em 2012-07-12.
  28. nixos.org
  29. Nix-based GNU/Hurd System Gnu.org (2012-03-21). Página visitada em 2012-07-12.
  30. GNU Hurd/ hurd/ running/ live cd. Página visitada em 19 de Novembro de 2012.

Ligações externas[editar | editar código-fonte]