본문 바로가기

유머

2038년 문제

위키피디아에 올라온 재미있는? 문제


프로그래밍을 하다보면


구조체 라던가 변수 라던가 하는 이야기를 할 터


이해를 했다면 이 문제가 왜 생기는지 이해할 수 있다.


아래는 전문.


2038년 문제(-年 問題, 영어: year 2038 problem, Unix Millennium bug, Y2K38)란 컴퓨터 분야에서 2038년 또는 전후에 특정한 컴퓨터 소프트웨어에 이상이 발생하는 문제를 말한다. 이 문제는 POSIX 시간 표기법을 이용하는 프로그램에서 발생하는데, 이 표기법은 시간을 1970년 1월 1일 자정 UTC 이후 경과된 초 시간을 이용하여 표현한다. 이 표기법은 유닉스 계열의 운영 체제에서 표준이며, C가 널리 이용되기 때문에 다른 대부분의 운영 체제에서 작동하는 프로그램에도 영향을 준다. 대부분의 32비트 시스템에서 초 시간을 저장하는 데 이용되는 time_t 자료 형식은 부호 있는 32비트 정수형이다. POSIX 표준에 따르면, 이 형식을 이용하여 나타낼 수 있는 최후의 시각은 1970년 1월 1일 자정에서 정확히 2147483647초가 지난 2038년 1월 19일 화요일 03:14:07 UTC이다. 이 시각 이후의 시각은 범위를 초과하여 내부적으로 음수로 표현되며, 프로그램의 이상 작동을 유발하는데, 왜냐하면 이러한 값은 2038년 대신 프로그램의 구현 방법에 따라 1970년 또는 1901년을 가리키기 때문이다. 따라서 계산 오류와 결정 오류가 발생할 수 있다.



아래는 전문.


즉 저 날이 되면 time_t 자료 형식을 사용한 모든 프로그램이


2038년이 아닌 1970년이나 1901년을 가리키게 되는 것.


예전에 있던 밀레니엄 버그 와 현상은 같다고 보면 된다.


뭐 아직 26년이나 남았으니까.. 그 사이에 하드웨어는 엄청 발전할테고


그러다보면 좀 더 큰 정수형을 사용하게 되어 별 무리 없이 이 문제가 해결 될 것 같지만....


그리 사용되지 않고 계속 써온 time_t를 사용할 경우에는 막상 닥치면 엄청난 비용을 들여서 저 문제를 해결해야 할듯.