设备驱动程序开发和linux内核编程如何相关/不同?

时间:2014-08-05 12:54:34

标签: linux linux-kernel linux-device-driver

这可能是一个愚蠢的问题,但我感到困惑,谷歌无法提供帮助。

我知道Linux是内核,它是许多发行版的核心(Ubuntu,Mint)。但是,当我们说" Linux内核编程"时,我们究竟是什么意思?是Bash脚本吗?

它与设备驱动程序开发有何关系? (我们是说硬件是运行linux内核而我们是做内核编程来支持外围设备,这通常是与Linux相关的设备驱动程序开发吗?)

3 个答案:

答案 0 :(得分:1)

Linux内核编程涉及内核组件,意思是 - 内核数据结构和头文件。使用现有内核功能或增强当前功能的程序是内核程序,通常是内核模块。在某种程度上,甚至Bash脚本也可以称为Linux内核编程。从广义上讲,设备驱动程序只是一组中断处理程序。话虽如此,设备驱动程序本身就是一个内核程序,因为它使用移植到设备/硬件上的Linux内核功能。简而言之,两者之间的关系是设备驱动程序开发是Linux内核编程的一种形式。

答案 1 :(得分:1)

基本上你的计算机上运行着两种程序:内核,可以访问计算机硬件,以及“userland”程序,它们要求内核执行低级操作(分配内存,将数据发送到网络) ,...)。

要做到这一点,内核必须知道如何与某些给定的硬件进行交互。这就是我们所说的“设备驱动程序”。在Linux中,设备驱动程序实现为内核模块,设备驱动程序编程类似于内核编程,因为您直接处理金属的低级操作,而不是通过内核的高级操作。

Bash脚本编程是一个shell(Bash)来运行本身使用内核来完成实际工作的userland程序。 Bash脚本是用户空间编程。

答案 2 :(得分:1)

设备驱动程序开发是Linux内核编程的一个子集。

设备驱动程序开发正在编写或修改将处理设备的内核模块。设备驱动程序是内核模块的特例。
内核模块是在内核中工作并执行特权任务的代码。

内核模块是Linux内核编程不可或缺的一部分。这就是设备驱动程序开发和Linux内核编程之间的关系。前者是后者的一部分。

此外,设备驱动程序最终将插入内核,并将在内核上下文中工作。也就是说,设备驱动程序最终成为内核的一部分。

因此,驱动程序开发是Linux内核编程中的一个子集。