Torvalds对于Linux内核中潦草的Unix千年虫bug补丁感到很不爽

2000年到来前,“千年虫”bug曾经引发了很大的恐慌,甚至不少影视剧中都有夸大的描写。不过在紧急磋商和“打补丁”之后,软硬件“无法正确处理2000年问题”的千年虫危机算是平稳度过了。但……事实真的如此吗?对于Unix类操作系统来说,它们其实还面临着同样的问题,那就是——2038年危机!(又称“Unix千年虫”)

该操作系统底层的日期数值,存储在一个32位的整数签名中,而起始点则是1970年1月1日。(还记得iOS里往前调时间让iPhone变砖的bug吗?)

问题在于,32位整数将于2038年1月19号的03时14秒遭遇“溢出”,从而让系统错误地将时光“回滚”到了1901年的12月13日。

或许有人觉得“问题怎么着也会在22年后才会发生”,但它对软件的影响其实迫在眉睫(尤其是规划未来事务的软件类型)。

随着时间的推移,我们将日期提前安排到2038年之后的情况会越来越多,而系统日期错乱所带来的影响亦将越发不可收拾——有鉴于此,该问题应该尽早全面解决。

不出所料的是,“Linux之父”Linus Torvalds一直对Linux内核代码变动保持着密切的关注,比如Arnd Bergmann所忧虑的虚拟文件系统内核切换接口(包含了百余由Deepa Dinamani打上的小补丁)。

一向爽直的Torvalds曾猛喷过自己是“越看越不爽”。有趣的是,同样于数月前提交的一些变动,却还没有被审查。XFS专家Paul Chinner自称是系统文件开发者,他在看过代码后说到:

在我试图让你重建补丁却被猛喷之后(正如Linus当前认为的那样),我撒手并没再看你们的补丁了。难怪没有其它文件系统维护者愿意把时间浪费在这件破事上面…

故事背景是大家希望给Linux内核带来预期中的高质量补丁,然而高层却无惧于开发者潦草了事(已有2次未通过审查),看来近期这些补丁代码是不会被提交到AI Viro的VFS分支作深入审查了。

总的来说,Torvalds仍准备将未来25年投入到帮助Linux征战桌面的事业上,所以即使在“2038 bug”爆发后,他仍有3天的时间去为Linux的未来“纠偏护航”。
本文转自d1net(转载)

时间: 2024-10-07 13:42:55

Torvalds对于Linux内核中潦草的Unix千年虫bug补丁感到很不爽的相关文章

Torvalds 对于 Linux 内核中潦草的 Unix 千年虫 bug 补丁感到很不爽

2000年到来前,"千年虫"bug曾经引发了很大的恐慌,甚至不少影视剧中都有夸大的描写.不过在紧急磋商和"打补丁"之后,软硬件"无法正确处理2000年问题"的千年虫危机算是平稳度过了.但--事实真的如此吗?对于Unix类操作系统来说,它们其实还面临着同样的问题,那就是--2038年危机!(又称"Unix千年虫") 该操作系统底层的日期数值,存储在一个32位的整数签名中,而起始点则是1970年1月1日.(还记得iOS里往前调时间

基本数据结构和算法在Linux内核中使用

基本数据结构和算法在Linux内核中使用 gaufunga day ago 搬运工 Linux内核(源代码的链接在github). 1.链表.双向链表.无锁链表. 2.B+ 树,这是一些你无法在教科书上找到的说明. 一个相对简单的B+树的实现.我把它作为一个学习练习来帮助理解B+树是如何工作的.这同样也被证明是有用的. ... 一个在教科书中并不常见的技巧.最小的值在右侧而不是在左侧.所有在一个节点里用到的槽都在左侧,所有没有用到的槽包含了空值(NUL).大多数操作只简单地遍历所有的槽一次并在第

Linux内核中双向链表的经典实现

概要 前面一章"介绍双向链表并给出了C/C++/Java三种实现",本章继续对双向链表进行探讨,介绍的内容是Linux内核中双向链表的经典实现和用法.其中,也会涉及到Linux内核中非常常用的两个经典宏定义offsetof和container_of.内容包括: 1. Linux中的两个经典宏定义 2. Linux中双向链表的经典实现 转载请注明出处:http://www.cnblogs.com/skywang12345/p/3562146.html 更多内容: 数据结构与算法系列 目录

linux内核中的C语言常规算法(前提:你的编译器要支持typeof和type)

学过C语言的伙伴都知道,曾经比较两个数,输出最大或最小的一个,或者是比较三个数,输出最大或者最小的那个,又或是两个数交换,又或是绝对值等等,其实这些算法在linux内核中通通都有实现,以下的代码是我从linux内核源码的kernel.c中抠出来的代码,我们来看看: 我们直接上代码: #include <stdio.h> #include <stdlib.h> /* * min()/max() macros that also do * strict type-checking..

android内核-编译好的linux驱动模块向android手机的linux内核中insmod时错误

问题描述 编译好的linux驱动模块向android手机的linux内核中insmod时错误 我编写了一个helloworld.ko的驱动模块,编译成功后向手机中insmod时报错,错误提示为version magic '2.6.35.7_hi3716m mod_unload ARMv7 ' should be '3.3.6_hi3716m mod_unload ARMv7 p2v8 ',请问怎么解决?还有ARMv7后的p2v8是什么意思? 解决方案 应该是内核版本不对?

Linux内核中常见内存分配函数(一)

linux内核中采 用了一种同时适用于32位和64位系统的内存分页模型,对于32位系统来说,两级页表足够用了,而在x86_64系 统中,用到了四级页表. * 页全局目录(Page Global Directory) * 页上级目录(Page Upper Directory) * 页中间目录(Page Middle Directory) * 页表(Page Table) 页全局目录包含若干页上级目录的地址,页上级目录又依次包含若干页中间目录的地址 ,而页中间目录又包含若干页表的地址,每一个页表项指

linux内核-关于Linux内核中通过hash表将pid转化为task_struct地址的计算

问题描述 关于Linux内核中通过hash表将pid转化为task_struct地址的计算 内核中通过hash表把pid快速转化为task_struct的地址,Linux内核中有4张hash表,在初始化期间会为4张hash表动态分配地址.但转化的计算问题中,<深入理解Linux内核>中提出,对于一个有512MB RAM系统,每张表就存储在4个页框中,每张表可以有2048个表项,不知道这个是如何计算而来的.

Linux内核中SPI总线驱动分析

本文主要有两个大的模块:一个是SPI总线驱动的分析 (研究了具体实现的过程): 另一个是SPI总线驱动的编写(不用研究具体的实现过程).  1 SPI概述       SPI是英语Serial Peripheral interface的缩写,顾名思义就是串行外围设备接口,是Motorola首先在其MC68HCXX系列处理器上定义的.SPI接口主要应用在 EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间.SPI是一种高速的,全双工,同步的通信总线,并且在芯片的

C语言在linux内核中do while(0)妙用之法

为什么说do while(0) 妙?因为它的确就是妙,而且在linux内核中实现是相当的妙,我们来看看内核中的相关代码: #define db_error(fmt, ...) \ do { \ fprintf(stderr, "(error): "); \ fprintf(stderr, fmt, ##__VA_ARGS__); \ } while (0) 这只是个普通的调试信息的输出,有人便会认为,你这不是多此一举吗?去掉do while(0)不一样也实现了吗?其实不然,我们看看例子