歡迎您光臨本站 註冊首頁

Linux Kernel 5.6 開發者已準備好應對 2038 年問題

←手機掃碼閱讀     admin @ 2020-02-01 , reply:0

新十年伊始,Linux Kernel 5.6 的開發者已經準備好著手解決將在下一個十年到來的 2038 年問題(又稱 「Y2038」 或 「Unix Y2K」 問題)。Linux 5.6 也成為第一個為 32 位系統準備運行到 2038 年之後的主線內核。

2038 年問題與千年蟲問題類似,它可能會導致某些軟體在 2038 年 1 月 19 日 3 時 14 分 07 秒之後無法正常工作。屆時,在大部分 32 位操作系統上,依據 「time_t」 標準,時間將會「繞回」且在內部被表示為一個負數,並造成程序無法工作,因為它們無法識別 2038 年,而可能會跳回 1970 年或 1901 年。

現階段,還沒有針對 2038 年問題的通用解決方案。Linux 5.6 已率先做好準備,並極有可能反向移植到 5.4/5.5 穩定分支。

在 Linux 開發人員 Arnd Bergmann 寄給 Linus Torvalds 的郵件中,他提到,Linux Kernel 5.6 應該作為基礎,使 32 位系統能夠運行到 2038 年以後。他提出的 PR 包括對 time_t 的更改,即更改存儲秒數(帶符號的 32 位整數)。

Bergmann 表示,「我再次遍歷了 time_t 的所有用戶,以確保內核處於長期可維護的狀態,用安全的替代方法替換了對 time_t 的所有剩餘引用。該系列的一些相關部分被引入 nfsd,xfs,alsa 和 v4l2 樹中。在 linux-mm 的五個分支全部合併之後,linux-mm 中的最後一組補丁將刪除當前未使用的 time_t / timeval / timespec 類型和輔助函數,以確保沒有新用戶被合併。」

由於 2038 年問題,Unix 時間戳將在 2038 年 1 月 19 日溢出,因為它無法存儲帶符號的 32 位整數,並且將限制更新 32 位系統。為了避免這一問題,根據 Bergmann 的說法,用戶空間應用程序需要使用現代 Linux 內核系統調用,並且需要使用 GNU C Library 2.32 和 Musl libc 1.2 針對 64 位 time_t 構建用戶空間。

最後,他還提到,64 位計算機上出現的所有 y2038 問題也適用於 32 位計算機。

消息來源:fossbytes


[admin ]

來源:OsChina
連結:https://www.oschina.net/news/113086/linux-5-6-32-bit-past-y2038
Linux Kernel 5.6 開發者已準備好應對 2038 年問題已經有239次圍觀

http://coctec.com/news/soft/show-post-224252.html