2038년 문제는 무엇입니까?

Apr 01 2000
다행히 2038년 문제는 메인프레임에서 Y2K보다 수정하기가 다소 쉽습니다. 표준 시간 라이브러리에 대해 알아보고 C 프로그래밍이 이 컴퓨터 실수와 관련되는 방법을 알아보세요.

2000 년 문제 때문에 수신 언론의 관심의 많은 양의 요즘 대부분의 사람들이 이해된다.

C 프로그래밍 언어로 작성된 대부분의 프로그램 은 Y2K 문제에 상대적으로 영향을 받지 않지만 대신 2038년 문제로 인해 어려움을 겪습니다 . 이 문제는 대부분의 C 프로그램이 표준 시간 라이브러리 라고 하는 루틴 라이브러리를 사용하기 때문에 발생 합니다 . 이 라이브러리는 시간 값 저장을 위한 표준 4바이트 형식을 설정하고 시간 값을 변환, 표시 및 계산하기 위한 여러 기능도 제공합니다.

표준 4 바이트 형식 의 시작한다고 가정 시간이 12:00:00이 값은 초 수가 0 값 것으로 다음과 같은 시간 / 날짜 값이 표현 0입니다 오전 1970 년 1 월 1 일이다. 따라서 값 919642718은 1970년 1월 1일 오전 12시, 즉 1999년 2월 21일 일요일 16:18:38( 태평양 표준시 ) 이후 919,642,718초 입니다. 이것은 두 값을 빼면 두 값 사이의 시간 차이인 초 단위가 되기 때문에 편리한 형식입니다. 그런 다음 라이브러리의 다른 기능을 사용하여 두 시간 사이에 몇 분/시/일/월/년이 경과했는지 확인할 수 있습니다.

How Bits and Bytes Work 을 읽었다면 부호 있는 4바이트 정수의 최대값이 2,147,483,647이라는 것을 알 수 있습니다. 여기에서 2038년 문제가 발생합니다. 시간의 최대 값 은이 날짜에 1 월 19 일 2038로 변환하는 음성 (무효) 값은 2,147,483,647입니다,로 롤오버하기 전에, 시작 표준 시간 라이브러리를 사용하는 C 프로그램은 날짜 계산에 문제가있을 수 있습니다.

다행히도 이 문제는 메인프레임의 Y2K 문제보다 해결하기가 더 쉽습니다. 잘 작성된 프로그램은 예를 들어 저장 형식에 8바이트 값을 사용하는 새 버전의 라이브러리로 간단히 다시 컴파일할 수 있습니다. 이는 라이브러리가 자체 시간 유형 및 기능으로 전체 시간 활동을 캡슐화하기 때문에 가능합니다(날짜 형식이나 계산을 표준화하지 않은 대부분의 메인프레임 프로그램과 달리). 따라서 2038년 문제는 Y2K 문제만큼 수정하기 어렵지 않아야 합니다.

다음은 흥미로운 링크입니다.

  • 2000년 문제의 작동 원리
  • C 프로그래밍 작동 방식
  • 비트 및 바이트 작동 방식
  • 운영 체제 작동 방식

경고 독자는 친절하게도 IBM PC 하드웨어가 2116년 문제로 어려움을 겪고 있다고 지적했습니다. A의 PC , 시간의 시작은 UNIX 시간 유사한 방식으로 부호없는 32 비트 정수 (초) 1 월 (1) 1980 년 및 단위에서 시작됩니다. 2116년이 되면 정수가 오버플로됩니다.

Windows NT는 64비트 정수를 사용하여 시간을 추적합니다. 그러나 100나노초를 증분으로 사용하고 시간의 시작이 1601년 1월 1일이므로 NT는 2184년 문제를 겪고 있습니다.

에 이 페이지 , 애플은 맥 년 29,940 괜찮아 밖으로이라고 주장한다!