我这个学期正在学习操作系统课程,我们提到设备驱动程序会导致大约 85% 的崩溃(对于 Windows)。
我的理解是:由于许多个人计算机配置了多种硬件,并且大多数设备驱动程序在发生故障时都不是很健壮。因此Windows经常崩溃,Linux的驱动代码也有很多Bug。
然而,Mac 可能是一个不同的故事。由于所有 OS X 都只能在 Mac 上使用,而且 Mac 的硬件组件与其他 PC 相比相对恒定。因此,苹果的驱动程序代码质量可能比其他操作系统高得多。这就是为什么 Mac OS X 似乎比其他操作系统更稳定。我想知道我的这个论点是否正确。
我对 Mac 不太了解,也没有找到一篇谈论 Mac OS X 崩溃的期刊/会议论文。如果硬件的奇点不是 OS X 似乎更稳定的原因,请纠正我的说法比其他操作系统。
答案1
前提是无法证明的。科学需要一个可证伪的假设;没有办法测试任何可能的反假设,例如,如果苹果编写所有驱动程序,Windows 崩溃的可能性会减少,或者如果微软以某种方式切断对大量现有受支持硬件的支持,Windows 会更加稳定空间。基本上,你必须重新启动个人计算的历史,并拥有一只无所不能的手来重新排列事实,以得出你想要测试的结论。
尽管如此,我相信这个论点有一定道理。
我个人的经验是,Linux、FreeBSD 和 OS X 所有内核恐慌的程度都相同,也就是说“很少”。在我能够诊断出崩溃原因的绝大多数情况下,有是由于设备驱动程序造成的,但反过来又是由于硬件故障造成的。当硬件损坏时,它会导致设备驱动程序损坏,而当内核空间中的某些东西损坏时,内核通常会崩溃、锁定或通过某些方式进行自诊断恐慌/哎呀/蓝屏死机健康)状况。
至于这如何适用于 Windows,我认为情况很简单,Windows 盒子往往会按照营销部门选择的任意价格进行构建。市场竞争如此激烈,以至于偷工减料,因此低端 Windows 硬件比我们昂贵的 Mac 和 *ix 服务器更容易发生故障。
你在 *ix 世界中经常看到这种情况。有人会抱怨网络问题,然后提到他们正在使用一些不可靠的板载 MAC 芯片(RealTek、Broadcom 等),然后有人会立即告诉他们去获取英特尔卡。
此外,Windows 市场对价格的极度敏感意味着可用于软件开发人才的资金减少,因此驱动程序可能不会由周围最有能力的人编写。即使项目中投入了优秀的人才,一旦市场认为功能足够,他们就会立即交付。该团队将全部被解雇,或者将继续进行另一个项目,因此,当 1.0 驱动程序进入现实世界并出现意外问题时,没有一个人员配备齐全的有能力的开发团队来解决这些问题。
我提到过 OS X、FreeBSD 和 Linux 在每年的内核恐慌方面都大致相当,因为这表明驱动程序的数量并不能解释这里的一切。 Linux 比 FreeBSD 或 OS X 拥有更多的驱动程序,但只要您远离真正的低端硬件,它就大致一样稳定。 Linux 在价值 500 美元的改装 Windows PC 上的运行效果通常不如在价值 1,500 美元的专用 Linux 服务器上运行得好。您支付的费用是质量更高的组件,这些组件会给驾驶员带来更少的问题,从而降低崩溃的可能性。
如果您在同一台 1,500 美元的服务器上运行 Windows,我预测它将运行得非常可靠。随着 Windows 2000 的出现,Windows 在几乎所有硬件上都不可靠的日子开始消失。问题不在于 Windows,本身问题在于,Windows 市场的驱动者是吝啬鬼。这也是许多其他弊病的根源,例如“免费软件”偷偷安装掠夺性软件,以便将钱返还给创作者。
关于 85% 数字的另一点:这并不奇怪,因为内核所做的大量工作是运行驱动程序,而它所做的其余部分大多是通用的,因此调试得非常好。当您有 1,000 个不同的 NIC 芯片需要支持时,您不能指望它们能够像仅支持 20 个 NIC 芯片时那样得到良好的调试。而且,您有限的 20 个 NIC 芯片驱动程序仍然无法像内核的消息传递代码那样进行良好的调试。