【※ 当記事は2020年7月2日時点の情報です】
ペイヴメント(@pavement1234)です。
いまさらですがUNIX時間における2038年問題について知りたい。
こんな悩みを解決します。
UNIX時間とは?
UNIX時間(Wikipedia)を読んでみました。
UNIX時間(ユニックスじかん)またはUNIX時刻(ユニックスじこく、UNIX time(ユニックスタイム)、POSIX time(ポジックスタイム))とはコンピューターシステム上での時刻表現の一種。UNIXエポック、すなわち協定世界時 (UTC) での1970年1月1日午前0時0分0秒から形式的な経過秒数(すなわち、実質的な経過秒数から、その間に挿入された閏秒を引き、削除された閏秒を加えたもの)として表される。GPS時刻などとは異なり、大多数のシステムでは、本当の経過秒数を表すものではない。 UNIX系のオペレーティングシステム(データ型はtime_t)だけでなく、他の多くのオペレーティングシステムにおいてもこの表現方法が用いられている。システム内部では32ビットまたは64ビットの符号付整数 (signed int) で扱われていることが普通である。ここで、以前は多かった32ビットで扱われている場合で、符号付きであった場合、その最大値 2,147,483,647 を超えると負の値になり、正しく時刻を扱えなくなるという問題がある。これを2038年問題という。
2038年に発生すると言われている問題です。今2019年なのであと19弱年しか残されていません。
2038年問題とは
2025年問題の次は2038年問題!コンピュータの暦問題を探る(後編)を読んでみました。カンタンに言うと32ビットOSは2038年問題を乗り切れないということに尽きます。
ちょっと細かく言うと、コンピュータの時間はUTC(世界協定時)の1970年1月1日0時0分からの経過秒数でカウントしていますが、32ビット(符号あり、signed)の最大値である2,147,483,648秒が最大値。つまり1970年1月1日0時0分から2,147,483,648秒後の2038年1月19日3時14分7秒(日本時間では2038年1月19日12時14分7秒)にオーバーフローし、1秒後に1901年12月13日20時45分52秒に戻ってしまうそう。
これが、64ビットになると西暦3000億年まで行けるそうなので、当面先送りにできるというわけです。
まとめ
2038年に32ビットCPUのパソコンは殆ど消滅していると思うのですが、怖いのはIoTデバイス。中途半端に組み込まれた低スペックのマイコンたちが、RTCとかで時間管理しちゃってると、ヤバいですね。きっと2038年IoTデバイス問題はいつか騒ぎになると思うし、それを飯のタネにする人も出てくるだろうとも思います。しかし、車とか飛行機の奥深くに32ビットマイコンが隠れてて誤動作しちゃう、みたいなのが怖い。2038年問題はメーカー責任で早めに対策される(直せないなら回収するとか)ことを祈ります。
ITスキルを身につけると条件の良い転職が可能になる
ITスキルを身につけると条件の良い転職が可能になります。当ブログがそのキッカケになったら幸いです。