なぜUnixの時間は1970-01-01から始まりますか?なぜ1971-01-01または他の日付ではないのですか?
答え1
答え2
Unixは1970年に誕生しませんでした。
~からWired - Unixが10億ティックを記録しました。:
Unix時代は1970年1月1日深夜だ。今日はUnixの「誕生日」ではないことを覚えておくことが重要です。- オペレーティングシステムのおおよそのバージョンは1960年代ごろに登場しました。代わりにBell Labsを設立したDennis Ritchieによると、1970年代初めに日付がシステムにプログラムされるのはただ便利だったからです。 Unixの作業を行った最初のエンジニアの一人です。
答え3
私はこの質問が好きです:-)
答えてみましょう。 (もちろんソース:インターネット)
Unix時間は32ビット整数(整数)で表され、正または負(符号付き)のいずれかです。 Unixはもともと1960年代と1970年代に開発されたので、Unix時間の「スタート」は1970年1月1日深夜GMT(グリニッジ標準時)に設定されました。その日付/時刻にはUnix時刻値0が割り当てられています。これをUNIX時代といいます。
32ビット符号付き整数は、-2147483648から2147483647の間の整数を表すことができます。 Unix 時間は 0 から始まるので、負の Unix 時間の値は epoch で時間が逆になり、正の数は時間が前に行きます。つまり、Unix 時間範囲の範囲は、1901 年 12 月 13 日の Unix 時間値 -2147483648 または 20:45:52 GMT から 2038 年 1 月 19 日の Unix 時間値 -2147483647 または 3:14:07 GMT までです。この日付は、Unix時間の始まり、先史時代、終わりを表します。
Unix時間は2038年1月19日03:14:07 GMTで終了します。 2038年1月19日03:14:08 GMTで32ビットUnix時間を使用しているすべてのコンピュータでオーバーフローが発生します。いわゆる「2038年問題」だ。一部の人々は、これが「2000年問題」よりも大きな問題になると信じています。 2038年の問題に対する解決策は、Unix時間を64ビット整数として保存することです。ほとんどの64ビットオペレーティングシステムはすでにこの作業を開始していますが、多くのシステムは2038年以前に更新されない可能性があります。
答え4
引用する私の答えSE.レトロコンピューティングでは、なぜUNIX時代は1970年1月1日なのか?:
これJdeBPのコメント私の関心を呼び起こしました。
シェン! Dennis Ritchieは、Poul-Henning Kemp、Warren Toomey、およびWIREDのためにこれを文書化しました。 Warner Loshもこれについて報告しました。 DMRが実際に人々にこれについて話したことを知っています。
だからここにありますデニス・リッチこれに対するコメントと彼が言及したオーバーフローの簡単な説明です。
~からWired - Unixが10億ティックを記録しました。、
Unix時代は1970年1月1日深夜だ。これはUnixの「誕生日」ではないことを覚えておくことが重要です。オペレーティングシステムのおおよそのバージョンは1960年代頃に作成されました。代わりに、Dennis Ritchieによると、日付はただ便利だったので、1970年代初頭にシステムにプログラムされました。 Dennis Ritchieは当初、Bell LabsでUnixを研究していたエンジニアの一人でした。
」当時はテープもなく、複数のファイルシステムを運営しており、継続して時間の根源を変えていた」と話した。 「だから結局私たちは「時間が経ってもあふれないことを選ぼう」と言いました。しかし。 1970年はいつものように良い年だったようです。」
1年は約3,200万秒で、10億秒が過ぎるのに約31年かかるという意味だ。明らかに、今年の初め、数学のオタクたちは、2001年が1970年以来31年であることを発見しました。しました。
他にもさらに歴史的な内容がありますが、ワーナー・ロチェ電子メールに記載されている、Re: [TUHS] 2038 バグ...、2021年1月4日:
私の理解では、1970年1月1日から、少なくともEd6ではなくてもEd5からということです。
4版からそうだった。
第3版では1972年以降60Hzティック数であり、「これは2.26年ごとに危機を保証します」というフレーズが書かれています。
時代を基準にするのは...難しいでしょう...多くの数学が1970年の起源を想定しており、一貫した分析を通してもすべてが明確ではありません。
あまり醜いのは、time_tを署名されているのではなく署名されていないと宣言することです。 。プログラムはすべてtime_tが32ビットであることを知っています。
ワーナー