OS는 /etc/hosts를 알고리즘적으로 어떻게 처리합니까?

OS는 /etc/hosts를 알고리즘적으로 어떻게 처리합니까?

나는 18,000줄의 거대한 /etc/hosts 파일을 가지고 있습니다. 나는 그것을 광고 서버 등을 차단하는 데 사용합니다. 브라우징 성능은 괜찮은 것 같은데, 어느 정도 속도가 느려지기 시작하는지 궁금합니다. OS는 작동 중에 호스트 파일을 어떻게 저장합니까? 느린 것부터 빠른 것까지 다양한 방법을 생각할 수 있으며, 네트워킹의 핵심이기 때문에 효율적으로 처리된다는 것이 선험적으로 가정됩니다. 간단한 것부터 복잡한 것까지 제가 생각할 수 있는 몇 가지 방법은 다음과 같습니다.

  • 필요할 때마다 파일에서 읽습니다.
  • 한 번 읽으세요
    • 선형 검색
    • 정렬 후 이진 검색
    • 트라이를 사용하다
    • 해시를 사용하지만 충돌을 최소화하는 방법은 무엇입니까?

합리적으로 보이는 방법은 많습니다. 실제로 무엇이 사용됩니까?

이 질문은 어딘가에서 답변되었을 것 같으므로 기존 리소스에 대한 포인터를 환영합니다. 찾아봤지만 아마도 올바른 위치에 있지 않았을 수도 있습니다.

답변1

어떤 OS를 사용하고 있는지 알려야 하지만 어쨌든 Unix 및 Unix 계열 시스템에서 이름 확인 성능을 향상시키는 일반적인 방법은 긍정 및 부정 확인을 캐시하고 대부분의 요청에 신속하게 응답하는 데몬(일반적으로 nscd)을 사용하는 것입니다. /etc/hosts가 수정되면 최소한 Solaris에서는 이 캐시가 무효화됩니다.

관련 정보