我非常熟悉Linux(我已经使用它2年了,没有Windows 1年半),我终于深入研究了内核编程和我&# 39;我在做一个项目。所以我的问题是:
答案 0 :(得分:6)
1.内核模块的运行速度是否比传统的c程序快。
它取决于是什么 作为内核模块运行意味着你可以通过不同的规则来玩,你可能会根据你正在做的事情避免一些上下文切换。您可以访问一些可用于优化代码的强大工具,但不要仅仅通过将所有内容放入内核空间来使您的代码更快地运行。
2.如何与模块通信(即使可能),例如调用其中的函数。
有多种方式:
答案 1 :(得分:1)
- 内核模块的运行速度是否比传统的c程序快。
醇>
内核已经是一个C程序,很可能是用你使用的相同编译器编译的。因此,通用算法或一些处理器密集型计算将以几乎相同的速度执行。
但大多数用户空间程序(如bash
)必须要求内核对系统资源执行某些操作,即在显示器上打印提示。它需要通过系统调用进入内核,通过tty
接口发送数据并传递给视频驱动程序,这可能会引入一些延迟。如果你在内核中实现了bash,你可以直接调用视频驱动程序,这肯定更快。
bash
应该能够在ssh-session或串行控制台上打印提示,这将使逻辑复杂化。此外,如果您的bash
将挂起,您不能只是杀死,您必须重启系统。
- 我如何与模块通信(甚至可能),例如调用其中的函数。
醇>
除了@ tux3提供的优秀列表之外,我建议先从 char devices 开始。