Hacker News 의견
  • 버퍼링된 접근은 일정 바이트 수나 시간이 지나면 플러시해야 함. 하드웨어 인터페이스에서 유사한 문제를 해결하는 일반적인 방법임

    • 사용자 공간에서 버퍼링하는 라이브러리는 데이터를 처음 버퍼링할 때 적절한 타이머를 설정해야 함
    • 타임아웃 파라미터는 인수로 전달하거나, 인간의 시간 척도보다 약간 낮거나, 대역폭/임계값에 비례하거나, 플러싱 오버헤드에 비례하는 것이 좋음
    • 쓰기와 읽기 모두에 적용되며, 데이터 채널에 따라 다를 수 있음
  • 시스템 전체 CPU가 유휴 상태가 되면 모든 버퍼를 플러시하고 싶음

    • 버퍼링은 일반적으로 CPU 절약 기법임
    • CPU가 유휴 상태가 되면 모든 프로세스에 "버퍼를 플러시하라"는 신호를 보내야 함
  • NIX 시스템을 20년 이상 다뤘지만, 버퍼링 문제를 항상 잊어버림

  • Unix를 35년 이상 사용했지만 버퍼링 작동 방식을 완전히 이해하지 못했음. 이 설명이 유익했음

  • "비버퍼링"과 "라인 버퍼링"을 혼동하고 있음

    • 비버퍼링은 성능을 저하시킬 수 있으며, 여러 소스가 동일한 파이프에 쓰는 경우 잘못된 출력을 생성할 수 있음
    • 라인 버퍼링은 터미널의 기본값이며, 파이프에 적합함
  • 버퍼는 화면에 출력을 인쇄하는 것보다 버퍼에 쓰는 것이 상대적으로 매우 느리기 때문에 존재함

    • UART 작업 시 자주 발생하는 문제이며, 다양한 해결책이 있음
    • 특수 문자 사용, 길이 기반 접근, 시간 기반 접근 등 다양한 방법이 있음
  • Ctrl-C를 누르면 버퍼 내용이 손실될 수 있음

    • 대부분의 프로그램은 SIGINT에서 버퍼를 플러시할 것이라고 생각함
  • Unix에서 버퍼링 문제를 겪었으며, 모든 'awk' 구현이 동일하게 작동하지 않음

  • 얼어붙은 파이프 농담을 놓친 기분임