上下文切换模块的功能执行

时间:2015-06-19 11:35:34

标签: module linux-kernel

我读到当你运行模块时,代码成为内核的一部分。但我认为,当模块的功能仍在执行时,进程之间可以进行上下文切换。怎么会这样?我读到内核中没有上下文切换。

3 个答案:

答案 0 :(得分:1)

当然Linux内核中有上下文切换。它是called kernel pre-emption。我不确定你在哪里读到内核中没有上下文切换或为什么你认为它是不可能的。

内核线程(可能是您的模块代码将在其上执行)与其他任何用户线程一样被调度。

答案 1 :(得分:0)

但问题似乎不正确。

  

但我认为在进程之间可以进行上下文切换,而模块的功能仍在执行。

什么?

假设我们有一个实现文件系统的模块。如果您通过打开的系统调用在这样的文件系统上打开文件,则代码将打开 - >一些查找 - > 模块中的代码。所有这些都发生在相同的线程的上下文中。没有模块上下文的概念。它可能是模块中的代码自己创建了一些内核线程,但这与它作为模块没有关系。

答案 2 :(得分:0)

进程可以在任何给定的时间点在其中一个上下文中运行:

  1. 用户模式
  2. 内核模式
  3. 中断模式
  4. 在所有情况下都会发生上下文切换。在中断模式下,程序员有责任在执行中断的上半部分时禁用CPU上的上下文切换。我不知道你在哪里阅读内核模式中不会发生上下文切换。