Como os sistemas operacionais lidam com /etc/hosts algoritmicamente?

Como os sistemas operacionais lidam com /etc/hosts algoritmicamente?

Eu tenho um enorme arquivo /etc/hosts com 18.000 linhas. Eu o uso para bloquear servidores de anúncios e coisas assim. Meu desempenho de navegação parece bom, mas me pergunto se há algum tamanho em que começarei a desacelerar? Como os sistemas operacionais armazenam o arquivo hosts durante a operação? Posso pensar em várias maneiras, de lenta a rápida, e minha suposição a priori é que isso seja tratado de forma eficiente, pois é fundamental para a rede. Aqui estão algumas maneiras que posso pensar, do simples ao mais complexo:

  • Leia o arquivo sempre que necessário.
  • Leia uma vez
    • pesquisa linear
    • classificar e depois pesquisar binária
    • use uma tentativa
    • use um hash, mas como ele minimiza colisões

Há muitas maneiras que parecem razoáveis. O que é realmente usado?

Parece que esta pergunta deve ter sido respondida em algum lugar, portanto, sugestões para um recurso existente são bem-vindas. Eu olhei, mas talvez não no lugar certo.

Responder1

Você deve informar qual sistema operacional está usando, mas de qualquer maneira, um método usual para melhorar o desempenho da resolução de nomes com Unix e sistemas semelhantes ao Unix é usar um daemon (geralmente nscd) que armazena em cache resoluções positivas e negativas e responde rapidamente à maioria das solicitações. Quando /etc/hosts é modificado, pelo menos no Solaris, esse cache é invalidado.

informação relacionada