2038년 문제 문서 원본 보기
←
2038년 문제
둘러보기로 이동
검색으로 이동
문서 편집 권한이 없습니다. 다음 이유를 확인해주세요:
요청한 명령은 다음 권한을 가진 사용자에게 제한됩니다:
사용자
.
문서의 원본을 보거나 복사할 수 있습니다.
{{위키데이터 속성 추적}} [[파일:Year 2038 problem.gif|300px|섬네일|2038년 1월 19일 03:14:07이 넘어가면 1901년 12월 13일 20:45:52초로 돌아간다.]] '''2038년 문제'''(2038年 問題, {{llang|en|year 2038 problem, Unix Millennium bug, Y2K38}})란 컴퓨터 분야에서 [[2038년]] 또는 전후에 특정한 컴퓨터 소프트웨어에 이상이 발생하는 문제를 말한다. 이 문제는 [[POSIX 시간]] 표기법을 이용하는 프로그램에서 발생하는데, 이 표기법은 시간을 [[1970년]] [[1월 1일]] 자정 [[UTC]] 이후 경과된 초 시간을 이용하여 표현한다. 이 표기법은 [[유닉스 계열]]의 운영 체제에서 표준이며, [[C (프로그래밍 언어)|C]]가 널리 이용되기 때문에 다른 대부분의 운영 체제에서 작동하는 프로그램에도 영향을 준다. 대부분의 32비트 시스템에서 초 시간을 저장하는 데 이용되는 <code>time_t</code> 자료 형식은 부호 있는 [[32비트]] [[정수형]]이다. POSIX 표준에 따르면, 이 형식을 이용하여 나타낼 수 있는 최후의 시각은 1970년 1월 1일 자정에서 [[2147483647]]초가 지난 [[2038년]] [[1월 19일]] [[화요일]] 03:14:07 [[UTC]]이다. 이 시각 이후의 시각은 범위를 초과하여 내부적으로 음수로 표현되며, 프로그램의 이상 작동을 유발하는데, 왜냐하면 이러한 값은 2038년 대신 프로그램의 구현 방법에 따라 1970년 또는 1901년을 가리키기 때문이다. 따라서 계산 오류와 결정 오류가 발생할 수 있다. == 해결책 == 현재의 [[중앙 처리 장치|CPU]]와 [[운영 체제|OS]] 조합에서 이 문제의 간단한 해결책은 없다. 표현 범위를 확장하려 32비트 대신 64비트를 이용하도록 <code>time_t</code>의 정의를 변경할 수 있지만, 이렇게 할 경우 소프트웨어, 저장 장치, 그리고 일반적으로는 시간의 이진 표현을 이용하는 모든 곳에서 바이너리 수준의 호환성에 이상이 생길 수 있다. <code>time_t</code>를 부호 없는 32비트 정수형으로 바꿀 경우 [[2106년]] [[2월 7일]] 06:28:15 UTC까지는 다룰 수 있게 되지만, 프로그램이 시간 차이를 다루거나 상대적인 시간을 표현할 때 음수를 다룰 수 없어 문제가 생긴다. [[64비트]] 아키텍처를 이용하는 대부분의 운영 체제는 이미 <code>time_t</code>에 64비트 정수를 이용하고 있다. 이미 이러한 아키텍처로의 이전이 진행 중이며, 많은 사람들은 이것이 2038년 전에 완료될 것으로 예상하고 있다. 하지만 2012년 기준으로 수억대의 32비트 시스템이 있으며, 많은 수가 [[임베디드 시스템]]에 내장되어 있는데, 이 모두가 2038년까지 교체될 수 있을지는 불분명하다. 또한 <code>time_t</code>는 [[ZIP]] 파일 포맷을 비롯한 많은 파일 포맷들에 사용되고 있다. 64비트 정수형 체제 하에서는 이 문제를 약 3000억 년 정도 연기시킬 수 있다. 만약 그때까지 [[그레고리력]]이 단 한번도 개정되지 않고 쓰이고 있다면, 정확히 2922억 7702만 6596년 12월 4일 일요일 15:30:08 UTC 이후의 시각을 다루려 할 때 문제가 발생한다.(이것은 당연히 [[UTC]]([[그리니치 표준시]]) 시간이다. 따라서 [[대한민국 표준시]]로는 UTC보다 9시간 빠르므로, 292277026596년 12월 5일 월요일 00시 30분 07초 까지는 안전하다. 물론, 당연히 128비트로는 이 문제를 약 500[[10000000000000000000000000000|양]]년(<math>5\times10^{30}</math>년) 정도 연기시킬 수 있다.)<ref>{{언어링크|en}} http://www.merlyn.demon.co.uk/critdate.htm#2038 {{웹아카이브|url=https://web.archive.org/web/20150907215822/http://www.merlyn.demon.co.uk/critdate.htm#2038}}</ref> 그러나 이는 [[태양]]의 수명보다 훨씬 긴 시간이기 때문에 지구상의 컴퓨터에서는 문제가 발생하지 않는다. == 알려진 문제 == [[2006년]] 5월에 발생한 [[:en:AOLServer|AOLserver]] [[소프트웨어]]의 문제는 최초로 나타난 2038년 문제의 예로 알려져 있다. 소프트웨어 설정에서 데이터베이스 연결의 지속 시간을 10억 초로 지정하여 ‘절대로 연결이 끊기지 않음’을 나타내는 경우가 있었는데, 2006년 5월 13일 01:27:28 [[UTC]]에서 10억 초 지난 시간은 <code>time_t</code>로 표시할 수 없었고, 따라서 이 시점부터 지속 시간이 과거의 시간으로 계산되어 소프트웨어에 문제를 일으켰다.<ref> {{언어링크|en}} [http://www.mail-archive.com/aolserver@listserv.aol.com/msg09812.html AOLServer 버그 관련 메일링 리스트 글타래].</ref> == 같이 보기 == * [[2000년 문제]] * [[2010년 문제]] * [[10000년 문제]] * [[10억 초 문제]] == 각주 == <references /> {{응용 프로그램 이진 인터페이스}} [[분류:리눅스]] [[분류:유닉스]] [[분류:운영체제 기술]] [[분류:소프트웨어 버그]] [[분류:2038년]] [[분류:미래 문제]]
이 문서에서 사용한 틀:
틀:Llang
(
원본 보기
)
틀:언어링크
(
원본 보기
)
틀:웹아카이브
(
원본 보기
)
틀:위키데이터 속성 추적
(
원본 보기
)
틀:응용 프로그램 이진 인터페이스
(
원본 보기
)
2038년 문제
문서로 돌아갑니다.
둘러보기 메뉴
개인 도구
로그인
이름공간
문서
토론
한국어
보기
읽기
원본 보기
역사 보기
더 보기
검색
둘러보기
대문
최근 바뀜
임의의 문서로
미디어위키 도움말
특수 문서 목록
도구
여기를 가리키는 문서
가리키는 글의 최근 바뀜
문서 정보