关于Linux内核模块的快速问题

时间:2015-04-16 18:24:57

标签: linux kernel c

我非常熟悉Linux(我已经使用它2年了,没有Windows 1年半),我终于深入研究了内核编程和我&# 39;我在做一个项目。所以我的问题是:

  1. 内核模块的运行速度是否比传统的c程序快。
  2. 我如何与模块通信(甚至可能),例如调用其中的函数。

2 个答案:

答案 0 :(得分:6)

  

1.内核模块的运行速度是否比传统的c程序快。

它取决于是什么 作为内核模块运行意味着你可以通过不同的规则来玩,你可能会根据你正在做的事情避免一些上下文切换。您可以访问一些可用于优化代码的强大工具,但不要仅仅通过将所有内容放入内核空间来使您的代码更快地运行。

  

2.如何与模块通信(即使可能),例如调用其中的函数。

有多种方式:

答案 1 :(得分:1)

  
      
  1. 内核模块的运行速度是否比传统的c程序快。
  2.   

内核已经是一个C程序,很可能是用你使用的相同编译器编译的。因此,通用算法或一些处理器密集型计算将以几乎相同的速度执行。

但大多数用户空间程序(如bash)必须要求内核对系统资源执行某些操作,即在显示器上打印提示。它需要通过系统调用进入内核,通过tty接口发送数据并传递给视频驱动程序,这可能会引入一些延迟。如果你在内核中实现了bash,你可以直接调用视频驱动程序,这肯定更快。

然而,这种方法有缺点。首先,bash应该能够在ssh-session或串行控制台上打印提示,这将使逻辑复杂化。此外,如果您的bash将挂起,您不能只是杀死,您必须重启系统。

  
      
  1. 我如何与模块通信(甚至可能),例如调用其中的函数。
  2.   

除了@ tux3提供的优秀列表之外,我建议先从 char devices 开始。