是的,我知道......有些人有时很难说服我们其他人听起来自然是什么,我现在需要你的帮助SO社区(或者我很快就会去邮寄......)
我的一位同事确信Linux内核代码不重入,因为他上次在7年前对它感兴趣时就读到了它。可能它的阅读时间恰到好处,请记住,多核心架构在前一段时间并没有广泛普及,并且Linux项目在其开始时并没有完全写好并且完全成熟了所有奇特的功能。
今天是不同的。很明显,在同一架构上从并行运行的不同进程调用相同的系统调用不会导致未定义的行为。 Linux内核现在很普遍,即使在多核架构上运行,它的可靠性也是众所周知的。 这是我现在的论点。但是客观地证明会是什么?
我正在考虑向他展示Linux内核中的某些功能(在lxr website上)作为mutex_lock()系统调用。 Eveything经过调整,可以在并行环境中运行。但对于新手来说,代码可能并不那么明显(就像我一样)。
请帮帮我..; - )
答案 0 :(得分:5)
在内核邮件列表存档中搜索“BKL”。这代表“Big Kernel Lock”,它曾经被用来预防问题。已经做了很多工作将它分解成碎片,允许重新进入,因为不同的进程使用内核的不同部分。最近提到的“BKL”(至少我已经注意到)已经基本上提到有人试图通过锁定比其他人批准的更容易让自己的生活变得容易,此时他们经常说“回到过去的日子” BKL“,或该订单上的东西。
答案 1 :(得分:2)
证明多个CPU可以同时在内核中执行的最简单方法是编写一个在内核中执行大量工作的程序(例如,在紧密循环中查找长路径名),然后运行两个副本它同时在双核机器上显示top
中的“系统”百分比超过50%。
答案 2 :(得分:1)
冒着被嘲笑的风险:为什么不直接阅读代码?如果你们都不够专家,不能通过中断处理程序跟踪代码,进入某个子系统或其他可以读出同步代码的子系统,那么......为什么要这么麻烦?这不仅仅是一个引脚争论的头上的舞蹈吗?它就像一个创造论者,当他们对学习任何生物学不感兴趣时,要求进化论的“证据”。
答案 3 :(得分:0)
也许你应该让你的朋友证明Linux是而不是可以重入。负担不应该在你身上证明这一点。