it-swarm-ko.tech

2038 년 문제

2038 년호 매우 문제가 될 가능성은 무엇입니까?

28
8128

일부 장기 암호화 인증서에서 2038 년 이후의 날짜를 처리해야하는 임베디드 Linux 시스템에서이 문제가 발생했습니다. 따라서 그 가능성은 애플리케이션 도메인에 따라 다릅니다.

대부분의 시스템은 2038 년 이전에 준비되어 있어야하지만, 오늘 날짜를 먼 미래로 계산하는 경우 문제가있을 수 있습니다.

17
Alex B

영향을받는 코드는 일반적으로 낮은 수준 (CTIME)이므로 시간이 저장되는 장소를 찾아 내기가 더 어렵 기 때문에 1999/2000 년의 Y2K 문제보다 훨씬 더 위험한 심각한 문제가 될 것이라고 생각합니다.

문제를 더욱 복잡하게하기 위해, Y2K가 습한 스쿼 브로 인식되었다는 사실은 이벤트 런업에서 문제에주의를 끌기 어렵게 만듭니다.

문화적 참조 :

Cory Doctorow는 오픈 라이선스로 단편 소설 커미셔닝/출판을위한 새로운 모델을 시도하고 있었고 그중 하나에 2038 년 주제를 제안했는데, 그는 Epoch에서 훌륭하게 수행했습니다. http://craphound.com/?p = 2337

13
Mark Shuttleworth

몇 년 전에 이미 30 년 대출을 계산하는 모기지 프로그램과 같은 영역에서 문제가보고되었습니다 : 2008 + 30 = 2038.

9
Warren Young

이것은 내 의견이지만이 문제는 32 비트 카운터 문제로 인한 것입니다. 오늘날 대부분의 OS는 64 비트 (적어도 64 비트 컴퓨터)에서 시간을 처리하도록 업데이트되므로 모든 OS와 소프트웨어가 오래 준비 될 것입니다 2038 년 이전에 2020 년이라고합시다. 따라서 2038 년에도 2020 년부터 소프트웨어를 계속 실행할 경우에만 문제가 발생할 수 있습니다.
거의 모든 경우에 문제가되지 않습니다. 나는 희망.

8
radius

64 비트 OS는 궁극적으로 2037 문제와 관련이 없습니다. (CTIME은 2038 년보다 2037 년에 가깝습니다.).

문제는 OS의 비트 깊이가 아니라 OS가 시간을 어떻게 저장하는지입니다. 또는 데이터베이스 열이 시간 저장을 어떻게 선택합니까? 또는이 디렉토리 서비스 시간 구문 속성은 백엔드에 시간을 어떻게 저장합니까?.

이것은 사람들이 생각하는 것보다 훨씬 더 큰 문제입니다. 32 비트 시간 카운터를 사용하는 것은 매우 고유하고 일반적이기 때문입니다.

시간을 저장하는 각 인스턴스를 다시 방문하고 모든 API를 업데이트해야하며이를 사용하는 모든 도구도 업데이트해야합니다.

작성되는 원시 데이터 대신 사람이 읽을 수있는 시간 형식을 통해 시간을 설정할 수있는 추상화 계층을 사용하면 더 쉽게 시간을 설정할 수 있지만 이는 한 가지 경우에 불과합니다.

나는 이것이 대부분의 사람들이 생각하는 것보다 훨씬 더 큰 거래가 될 것이라고 생각합니다.

8
geoffc

그렇게 큰 문제는 아닙니다.

소프트웨어 및 하드웨어 공급 업체가 판매를 위해 제품을 "Y2K 준수"로 인증해야하는 첫 번째 Y2K 블리츠 동안 (PC Connection의 네트워크 케이블이 Y2K 준수로 인증 된 것을 기억합니다) 많은 회사가 모든 것에 대해 자세한 감사를 수행했습니다. , 미래의 시계를 설정하고 테스트합니다.

당시 테스트 비용이 너무 높았 기 때문에 거의 항상 1/1/99 (일부 개발자는 99를 센티널로 사용했을 수 있음), 12/31/99, 1/1 /과 같은 여러 날짜로 테스트했습니다. 00, 2000 년의 도약, 1/19/38 및 기타 다수. 지루한 목록은 여기 를 참조하십시오.

따라서 1999 년에 있었던 중요한 소프트웨어에는 2038 개의 버그가 없을 것이지만 그 이후로 무지한 프로그래머가 작성한 새로운 소프트웨어는있을 수 있다고 생각합니다. 전체 Y2K debacle 프로그래머는 일반적으로 날짜 인코딩 문제를 훨씬 더 많이 인식하게되었으므로 Y2K만큼 큰 영향을 미치지 않을 것입니다 (그 자체로는 반 절정이었습니다).

1
Joel Spolsky

그때까지 여전히 실행중인 32 비트 시스템은 문제가 될 것입니다.

1
user55149
#include <time.h>
#include <stdio.h>

int main() {
  time_t t = (time_t)(1L << (sizeof(time_t)*8 - 9));
  printf("%d\n", sizeof(time_t));
}

9 대신 1이어야하지만 ctime은 더 큰 날짜를 처리하지 않습니다.

8 - Sun Jun 13 07:26:08 1141709097

내 시스템 (물론 64 비트) 시간은 100 만년 이상 더 실행될 수 있습니다. 해결책은 시스템을 64 비트로 업데이트하는 것입니다.

문제는 프로그램이이를 처리하지 못할 수도 있다는 것입니다. 특히 오래되고 재산이며 유지되지 않습니다. 개발자는 사실을 따르는 데 익숙합니다.

  • int는 32 비트입니다 (실제로 항상 32 비트라고 가정했기 때문에 64 비트 시스템에서 32 비트로 보존됩니다)
  • 대부분의 유형 (예 : time_t) int에서 안전하게 캐스팅 할 수 있습니다.

널리 사용되는 FLOSS 소프트웨어에서는 두 가지 모두 '많은 눈'검토를 거치지 않을 것입니다. 덜 인기 있고 재산에 대해서는 저자에 크게 의존합니다.

나는 자유 * nix 세계에서 2038이 '알려지지 않을'것이라고 생각하지만 "독점적"플랫폼 (즉, 많은 수의 재산 소프트웨어를 가진 플랫폼)에서 문제를 예상하는 반면-특히 중요한 부분의 일부가 유지되지 않을 경우.

0
Maciej Piechotka

Y2K와 같은 경우 일부 사람들은 이미 영향을 받아 소프트웨어를 변경하고 있지만 대부분의 개발자는 2030 년대, 아마도 2035 년 정도까지 무시할 것입니다. K & R C를 알면서도 아직 노년이 아니라면 갑자기 많은 돈을 받고 계약 할 수있게 될 것입니다. 실제 전환은 아직 완료되지 않은 많은 작업을 보여줄 것이며 아마도 그다지 중요하지 않을 것입니다.

0
David Thornley