맨위로가기

10억 초 문제

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

10억 초 문제는 1970년 이후의 초 수를 나타내는 숫자가 10자리가 되면서 발생할 수 있는 문제이다. 2000년 문제와 유사하게 사회적 관심이 있었지만, 언론 보도는 미미했다. 개별 프로그램에서 실제로 문제가 발생했으며, 야후! 게시판, CVSup, 윈도우 ME 시스템 복원 기능 등에서 확인되었다. 문제의 주요 원인은 1970년 이후의 초 수를 문자열로 변환하여 정렬하는 과정에서 발생하며, 문자열 정렬 시 "1000000000"이 "999999999"보다 작은 값으로 취급되어 항목 정렬 오류가 발생하기 때문이다. UNIX의 ls 명령어, Perl의 sort 명령어 등에서 문자열 정렬이 기본값으로 설정되어 있어, 프로그래머들이 1973년 이후 약 30년간 초 수가 9자리였던 점을 간과하여 문제를 일으키는 경우가 있었다.

더 읽어볼만한 페이지

  • 2001년 컴퓨팅 - 님다
    2001년에 발견된 님다는 전자 우편, 네트워크 공유, 감염된 웹사이트, IIS 서버 취약점, 백도어 등 다양한 경로를 통해 빠르게 확산된 강력한 컴퓨터 웜으로, 이메일 읽기만으로도 감염될 수 있고 발신자 주소 위장이 가능하여 피해를 키웠다.
  • 2001년 컴퓨팅 - 코드 레드 (컴퓨터 웜)
    코드 레드는 2001년 여름에 전 세계적으로 확산된 컴퓨터 웜으로, 마이크로소프트 IIS 웹 서버의 취약점을 이용해 스스로를 복제하고 특정 메시지 표시 및 서비스 거부 공격을 수행하는 특징을 가진다.
  • 2001년 9월 - 2001년 지중해 게임
    2001년 9월 2일부터 15일까지 튀니지 튀니스에서 23개국이 참가한 제14회 지중해 게임이 개최되어 프랑스가 종합 1위를 차지했다.
  • 2001년 9월 - 가부키초 빌딩 화재
    가부키초 빌딩 화재는 2001년 9월 1일 도쿄 신주쿠 가부키초의 한 건물에서 발생하여 44명이 사망하고 3명이 부상당한 대형 화재 사고이며, 유독 가스로 인한 일산화탄소 중독이 사망의 주요 원인이었고, 일본 소방법 개정의 계기가 되었다.
  • 소프트웨어 버그 - 교착 상태
    교착 상태는 둘 이상의 프로세스가 자원을 점유하고 서로의 자원을 요청하여 더 이상 진행할 수 없는 상태를 의미하며, 상호 배제, 점유 대기, 비선점, 순환 대기 네 가지 조건이 모두 충족되어야 발생하고, 운영 체제는 이를 예방, 회피, 무시, 발견하는 방법으로 관리한다.
  • 소프트웨어 버그 - 글리치
    글리치는 예기치 않은 오작동이나 오류를 뜻하며, 전자 공학, 컴퓨터, 비디오 게임, 텔레비전 방송, 대중문화 등 다양한 분야에서 기능 실패, 오류, 그래픽 및 사운드 문제, 신호 오류 등의 이상 현상을 포괄적으로 지칭하는 용어이다.
10억 초 문제

2. 실태

2000년 문제가 큰 사회적 화제로 다루어졌던 탓에, 많은 기업이 2001년 9월 9일 문제 대응에 관한 페이지를 만들었지만, 언론은 거의 이 문제를 다루지 않았다. 또한 한편으로는 "초 수를 10진수 9자리를 상한으로 하는 프로그램을 짤 일은 없다", "문제는 일어나지 않을 것이다"라는 기술자의 의견도 있었다.

하지만 개별 프로그램 수준에서는 실제로 문제가 발생했다. 확인된 예는 다음과 같다.



2ch.net의 스레드 ID에도 이 값이 사용되었지만 문제는 일어나지 않았다 (사전에 테스트되었다).

이러한 원인의 대부분은 1970년부터의 초 수를 문자열 표현으로 변환하여 정렬한 데 있었다. 문자열 (사전순)로 정렬하면 "1000000000(10자리)" < "999999999(9자리)"가 되어 항목이 올바른 순서로 정렬되지 않는다. 이로 인해 새로 만들어진 항목이 목록에 표시되지 않거나, 소정의 동작이 수행되지 않거나, 오래된 항목으로 오인되어 삭제되는 등의 문제가 발생한다.

UNIX의 ls 명령어는 파일명이 숫자여도 문자열로 간주하여 정렬한다. 또한 CGI 프로그래밍에서 널리 사용되는 Perl도 sort 명령어는 "숫자를 문자열로 변환한 후 정렬"하는 것이 기본값이다.

이처럼 문자열 정렬이 기본값으로 설정되어 있는 데다가, 1970년 이후의 초 수가 9자리가 된 것은 1973년3월 3일 9시 46분 40초 (1970년으로부터 약 3년 후)로 꽤 오래되었던 것도 프로그래머가 방심하는 요인 중 하나가 되었다. 현재 작동하는 대부분의 프로그램은 1973년 이후에 만들어졌으며, 지난 약 30년간 초 수가 9자리였기 때문에, 부주의하게 문자열로 정렬해도 문제가 일어나지 않았던 것이다.

참조

[1] 기사 10億秒 https://srad.jp/stor[...] 2001-09-08
[2] 웹사이트 2001 年 9 月 8 日よりも後の復元ポイントが利用できない http://support.micro[...] Microsoft 2018-10-27
[3] 웹사이트 システムの復元(Windows Me)で 2001年 9月 8日よりも後の復元ポイントが利用できない問題について - 121ware.com(NEC) http://121ware.com/q[...] 2016-03-05
[4] 웹인용 UNIX Approaches Ripe Old Age of One Billion http://www.electroma[...] Electromagnetic.net null
[5] 웹인용 The Risks Digest Volume 21: Issue 69 http://catless.ncl.a[...] Catless.ncl.ac.uk null
[6] 웹인용 Unix time facts & trivia – Unix Time . Info http://unixtime.info[...] 2013-05-11



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com