2P by neo 3일전 | favorite | 댓글 1개
  • Epoch 이후의 초

    • POSIX 시간, 또는 Unix 시간은 1970년 1월 1일 00:00:00 이후의 초를 의미한다고 알려져 있음. 그러나 이는 정확하지 않음. 예를 들어, 2024년 12월 25일 18:54:53 UTC의 POSIX 시간은 1735152686이며, 이는 실제로 1735152715초가 경과한 것보다 29초 낮음.

    • POSIX 시간은 IEEE 1003.1에서 협정 세계시(UTC)로부터 파생됨. 표준은 매일이 정확히 86,400초라고 가정함. 그러나 실제로 하루의 길이는 86,400초가 아니며, 시간이 지남에 따라 변함. 이를 조정하기 위해 천문학자들은 주기적으로 UTC에 윤초를 선언함.

  • 고고학

    • IEEE 1003의 부록 B는 윤초에 대한 흥미로운 논의를 포함하고 있음. 표준이 발행될 당시, 1970년 1월 1일 이후 14개의 윤초가 추가되었음. 이러한 윤초는 시간 차이를 쉽게 계산하기 위해 무시됨.

    • 대부분의 시스템은 시간이 지속적으로 증가하는 값으로 간주함. 그러나 대부분의 시스템은 윤초를 추적하지 않으며, 표준 시간 참조에 동기화되지 않음. 따라서 Epoch 이후의 초가 참조된 시간과 Epoch 사이의 초를 정확히 나타내야 한다는 요구는 부적절함.

    • Epoch 이후의 초의 일관된 해석은 특정 유형의 분산 애플리케이션에 중요할 수 있음. 윤초의 누적은 예측할 수 없으며, Epoch 이후의 윤초 수는 증가할 가능성이 있음.

  • 대신 해야 할 일

    • 한 컴퓨터에서 두 이벤트 간의 지속 시간을 계산하려면 CLOCK_MONOTONIC을 사용해야 함. 다른 시스템과 POSIX 시간을 교환할 필요가 없다면 TAI, GPS 또는 LORAN을 사용할 수 있음.

    • POSIX 타임스탬프 시스템과 대략적인 정렬이 필요하다면, 윤초를 더 긴 시간 창에 걸쳐 분산시킬 수 있음. qntmt-a-i와 같은 라이브러리는 POSIX와 TAI 간의 변환을 지원함.

    • 윤초를 없애려는 노력이 진행 중이며, 2035년까지 완료되기를 희망함. 이는 "하루에 86,400초"라는 가정을 사용하는 모든 것에 변환 테이블을 구축하는 추가 작업이 필요하지만, 두 시간 사이의 초를 묻는 것이 더 간단해질 것임. 적어도 2035년 이후의 시간에 대해서는.

Hacker News 의견
  • "A Deepness in the Sky"라는 SF 책을 읽었음. 책에서 에포크 이후 초에 대한 언급이 흥미로웠음

    • Qeng Ho의 시간 측정 방법이 복잡했으며, 인간이 처음 달에 발을 디딘 순간부터 초를 세기 시작했음
    • 시작 순간은 실제로 약 1,500만 초 후였으며, 이는 초기 컴퓨터 운영 체제의 0초였음
  • 윤초를 없애려는 노력이 진행 중이며, 2035년까지 완료되기를 희망함

    • UTC의 목적은 TAI에서 정수 초만큼 떨어져 평균 태양 시간을 근사하는 것임
    • MST를 추적하지 않으려면 TAI로 전환해야 하며, UTC가 MST에서 벗어나면 역사적인 윤초가 의미가 없어짐
  • 현대 "UTC 에포크"는 1972년 1월 1일임

    • 1971년 말에 0.107758 TAI 초의 불규칙한 점프가 있었으며, 이후 UTC의 틱 속도가 TAI와 정확히 일치하도록 변경됨
    • 1970년과 1971년의 유닉스 시간은 실제로 그 기간의 UTC 시간과 일치하지 않음
  • 시간 측정에 대해 읽을 때마다 새로운 것을 배움

    • 유닉스 시간이 가장 간단한 시간 추적 방법이라고 생각했음
    • 윤초가 적용되지 않는다고 생각했지만, 충분히 생각하지 않았던 것 같음
  • 최근 VAX, 또는 OpenVMS 위에서 실행되는 코드에 대해 작업했으며, 에포크가 1858년 11월 17일인 것을 처음 봄

    • 코드에서는 유닉스 에포크로 추상화되어 있었음
  • 일부 시간 지점은 POSIX 타임스탬프로 표현할 수 없으며, 일부 POSIX 타임스탬프는 실제 시간과 일치하지 않음

  • 이 기사가 크리스마스를 망쳤다고 생각함

    • 초는 에포크 이후 초여야 하며, 태양일에서 벗어나도 상관없음
    • 초-에포크 변환기가 수정 작업을 담당해야 함
  • 데이터베이스에 날짜를 저장할 때 항상 유닉스 에포크 시간으로 저장하며, 시간대 정보는 별도로 저장함

    • TAI 형식으로 타임스탬프를 저장하고, 필요한 경우 UTC로 변환하는 것이 더 나을지 고민함
    • 시간대는 인간이 만든 개념이며, 시간이 지남에 따라 조정됨
    • 절대 시간을 기준으로 하고, 필요할 때 로컬 시간 형식으로 변환해야 함
  • 약 10년 전 컨퍼런스에서 Google이 윤초를 사용하지 않고, 이를 정규 초에 분산시킨다는 이야기를 들었음

    • Google은 NTP 서버를 수정하여 윤초를 분산시킴
  • 동기화되고 단조롭게 증가하는 시간 측정 방법이 있는지 궁금함