Existe realmente algo como "empurrar"?

8

Depois de escapar do domínio dos sinais elétricos e lidar com o software, existe realmente uma arquitetura "push" onde não há pesquisas periódicas?

Não consigo pensar em nenhum projeto em que ele não esteja pesquisando em algum nível. Parece que sempre existe apenas um ou dois níveis abaixo da abstração / API real com a qual você está lidando. Os soquetes na extremidade receptora da maioria das conexões "push" apenas pesquisam solicitações de entrada etc.

John Cromartie
fonte
4
Você considera uma interrupção acionada por hardware como "sondagem"?
22612 Oliver Oliverworth
Eu diria que não. Mas quais sistemas de software podem realmente utilizá-los (principalmente no campo dos aplicativos em rede)?
precisa saber é o seguinte
5
programação de soquetes e soquetes da Web são "push".
precisa saber é o seguinte

Respostas:

14

Eu acho que o Windows exigia que os aplicativos pesquisassem E / S até o NT e o Windows 95. Os sistemas operacionais modernos de uso geral eliminaram praticamente a necessidade de pesquisas. Quando seu aplicativo solicita a leitura de um soquete, a função de leitura deve fazer uma chamada para o kernel do sistema operacional. O sistema operacional coloca o encadeamento de chamada em um estado suspenso. À medida que os pacotes de rede chegam, eles acionam uma interrupção de hardware tratada pelo sistema operacional. Se o pacote é aquele que seu aplicativo está procurando, o sistema operacional retira o encadeamento do estado suspenso e a leitura pode prosseguir. Em outras palavras, sua aplicação é de fato acoplada à região dos sinais elétricos via sistema operacional.

Charles E. Grant
fonte
Obrigado! Este é um ótimo resumo. Na verdade, tenho lido "Code", de Charles Petzold, e cheguei à parte sobre interrupções. Tudo isso faz muito mais sentido agora, e posso ver como um dispositivo de rede, CPU e SO podem trabalhar juntos para implementar uma verdadeira arquitetura push.
precisa saber é o seguinte
2

A arquitetura websocket é uma arquitetura push, na verdade o mesmo ocorre com troca e perspectiva. Esses protocolos permanecem conectados ao servidor o tempo todo e o servidor envia mensagens (pressiona-os) sempre que houver mensagens ...

Rotemmiz
fonte
1

Eu também consideraria os soquetes que Charles já apresentou como certamente um design "push". Ele o acompanhou desde o campo dos sinais elétricos, mas outro tópico a considerar são os projetos "push", que são puramente decisões de arquitetura de aplicativos e ocorrem em camadas de abstração muito mais altas.

Estruturas de eventos típicas seriam consideradas push, pois a fonte de eventos acionará eventos, independentemente de quem os esteja ouvindo ou se o coletor de eventos puder acompanhar esses eventos.

Outro exemplo, que é a área em que trabalho, é o streaming de vídeo. Trabalhamos com RTP (protocolo de transporte em tempo real). É baseado em UDP / IP e, por natureza, é um protocolo push. O remetente continuará enviando o vídeo na velocidade que escolher, sem se importar se o receptor o acompanhará.

DXM
fonte
1

Claro que existe. Aplicativos de soquete UDP no Unix, por exemplo, podem ser puramente push. O mais conhecido seria o clássico BSD Unix syslogd, que declara sua disposição em aceitar pacotes recebidos ("enviados") e processá-los. Nenhuma comunicação reversa no nível do aplicativo ou protocolo (o "empurrador" nem sabe se o pacote foi recebido e processado corretamente). No nível da API no aplicativo de recebimento, pode haver mecanismos de polling, síncrono ou de recebimento de retorno de chamada, os dois últimos são de envio puro.

Ross Patterson
fonte