Pagina inicial » como » Como os Servidores da Web Escutam Novas Solicitações?

    Como os Servidores da Web Escutam Novas Solicitações?

    Ao aprender sobre servidores da Web e como eles funcionam, você pode ficar curioso se eles estiverem constantemente ouvindo solicitações ou se aguardarem até receber uma solicitação para entrar em ação. Com isso em mente, o post de perguntas e respostas do SuperUser de hoje tem as respostas para satisfazer a curiosidade de um leitor.

    A sessão de perguntas e respostas de hoje nos é oferecida por cortesia do SuperUser - uma subdivisão do Stack Exchange, um agrupamento de sites de perguntas e respostas conduzido pela comunidade..

    Screenshot courtesy of xmodulo / Linux (Flickr).

    A questão

    SuperUser reader user2202911 quer saber como os servidores da Web atendem a novas solicitações:

    Estou tentando entender os detalhes do "nível mais profundo" de como os servidores da Web funcionam. Eu quero saber se um servidor, digamos o Apache, por exemplo, está continuamente pesquisando novos pedidos ou se funciona por algum tipo de sistema de interrupção. Se é uma interrupção, o que está provocando a interrupção? É o driver da placa de rede?

    Como um servidor da Web escuta novos pedidos??

    A resposta

    Greg Bowser, colaborador do SuperUser, tem a resposta para nós:

    A resposta curta é algum tipo de sistema de interrupção. Essencialmente, eles usam bloqueio de E / S, o que significa que eles dormem (bloqueiam) enquanto aguardam novos dados.

    1. O servidor cria um soquete de escuta e bloqueia enquanto aguarda novas conexões. Durante esse tempo, o kernel coloca o processo em um sono interrompido estado e executa outros processos. Esse é um ponto importante; ter a pesquisa do processo continuamente desperdiçaria recursos da CPU. O kernel é capaz de usar os recursos do sistema de forma mais eficiente, bloqueando o processo até que haja trabalho para ele fazer.
    2. Quando novos dados chegam à rede, a placa de rede emite uma interrupção.
    3. Vendo que há uma interrupção da placa de rede, o kernel, através do driver da placa de rede, lê os novos dados da placa de rede e os armazena na memória. (Isso deve ser feito rapidamente e geralmente é tratado dentro do manipulador de interrupção.)
    4. O kernel processa os dados recém-chegados e os associa a um soquete. Um processo que está bloqueando nesse soquete será marcado como executável, o que significa que agora ele está qualificado para ser executado. Ele não necessariamente é executado imediatamente (o kernel pode decidir executar outros processos ainda).
    5. Em seu lazer, o kernel irá ativar o processo do servidor web bloqueado. (Desde que agora é executável.)
    6. O processo do servidor da web continua executando como se nenhum tempo tivesse passado. Seu sistema de bloqueio chama retornos e processa novos dados. Então vá para o passo 1.

    Tem algo a acrescentar à explicação? Som desligado nos comentários. Quer ler mais respostas de outros usuários do Stack Exchange com experiência em tecnologia? Confira o tópico de discussão completo aqui.