所謂“千年蟲”,是指人類在2000年1月1日將遭遇由于時(shí)間錯(cuò)誤而大面積計(jì)算機(jī)故障的Bug 。在32位的Unix系統(tǒng)上,這個(gè)Bug還會(huì)再出現(xiàn)一次,具體時(shí)間將在2038年。
這是因?yàn)樵缙谟?jì)算機(jī)都是以 6 位數(shù)來存儲(chǔ)時(shí)間信息,即年、月、日各占兩位。到了二十世紀(jì)末,人們發(fā)現(xiàn)這種日期方法將導(dǎo)致計(jì)算機(jī)錯(cuò)誤地將2000年識(shí)別為1900年,導(dǎo)致大規(guī)模計(jì)算機(jī)故障。
這個(gè)問題在當(dāng)時(shí)得到了足夠的重視,但在一些以Unix 為系統(tǒng)的服務(wù)器、包括以Unix 為底層的系統(tǒng)上,還有一些小小的缺陷。
1970 年初,第一批互聯(lián)網(wǎng)設(shè)備開始出現(xiàn),人們急需一種統(tǒng)一時(shí)間,同步互聯(lián)網(wǎng)中的每一個(gè)設(shè)備。當(dāng)時(shí)電氣和電子工程師協(xié)會(huì)(IEEE)成立了一個(gè)委員會(huì),從 1970 年1月1日(UTC/GMT 的午夜)開始,用秒數(shù)計(jì)量時(shí)間,如果在Mac中打開終端,輸入“date +%s ”,就可查看到一串時(shí)間,這就是1970 年1月1日 0:00 到當(dāng)前時(shí)間的秒數(shù)。在32 位系統(tǒng)中,這是數(shù)字最大為 2,147,483,483,647 ,對(duì)應(yīng)的時(shí)間為 2038年1月19日凌晨 3 點(diǎn) 14 分。一旦超過了這個(gè)時(shí)間,在32 位的 Unix 系統(tǒng)中,時(shí)間就會(huì)回到1970 年。
幸運(yùn)的是,這個(gè)問題只在32 位系統(tǒng)中才會(huì)出現(xiàn),如果換成64 位系統(tǒng),最大時(shí)間將延長到9,223,372,036,854,775,807 ,相當(dāng)于2923 億年,對(duì)人類來說幾乎相當(dāng)于無限時(shí)間了。
雖然目前主流的電腦和智能手機(jī)都已經(jīng)邁向了64 位操作系統(tǒng),但在此之外還有其他設(shè)備底層采用了 Unix 系統(tǒng),例如某些洗衣機(jī)、智能臺(tái)燈、智能空調(diào)等,這些設(shè)備同樣會(huì)遇到這“千年蟲”問題 。
好在這些智能家具很可能沒有那么長的壽命,在遭遇“千年蟲”問題之前,它們可能就已經(jīng)壽終正寢了。
電腦知識(shí)與技術(shù)·經(jīng)驗(yàn)技巧2020年3期