Autor Tópico: Sockets em Shell  (Lida 2400 vezes)

Offline IgorRafael

  • Usuário Ubuntu
  • *
  • Mensagens: 12
    • Ver perfil
Sockets em Shell
« Online: 24 de Julho de 2012, 16:38 »
Olá,
alguém sabe me informar porque o custo de memória da execução da aplicação servidor_socket (faucet) é bem menor do que em outras linguagens?
Sei que o uso das bibliotecas implicam nesse melhor desempenho do faucet, mas preciso justificar o porque de ser melhor usar o faucet, com algo concreto, alguém sabe me afirmar algo ou me indicar algum material que trate disso?
Grato!

Offline IgorRafael

  • Usuário Ubuntu
  • *
  • Mensagens: 12
    • Ver perfil
Re: Sockets em Shell
« Resposta #1 Online: 30 de Julho de 2012, 11:51 »
Em minhas procuras por uma solução, encontrei esse artigo:
http://www-usr.inf.ufsm.br/~giovani/sockets/api_socket.txt

Que em específico ele trata do uso das bibliotecas no seguinte fragmento:

Sockets e Bibliotecas de Socket
No UNIX BSD e nos sistemas que derivaram dele, as funções de sockets
fazem parte do próprio sistema operacional. Como os sockets se tornaram
mais extensamente usados, os vendedores de outros sistemas decidiram
acrescentar uma API de sockets a seus sistemas. Em muitos casos, em vez
de modificar seu sistema operacional básico, os vendedores criaram uma
biblioteca de sockets que fornece a API de sockets. Isto é, o vendedor
criou uma biblioteca de procedimentos onde cada procedimento tem o mesmo
nome e argumentos que as funções de socket.

Do ponto de vista de um programador de aplicativos, uma biblioteca de
sockets fornece a mesma semântica que uma implementação de sockets no
sistema operacional. O programa chama procedimentos de sockets, que são
então providos por procedimentos do sistema operacional ou por rotinas
de biblioteca. Deste modo, um aplicativo que usa sockets pode ser
copiado para um novo computador, compilado, carregado junto com a
biblioteca de sockets do computador e então executado - o código de
origem não precisa ser mudado quando o programa for portado de um
sistema de computador para outro (na prática, bibliotecas de sockets são
raramente perfeitas, e às vezes ocorrem diferenças menores entre a
implementação padrão de uma API de sockets e uma biblioteca de sockets -
por exemplo, na forma em que os erros são tratados).

Apesar de semelhanças aparentes, bibliotecas de socket têm uma
implementação completamente diferente que uma API de sockets nativa
provida por um sistema operacional. Diferentemente de rotinas de socket
nativo, que são parte do sistema operacional, o código para
procedimentos de biblioteca de sockets é unido ao programa aplicativo e
reside no espaço de endereçamento do aplicativo. Quando um aplicativo
chamar um procedimento da biblioteca de sockets, o controle passa para a
rotina de biblioteca que, por sua vez, faz uma ou mais chamadas para as
funções de sistema operacional subjacente para obter o efeito desejado.
É interessante perceber que funções providas pelo sistema operacional
subjacente não precisam de maneira alguma se assemelhar à API de
sockets - as rotinas na biblioteca de sockets escondem do aplicativo o
sistema operacional nativo e apresentam somente uma interface de
sockets. Para resumir:

Uma biblioteca de sockets pode fornecer a aplicativos uma API de sockets
em um sistema de computador que não forneça sockets nativos. Quando um
aplicativo chama um dos procedimentos de socket, o controle passa para
uma rotina de biblioteca que faz uma ou mais chamadas para o sistema
operacional subjacente para implementar a função de socket.

Mas não acho isso suficiente para concluir que a linguagem Bash (Shell Script ) possua o socket nativo e por isso seu custo seja menor,  o que vocês acham?