3年前に書いた記事を、再び一部修正して再投稿する。今から20年以上前、コンピュータの西暦2000年問題というものがあった。

20世紀後半、コンピュータがまだ生まれて間もない頃、メモリが小さい為にそれを節約する目的で、日付け表示をこうプログラミングしていた。


1995年4月20日の場合

年月日

yy-mm-dd

95-04-20


これが2000年になってしまうと、2000年を1900年と認識してしまうため、あちこちで交通機関やライフラインの停止、銀行ATMの異常動作など不具合が起きることが予想された。プログラム修正や手間がかかって大変だったことがあった。


以下のようにyyyyと西暦を示す箇所を修正

yyyy-mm-dd

1995-04-20


多少の混乱や不具合はあったものの、無事2000年を迎える事が出来て今日に至る。ところが2000年問題以上に深刻な2038年問題に関しては、ほとんど知られていないようだ。


・ところで2038年問題とは?

UNIXの32ビットOS、及びC言語の「time_t変数」が上限値(1970年1月1日0時UTCから数えて21億4748万3647秒を超えた値)に達した場合に発生する問題。


2038年1月19日03時14分7秒UTC

(日本時間で同日12時14分7秒。実際には閏秒もあるので、少し早いと思われる)


に桁溢れ起こす問題だ。64ビットOSの場合は全く心配ない。桁溢れまで2,900億年かかる。


2進法や32ビットの問題が、少々複雑なので理解されにくく問題を深刻化しているが、社会全般のコンピュータのうち、大半はUNIX系マシンでありプログラム言語はC言語が使われている。


これらで時刻はtime_tという言葉が使われているが、とある基準時から何秒経過したか❓という処理のされ方をしている。しかも機械なので二進法でカウントされる。


基準時間は

1970年1月1日00時00分00秒UTC

(日本時間で、同日09時00分00秒JST)


これは8ビットの場合、2進法で表すと、

0000  0000

0000  0001 1秒後


二進法の場合0と1で表記する。コンピュータは内部ではこの二進法で全て判断している。一番左側は数字として使えない。


一番左側以外全て"1"になったら桁溢れ

一番左側が"1"になったらアウト❗️

私はドボンと言っている。


①4bitの場合(架空)

2^(4-1)=8秒、つまりスタートから7秒後に桁あふれし、8秒後に"ドボン"だ。


0000  基準時からスタート

0001  1秒後

0010  2秒後

0011  3秒後

0100  4秒後

0101  5秒後

0110  6秒後

0111   7秒後▶︎桁あふれ

1000  8秒後▶︎ドボン❗️


② 同じく8bitの場合(架空)

2^(8-1)=128秒

0000 0000  スタート

0000 0001   1秒後

0000 0010   2秒後

0111 1110   126秒後

0111 1111   127秒後▶︎桁あふれ

1000 0000  128秒後にドボン


③ 16bitの場合(架空)

2^(16-1)=32,768秒後にドボン


④ 32bitの場合 現実の2038年問題

2^(32-1)=2,147,483,648秒

21億4748万3648秒後


つまり

68年18日3時間14分8秒後にドボン


2038年1月19日03時14分08秒UTC

(日本時間で同日12時14分08秒 JST)

となるはずが、

1901年12月13日20時45分52秒UTC

と表記される。


これが2038年問題だ。


この桁あふれを起こすと、一斉に時間が、1901年12月13日まで100年以上も逆戻りしてしまう。32ビットパソコンを試しにこの日付け直前にした人がいて、このXデーになった瞬間ハングアップし、OSが二度と立ち上がらなくなったという。


この問題が前回2000年より深刻なのは

① 2000年問題はアプリ部分の修正で済み、修正パッチで対応できたが、2038年のはOSやC言語の根幹部分の問題があり、修正パッチで済まない。OSそのものを32ビットから64ビット以上に取り替える必要あり。


② 前回は西暦2桁と4桁の違いでわかりやすい問題だったが、2038年のは二進法や32ビットなど、専門知識も必要でコンピュータのことを知らない人にはわかりにくい


③ 20年以上前に比べて、日付けデータの入ったコンピュータが激増していること。パソコンだけでなく、周りのスマホ、家電製品やゲーム機など日付けデータ入れてインターネットに接続しているもの、すごく多くないか❓


ただし、OSなら64ビット対応にすれば、日付けは2924億年間はこの問題は起きない。あとはプログラムのみ64ビットにしたり、基準時を1998年1月1日にずらすなど、色々やっているようだ。


Windowsは7以上の64ビット仕様なら、この問題は起きない。Macも同様に起きない。しかし、スマホのiPhoneは対応していないようである。


現行のiPhoneなら2038年1月1日までしか、日付け変更が出来ないでいる。この問題を回避する為だろう。今現在、世界中全てのiPhone、Androidは2038問題に未対応だ❗️


ただし、現在の最新機種のスマホやPCであっても、13年後も使っているとは考えられず、2030年代半ばには2038年対応済みの機種になると思われるが。


とはいえ、サーバのオープンソースなどには32ビットで動かしているものがかなりあって、今後も使い続けているのは予想でき、64ビットに更新するか先延ばしするようにアップデートしたり、対応が必要である。


ゲーム機を使っている場合。

問題はゲーム機の場合だ。

全てのゲーム機に対してだが、32ビット以下で尚且つ日付け設定のあるものは要注意である。2038年1月19以降は動かなくなる❗️


こちらを参照して欲しい。

https://8vivid.net/game-console-cpu-bit/


32ビット以下で日付設定のあるゲーム機↓

セガサターン、ドリームキャスト、Wii、WiiU、XBOX、携帯ゲーム機ならPSP、VITA、Nintendo3DSなどがそれに該当する。


そのまま日付けしていたら、あと13年しか動かせないので、日付け設定を昔にしたりする、ネットワークに接続しないことで延命出来ると思う。


・こぼれ話し…2038までの日付基準点

① 1970年1月1日

② 1987年1月5日

③ 2004年1月10日

④ 2021年1月14日

⑤ 2038年1月19日


この中で、①はスタートの基準日。


②の1987年は全体の1/4が経過した日付だ。


③の2004年1月10日は、ちょうど中間地点になる。実は私はこの当時のことを覚えていて、「あと数日で、2038年のあの日までの中間点じゃないか❓」と気がついた。


案の定、あちこちのシステムで不具合が発生した。基準の中間点なので、長期契約のデータなどで計算の不具合が発生したのだ。


以下は2021年に書いた文章↓

さて④の2021年1月14日であるが、これはつい先月だった。だからこのネタをブログに書こうと思った。先月14日はちょうど3/4が経過した日付であり、残りがあと17年いや、16年10ヶ月である。16年って長い?短い?なんかあっという間に来るだろう。その時の私は69歳。月末には70歳になる。


・17年ゼミと全く同じ周期

偶然だが、上記の①〜⑤はちょうど17年周期だが、米国東海岸で17年周期で大発生する17年ゼミの発生年と全く一致している。


・私の人生の転換期

上記の①〜⑤、特に②、③、④だが私にとって転換期に当たっている。④は先月。つまり今だということである。全くの偶然だろう。


⬇︎下のクリックもお願いします。
 
毒舌日記ランキング毒舌日記ランキング

にほんブログ村 オヤジ日記ブログへにほんブログ村