是啊,我知道…有些人有时很难说服我们其他人听起来很自然,我现在需要你的帮助所以社区(或者我很快就会去邮政..)
我的一位同事确信,当他在上个世纪七十年前对自己有兴趣的地方读取内核代码的时候,他的内核代码是不可重入的。 可能它的读法在当时是正确的,请记住,多核心架构前一段时间并不是很普及,而linux项目在开始时并没有完全写得完全成熟,并且具有所有奇特的特征。
今天是不同的。 很明显,在同一个体系结构中调用来自不同进程并行运行的系统调用不会导致未定义的行为。 Linux内核现在非常stream行,即使运行在多核架构上也是如此。 这是我现在的论点。 但是,你会如何客观地certificate呢?
我正在考虑在linux内核( lxr网站 )上显示一些函数作为mutex_lock()系统调用。 Eveything被调整为在并发环境中工作。 但代码可能不是那么明显的新手(就像我)。
请帮帮我.. ;-)
搜索内核邮件列表存档“BKL”。 这代表了“大内核锁”,这是用来防止问题。 大量的工作已经被分解成多个部分,允许不同进程使用内核的不同部分。 最近提到的“BKL”(至少我已经注意到了)基本上是指有人试图通过锁定比别人认可的更多的东西来使自己的生活变得容易,在这一点上,他们经常说“回到日子里的BKL“,或者这个订单上的东西。
证明可以同时在内核中执行多个CPU的最简单方法是编写一个在内核中执行大量工作的程序(例如,在紧密的循环中查找长路径名),然后运行两个副本同时在双核机器上显示“系统”的百分比在50%以上。
冒着被人嗤之以鼻的风险:为什么不直接阅读代码呢? 如果你们两个都不够专业,可以通过中断处理程序跟踪代码,并进入某个子系统或另一个可以读出同步代码的子系统,那么……为什么要这么麻烦呢? 这是不是只是一个引脚争论的头上跳舞? 它就像是一个创造论者,当他们不想学习任何生物学时,就要求进化的“证明”。
也许你应该让你的朋友证明Linux 不是可重入的。 负担不应该在你身上证明这一点。