您现在的位置: 万盛学电脑网 >> 操作系统 >> Linux教程 >> 正文

Linux--Linux内核模块编程--对称多处理在线阅读

作者:佚名    责任编辑:admin    更新时间:2022-06-22

 对称多处理
  最简单的提高硬件的性能的办法是在主板上插上多个CPU(阅读是最便宜的方法)。要么让不同的CPU做不同的工作(非对称多处理),要么让它们并行运行同一工作(对称多处理,缩写为SMP)。有效的使用非对称多处理需要专门研究计算机将要做的任务的知识,而这是在例如LINUX这样的通用操作系统上不可能的。另一方面,对称多处理实现起来相对简单。 相对简单,我的确切的意思是--不是真的简单。在一个 对称多处理的环境中,多个CPU分享同一内存,结果是运行于一个CPU上的代码可以影响另一个使用的内存。你不再能保证你在前面几行中设置的某个变量的值保持着相同的值--另一个CPU可能在你没有看见时修改了它。明显的,对程序的像这样的问题是不能忍受的。
  在进程编程中这通常不成为一个问题,因为一个进程通常在同一时间(例外是线程,它们可以同时运行于几个CPU。)只运行于一个CPU上。另一方面,内核可能被运行于不同的CPU上的不同进程调用。SPIN
  在 2.0.x版中,这不是问题,因为整个内核在一个大自旋锁里面。这意味着当一个CPU在内核里,而另一个CPU例如因为系统调用而要进入内核,它不得不得到第一个CPU完成它的工作。这使LINUX的SMP安全(意思是和SMP使用它是安全的。 ),但严重的低效。
  在 2.2.x 版中,几个CPU同时在内核中。这是一些模块编写者应该注意的。我得到某人给我的使用一个SMP单元的权利,因此这本书的下一版有希望包含更多的信息。
常见的陷阱
  在我把你送往这个世界和编写内核模块外之前,有一些事情我需要警告你。如果我没能警告你而使某些坏的事情发生的话,请向我报告那个问题并向我索要你为此书而付给我的全额款项。
  1. 使用标准库文件 你不能那样做。在内核模块中你只能使用内核的函数,它们在 /proc/ksyms中可以看到。
  2. 关闭中断 你也许需要短暂的关闭中断而那不会有什么问题,但是如果你不能随后打开它们,你的系统将被粘住而你不得不给它断电。
  3. 将头粘在巨大的食肉动物里 我或许还没有警告你这个,但我无论如何会,只在万一的情况下。