29Jul
Ao aprender sobre servidores web e como eles funcionam, você pode estar curioso se estiver constantemente ouvindo os pedidos ou se eles esperam até receberem um pedido para entrar em ação. Com isso em mente, a publicação SuperUser Q & A de hoje tem as respostas para satisfazer a curiosidade de um leitor.
Today's Question &A sessão de atendimento chega a cortesia do SuperUser - uma subdivisão do Stack Exchange, um agrupamento comunitário de sites Q & A.
Captura de tela de tela de xmodulo / Linux Capturas de tela( Flickr).
A pergunta
Leitor de superutilizador user2202911 quer saber como os servidores da Web escutam novos pedidos:
Estou tentando entender os detalhes do nível mais profundo de como funcionam os servidores da web. Eu quero saber se um servidor, digamos Apache, por exemplo, está buscando continuamente 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 do cartão de rede?
Como um servidor web escuta novos pedidos?
A Resposta
Contribuinte do SuperUser Greg Bowser tem a resposta para nós:
A resposta curta é algum tipo de sistema de interrupção. Essencialmente, eles usam E / S de bloqueio, o que significa que dormem( bloquear) enquanto aguardam novos dados.
- O servidor cria um soquete de escuta e depois bloqueia enquanto aguarda novas conexões. Durante esse período, o kernel coloca o processo em um interruptible sleep e executa outros processos. Esse é um ponto importante;ter a pesquisa de processo continuamente desperdiçando os recursos da CPU.O kernel é capaz de usar os recursos do sistema de forma mais eficiente ao bloquear o processo até que haja trabalho para ele fazer.
- Quando novos dados chegam na rede, a placa de rede emite uma interrupção.
- Ao ver 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 o armazena na memória.(Isso deve ser feito rapidamente e geralmente é tratado dentro do manipulador de interrupção.)
- O kernel processa os dados recém-chegados e o associa a um soquete. Um processo que está bloqueando esse soquete será marcado como executável, o que significa que agora ele pode ser executado. Não é necessariamente executado imediatamente( o kernel pode decidir executar outros processos ainda).
- No seu lazer, o kernel irá despertar o processo do servidor web bloqueado.(Uma vez que agora é executável.)
- O processo do servidor web continua sendo executado como se nenhum tempo tivesse passado. A chamada do sistema de bloqueio retorna e processa novos dados. Em seguida, vá para o passo 1.
Tem alguma coisa para adicionar à explicação? Som desligado nos comentários. Deseja ler mais respostas de outros usuários Tech-savvy Stack Exchange? Confira o tópico de discussão completo aqui.