我想知道是否有人可以向来自 Windows 的人解释什么是 Linux 内核模块?
答案1
这是一种将代码动态加载到 Linux 内核的方法,Linux 内核是 GNU/Linux 操作系统的最低级部分。Windows 设备驱动程序通常用于类似目的。您可以阅读这篇有点老的文章常问问题。有些事情已经改变,但是基本思想仍然是一样的。
答案2
内核模块是独立的代码片段,被加载到内核中以提供对特定硬件的支持。
例如,Linux 内核本身不能使用串行端口 (RS-232),但是当您加载适当的内核模块时,它就可以使用。
该lsmod
命令将显示当前加载的内核模块的列表。
答案3
Linux 内核模块在概念上与 Windows 设备驱动程序相同。
要使硬件工作,您需要在 Windows 中为其安装驱动程序,在 Linux 中您需要为其安装设备驱动程序内核模块。
设备驱动程序需要直接访问硬件,因此在内核模式下运行。普通用户应用程序在用户模式下运行。用户模式程序受到 CPU MMU 的保护,不能干扰另一个用户模式程序或任何在内核模式下运行的程序的运行。在内核模式下运行的程序没有这种保护,但可以直接访问硬件。这就是它们被称为内核模块的原因。
您可以构建自己的 Linux 内核,并将模块合并到内核中。然后,它们就不再是模块,而是内核的一部分。通常,只构建启动所需的少量驱动程序并让硬件检测加载其余所需的驱动程序是有益的,尽管您可以根据需要构建一个完全“静态”的内核,而不依赖于加载任何模块。