Linux Kernel 5.6 开发者已准备好应对 2038 年问题

xplanet
 xplanet
发布于 2020年02月01日
收藏 10

新十年伊始,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

本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创开源社区。
转载请注明:文章转载自 OSCHINA 社区 [http://www.oschina.net]
本文标题:Linux Kernel 5.6 开发者已准备好应对 2038 年问题
加载中

精彩评论

低调的前行
如果是嵌入式电子设备还是有可能的
低调的前行
我也觉得2038年不应该还有服务器还使用32位机器吧,还有18年。
往前推18年,2002使用的电脑和现在相比,还有在用的吗

最新评论(12

知足2020
路过
-BlueSky-
-BlueSky-
2038年也不一定还有linux吧
StevenDisonTangor
StevenDisonTangor
Android不也是32位,ios8以上都是64位。
手握华为赛神仙
手握华为赛神仙
早就是64位了
Gaoy9303
Gaoy9303
嵌入式的问题,应该出现这个问题的可能性很大
zhuzhu0330
zhuzhu0330
请问是UTC,还是CST?
y
yh2216
Utc只有时间(时分秒),没有日期。可以查看一下时间系统这个概念!
开源中国首席罗纳尔多
开源中国首席罗纳尔多
您好,那请问现在是用多少位?
低调的前行
如果是嵌入式电子设备还是有可能的
低调的前行
我也觉得2038年不应该还有服务器还使用32位机器吧,还有18年。
往前推18年,2002使用的电脑和现在相比,还有在用的吗
火眼金睛容嬷嬷
火眼金睛容嬷嬷
32位那会儿早就从pc消失了,服务器还有吗?
OSC_muLQrZ
OSC_muLQrZ
前排
返回顶部
顶部