1. XenForo 1.5.14 中文版——支持中文搜索!现已发布!查看详情
  2. Xenforo 爱好者讨论群:215909318 XenForo专区

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

本帖由 漂亮的石头2020-02-01 发布。版面名称:新闻聚焦

  1. 漂亮的石头

    漂亮的石头 版主 管理成员

    注册:
    2012-02-10
    帖子:
    488,439
    赞:
    48
    新十年伊始,Linux Kernel 5.6 的开发者已经准备好着手解决将在下一个十年到来的 2038 年问题(又称 “Y2038” 或 “Unix Y2K” 问题)。Linux 5.6 也成为第一个为 32 位系统准备运行到 2038 年之后的主线内核。

    [​IMG]

    2038 年问题与千年虫问题类似,它可能会导致某些软件在 2038 年 1 月 19 日 3 时 14 分 07 秒之后无法正常工作。届时,在大部分 32 位操作系统上,依据 “time_t” 标准,时间将会“绕回”且在内部被表示为一个负数,并造成程序无法工作,因为它们无法识别 2038 年,而可能会跳回 1970 年或 1901 年。​

    现阶段,还没有针对 2038 年问题的通用解决方案。Linux 5.6 已率先做好准备,并极有可能反向移植到 5.4/5.5 稳定分支。​

    [​IMG]

    在 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
     
正在加载...