几天前 Linus Torvalds 表达了他对终止支持的看法 用于处理器架构 Linux 内核中的 i486。 几天前在一个线程中讨论了旧架构,该线程着眼于内核如何更好地处理最近最少使用 (LRU) 列表,这是一种跟踪内存页面的方法。
而 Torvalds 调查了代码 合作者中, 似乎对包含解决方案的需要感到沮丧 足够的 对于较旧的 CPU。 因此,他建议终止对旧套件的支持,这可能是解决内存问题的更简单方法。
“我们在 386 年摆脱了对 i2012 的支持。也许是时候在 486 年放弃对 i2022 的支持了? 莱纳斯·托瓦兹 说
我们已经做到了(诚然错误:不是 SMP 安全的,即即使面对来自多个执行线程的同时访问,它也能正常工作,但 SMP 类 486 机器从未得到支持,即使它们在技术上存在)
应该记住的是 i486 CPU系列于1989年发布 目前很少有 Linux 发行版,如 Gentoo、Slackware 和 KNOPPIX 继续支持这种架构。
根据托瓦兹的说法, 支持很少人使用的过时架构导致的问题 通过取消他们的支持,他们可能更容易解决。 旧处理器的 LRU 内存管理也属于这种情况。
老实说,我不介意将最低要求升级到至少 M586TSC,同时留下一些早期的“假奔腾”克隆。 因为 'rdtsc' 可能是比 CMPXCHG8B 更严重的问题。
它 这一切都归结为 cmpxchg8b,一条比较然后交换八个字节的指令 (或 64 位)计算机内存中的信息。 邮件列表成员 Peter Zijlstra 建议 Linux 应该只支持能够执行此操作的处理器,将 486 位 i32 抛在后面,这意味着更新的 Linux 内核将在 P5 类硬件或更新的硬件上运行。
cmpxchg8b 指令 是“F00F”错误的罪魁祸首 从最初的 Pentium 开始,没有操作系统缓解措施的受影响 CPU 停止工作,直到在提示执行指令时重新启动它。
实际上,我完全不明白为什么当前的内核在 i486 上运行,因为它看起来像 exit_to_user_mode_prepare -> arch_exit_to_user_mode_prepare,并且最终有一个无条件的“rdtsc”语句。
我假设你没有启用它。RANDOMIZE_KSTACK_OFFSET*? 换句话说,我们的非奔腾媒体目前处于活跃缺陷和损坏状态。
按照他的说法, 高度怀疑 i486 硬件是否仍然相关。 毫无疑问,世界上还有这样坚定的人,谁相信由此产生的问题可以很容易地克服,但从内核开发的角度来看,这个位置并不真正相关。
“所以我真的认为 i486 级硬件不再重要。 是的,我确定有(Maciej 就是一个例子),但从内核开发的角度来看,我认为它们并不真正相关。 在某些时候,人们将它们作为博物馆藏品。 他们还可以管理博物馆的核心。
不得不说,架构 i486 于 1989 年首次亮相,并于 1993 年被英特尔的奔腾取代。 英特尔在 486 年淘汰了 i2007,如今其著名的 Ark 产品详细信息数据库未提及处理器系列。
那些很久以前仍在使用这些设备的人放弃了在没有支持的情况下这样做,没有获得新工具包的可能性,也没有软件开发人员考虑过该平台。
有关详细信息,Intel 80486 (i486, 486) 是 x86 系列的微处理器,由 Intel 制造。 它于 1989 年发布。在处理器架构方面,80486 与它的前身 Intel 80386 非常相似,只是增加了一些额外的指令。 因此,它是一种 CISC 架构。
从微架构的角度来看,当时有很大的改进:集成的统一指令和数据缓存、可选的集成浮点处理单元(FPU)和改进的总线接口。
最后他提到 拥有 i486 处理器系统的用户将能够使用内核的 LTS 版本这将持续很多年。
出于各种原因,例如简化和优化代码、减少内核复杂性和维护,或专注于更现代和流行的设备,Linux 内核可能会删除对旧型号处理器和设备的支持。 可以从 Linux 内核支持中删除的旧模型的一些示例包括:
较旧的处理器:例如 Intel i386、i486 或某些较旧的 AMD 处理器。 这些处理器非常老旧,不支持 Linux 内核的最新功能。
旧的外围设备:例如磁带驱动器、软盘驱动器或一些旧的声卡或视频卡。 这些设备现在不太常见,因此可能会取消对它们的支持以降低内核复杂性。
过时的技术:例如支持 IPX 网络协议,这是几十年前计算机网络中普遍使用的。 随着技术的进步和变化,对已弃用技术的支持可能会从内核中撤回。