Quando você escreve um código para escutar de uma porta, como 80 por exemplo, o que acontece sob o capô? O método que o sistema operacional usa para ouvir é puxar ou empurrar? Em outras palavras, o SO verifica essa porta a cada milissegundos x, por exemplo?
Eu simplesmente não entendo. Quanto mais eu penso sobre isso, mais me parece que não pode ser outra coisa senão puxar.
Quero dizer, mesmo que o sistema operacional defina uma função de retorno de chamada, ainda assim algo deve entender que chegaram novas informações para chamar essa função de retorno de chamada. Que algo ainda deve usar pull para entender a chegada dos novos dados.
Como uma porta escuta?
fonte
OK, não sou engenheiro de hardware Ethernet, mas acho que posso dar uma facada na sua pergunta. Quando você escreve um código para escutar de uma porta, acontece o seguinte:
Portanto, sua intuição de que "puxar" ocorre é, no nível mais baixo do hardware, talvez correta ... o circuito Ethernet "puxa" qual é o nível de tensão em determinados intervalos. (Mas o termo "puxar" pode ser totalmente incorreto se alguém estiver falando no nível do sistema operacional.) Obviamente, se você começar a falar sobre níveis de tensão e exatamente como as coisas são acionadas, nem a física elétrica nem a óptica usarão os termos "push "ou" pull "para descrever campos e potenciais elétricos, mas vamos assumir que somos todos programadores, não físicos aqui. :-)
fonte
O código que escuta uma porta apenas espera por uma mensagem da rede.
Sempre que o chip Ethernet recebe uma mensagem, é gerada uma interrupção. O kernel lida com essa interrupção e encaminha a mensagem para o driver de rede. Essa mensagem passa pela pilha TCP / IP e é filtrada ou passada para o código que escuta a porta.
fonte
O hardware Ethernet será o responsável pela pesquisa do fio físico (ou sem fio). Quando houver uma razão "suficientemente boa", interromperá o processador. O processador descobrirá o driver adequado que lidará com a interrupção. O manipulador de interrupção manipulará o evento (leitura / gravação de dados). O driver também informará o sistema operacional para ativar os threads em espera.
fonte