5

是的,我知道......有些人有时很难说服我们其他人听起来很自然,我现在需要你的帮助 SO社区(或者我很快就会去邮寄......)

我的一位同事确信 linux 内核代码不会重入,因为他可能在 7 年前最后一次对它感兴趣时在某个地方读到它。可能当时它的阅读是正确的,请记住,多核架构在前一段时间并没有广泛普及,并且 linux 项目在其开始时左右并没有完全写好并且完全成熟并具有所有花哨的功能。

今天不一样了。很明显,从在相同架构上并行运行的不同进程调用相同的系统调用不会导致未定义的行为。Linux 内核现在很普遍,即使在多核架构上运行,它也以其可靠性而闻名。这是我现在的论点。但是你有什么可以客观地证明这一点呢?

我想向他展示 linux 内核中的一些功能(在lxr 网站上)作为 mutex_lock() 系统调用。一切都经过调整以使其在并发环境中工作。但是对于新手(就像我一样)来说,代码可能并不那么明显。

请帮我.. ;-)

4

4 回答 4

5

在内核邮件列表存档中搜索“BKL”。这代表“Big Kernel Lock”,它曾经用于防止出现问题。已经投入了大量工作来将其分解成碎片,以便只要内核的不同部分被不同的进程使用,就可以重新进入。最近提到的“BKL”(至少我注意到了)基本上是指有人试图通过锁定比其他人批准的更多来让自己的生活更轻松,此时他们经常说“回到过去” BKL”,或该订单上的东西。

于 2009-10-12T23:12:07.543 回答
2

证明多个 CPU 可以同时在内核中执行的最简单方法是编写一个在内核中执行大量工作的程序(例如,在紧密循环中查找长路径名),然后运行它的两个副本同时在双核机器上显示“系统”百分比top超过 50%。

于 2009-10-13T00:01:56.963 回答
1

冒着尖酸的风险:为什么不直接阅读代码呢?如果你们都不够专业,无法通过中断处理程序跟踪代码并进入某个子系统或另一个可以读出同步代码的子系统,那么……何必呢?这不只是一场针锋相对的舞蹈吗?当他们对学习任何生物学不感兴趣时​​,这就像一个创造论者要求进化的“证据”。

于 2009-10-13T02:39:37.250 回答
0

Maybe you should have your friend prove Linux is not reentrant. Burden should not be on you to prove this.

于 2009-10-28T20:53:00.640 回答