왜 유닉스 시간이 1970-01-01에 시작합니까?


답변:


28

나는 구글이 나를 위해 있었다는 것을 제외하고는 대답을 알지 못했을 것입니다 :

에서 여기 (무료 가입 필요) :

리눅스는 유닉스가 정한 "생일"(계산 용어로 "에포크 (epoch)") 이후 1970 년 1 월 1 일부터 시간을 초 단위로 세는 전통을 따르고있다.

보다 자세한 설명은이 유선 뉴스 기사를 참조하십시오 . 초기 유닉스 엔지니어들은 시작 날짜에 대해 균일 한 날짜를 설정해야했기 때문에 임의로 그 날짜를 선택했으며 1970 년 새해가 가장 편리해 보였습니다.


5

유닉스는 1970 년에 태어나지 않았습니다.

유닉스 시대는 1970 년 1 월 1 일 자정입니다. 이것이 유닉스의 "생일"이 아니라는 것을 기억하는 것이 중요 합니다. 운영 체제의 대략적인 버전은 1960 년대에있었습니다. 대신 벨 벨스 (Bell Labs)의 유닉스에서 일한 엔지니어 중 한 명인 데니스 리치 (Dennis Ritchie)에 따르면, 날짜는 70 년대 초반에 시스템에 프로그래밍되었다고한다.


그 이후로 편리해졌으며 그 이후로 전 세계 개발자에게 불편했습니다.
Chris Halcrow

3
@ChrisHalcrow : 당신이 dmr이라면 시간 0으로 무엇을 선택했을까요? 그리고 개발자에게 선택이 불편한 이유는 무엇입니까? 불편한 점은 "인간적인"용어 (년, 월, 일,시 / 분 / 초, 시간대, 일광 시간)로 측정하는 것이 복잡하기 때문에 일부 (임의의) $ t = 0 $ 순간이 선택 되었기 때문입니다.
NickD

@NickD, 설명을위한 좋은 프롬프트와 좋은 포인트! 그래도 일을 좀 더 쉽게 계산할 수 있다고 확신하므로 CE 0의 00:00:00을 선택합니다. 'dmr'이란 무엇입니까? 또한 아이러니하게도 OP가이 날짜를 선택한 이유에 대한 설명이 필요하다는 사실은 누군가가 기준 날짜로 01/01/70의 사용법을 이해하는 것이 본질적으로 혼란 스럽다는 것을 보여줍니다!
Chris Halcrow

2
@ChrisHalcrow : dmr = 데니스 리치. 선택한 출발지부터 오늘까지의 시간 (초)을 계산 했습니까? 몇 비트가 필요한가요? PDP-11에는 16 비트 레지스터와 워드가 있었지만 일부 연산에 대해 32 비트 레지스터와 더블 워드를 만들기 위해 두 개의 레지스터와 두 개의 워드를 그룹화 할 수있었습니다 . 그것은 당신에게 당신의 0 시간에서 +/- 68 년 (또는 당신의 시간이 서명되지 않은 경우 +136 년입니다-그러나 dmr은 서명을 선택했습니다). 그의 선택은 당신이 그것을 처음 볼 때 약간의 신비
일지 모르지만

1
@ NickD-좋은 설명! 이것은 받아 들일 수있는 답변의 일부 여야합니다-귀하의 의견을 거기로 옮기십시오. 여기에서 의견을 삭제할 수 있습니까?
Chris Halcrow

1

나는 질문을 좋아한다 :-)

대답을 시도하겠습니다 (물론 출처 : 인터넷)

Unix Time은 32 비트 정수 (정수)로 표시되며 양수 또는 음수 (서명)가 될 수 있습니다. Unix는 원래 60 년대와 70 년대에 개발되었으므로 Unix Time의 "시작"은 GMT (그리니치 표준시) 자정에 1970 년 1 월 1 일로 설정되었습니다.이 날짜 / 시간에는 Unix Time 값이 0으로 지정되었습니다. 유닉스 시대로.

32 비트 부호있는 정수는 -2147483648과 2147483647 사이의 정수를 나타낼 수 있습니다. Unix Time은 0에서 시작하므로 음의 Unix Time 값은 Epoch에서 시간이 지나고 양수는 시간이지나갑니다. 이는 Unix 시간이 1901 년 12 월 13 일 Unix 시간 값 -2147483648 또는 20:45:52 GMT에서 2038 년 1 월 19 일 Unix 시간 값 2147483647 또는 3:14:07 GMT까지임을 의미합니다.이 날짜는 시작을 나타냅니다. 역사와 유닉스 시간의 끝.

유닉스 타임은 2038 년 1 월 19 일 03:14:07 GMT에 끝납니다. 2038 년 1 월 19 일 03:14:08 GMT는 여전히 32 비트 Unix Time을 사용하는 모든 컴퓨터가 오버플로합니다. 이것을 "2038 년 문제"라고합니다. 일부는 이것이 "2000 년 문제"보다 더 중요한 문제라고 생각합니다. 2038 년 문제에 대한 해결책은 Unix Time을 64 비트 정수로 저장하는 것입니다. 이것은 대부분의 64 비트 운영 체제에서 이미 진행 중이지만 2038 년까지 많은 시스템이 업데이트되지 않을 수 있습니다.


5
이 중 단 한 단락 만이 실제로이 문제를 다루고 있으며 다소 부정확합니다 (신기원은 1971 년에 원래 있었지만 나중에 옮겨졌습니다)
Michael Mrozek


1
맞습니다 마이클. Wikipedia : Unix 시간의 가장 초기 버전은 초기 Unix 시스템의 하드웨어에서 시스템 클럭의 속도 인 60Hz의 속도로 32 비트 정수로 증가했습니다. 결과적으로 일부 소프트웨어 인터페이스에 60Hz 값이 계속 나타납니다. 신기원은 현재 가치와 달랐다. 1971 년 11 월 3 일자 제 1 판 유닉스 프로그래머 매뉴얼은 유닉스 시간을 "1971 년 1 월 1 일 00:00:00 이후의 시간으로, 1/6 초 단위로 측정 한 것"으로 정의합니다.
Nikhil Mulley

@ Nikhil 나는 1970 년 왜 유닉스가 개발 되었기 때문에 왜 1970 년을 얻지 못합니까? 왜 1960이 아닙니까? 아니면 다른 달 다른 날?
Templar

@ Nikhil 또는 정말 중요하지 않습니까? 첫 달 첫 날이 더 좋아 보이고 1971 년에 만들어 졌으므로 1970 년도 더 좋아 보일까요?
Templar
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.