Linux 和 Windows 内核

Linux 和 Windows 内核

我使用 Linux 工作,而我的朋友使用 Windows 7。

我对 NetBeans、Eclipse、pgAdmin 和其他程序的打开速度感到非常惊讶,在 Linux 上比在 Windows 上快很多。

Linux 和 Windows 内核之间的主要区别是什么,导致了时间加载差异?

两台机器的硬件配置完全相同。

答案1

这只是我的猜测,但我认为,当你在一家公司工作时,一旦所有内容都被编译(转换为计算机可以执行的二进制数据),就没有人可以再看到源代码,你往往会变得更加懒惰,因为这并不重要只要它有效。Linux
是开源的,所以每个人都可以看到源代码,只要他们愿意。如果你很懒,写出一段非常糟糕的代码,会拖慢系统速度或诸如此类的事情,你的名声就会毁掉,正如大家刚才看到的。开发人员和用户都一样。我认为这就是为什么开源开发人员往往不那么懒惰的原因之一。

事实上,Windows 内核在编写时从未打算变成现在的样子(Linux 也没有,但他们确实努力优化了旧代码),开发人员只是一直在其基础上不断添加代码,直到代码变得如此晦涩难懂,以至于没有人能从中得到什么。混乱的代码有两个特点:通常存在大量冗余,并且您不再能轻易看到两段代码之间的联系,这使得您甚至无法尝试开始优化它。这只是一个例子(不是晦涩难懂的例子);

for (int i = 0; i < 20; i++)
{
    if (x == y)
    {
        if (z <= u)
        {
            goto banana;
        }
    }
}

上面的例子可以做得更有效;

for (int i = 0; (i < 20) && (x == y) && (z <= u); i++)
{
    banana ();
}

答案2

另一个尚未提及的重要问题是 Linux 拥有更好的文件系统。NTFS 在处理小文件时的性能并不好——ext3 更好,而 ext4 则好得多。关于原因有一些有趣的猜测在另一个问题中

当您打开一个程序时,启动时间的很大一部分都在从磁盘加载一堆小文件,因此拥有一个能够快速执行这些操作的文件系统非常重要。

答案3

这只是我的观点,但我认为 GNU/Linux 系统比 Windows 更快的原因有多种,并非所有原因都与内核有关:

  • 显然 RobinJ 解释了原因,很明显,如果软件是开源的,代码往往会更高效地编写
  • Linux 使用非常优化的组件,例如,它使用非常优化的调度程序来最大限度地提高 CPU 利用率。
  • Linux 系统较少受到内存碎片的影响
  • Linux 系统可以更好地利用主内存,并且通常倾向于大量使用缓存,而 Windows 系统则倾向于大量使用虚拟内存
  • Linux 内核不断更新,通常会删除无用的部分,尽管 Linus Torvalds 表示 Linux 内核正在变得“庞大而臃肿”,但相反,NT 内核的更新通常建立在现有内核之上。

答案4

我认为内核本身并不是解决问题的办法。Windows 7 是 Windows 首次具有足够高的响应速度,我认为可以接受。

我认为速度差异更多的与@RobinJ 对软件工程的看法有关。Windows 中的所有内容*都是通过某种 Microsoft 框架或其他框架在 MSDN 上构建的。这实际上与大企业如何喜欢 Microsoft 有关;Microsoft 致力于帮助不同的程序/套件/技术相互交流。

接下来...为了让开发人员更容易掌握基本知识(而不是重新发明轮子),微软允许制造商捆绑和/或要求预编译库,如 Microsoft Visual C++ 2008 Redistributable。或者 .Net4.0、MSSQL 2005,等等。开发人员可以使用和构建大约十年的软件包,并要求最终用户在他们的 Windows 计算机上安装它们才能使用新软件。

因此,为了让程序 Zyzzyx 加载并运行,必须存在并运行一个或多个 MSDN 可再发行库。这些库决定了程序如何与操作系统交互。

归根结底,我认为 Windows 有意兼容数十年的软件,这使其变得臃肿,有时比同类的 Linux 系统更慢。另请注意,我为 Windows 开发过可视化软件,但没有为 Linux 开发过任何软件……不是 GTK、Qt、Py,任何东西,所以我对 Linux 不那么臃肿的假设只是这样。

编辑并添加:此外,FOSS 软件确实有人一直在改进它,所以 GTK 会随着时间的推移而改进,而不是 GTK-2005 和 GTK-2008 在同一台计算机上,而微软一直都是这样做的。

*- 好的,我确信有例外。

相关内容