【问题标题】:How are device driver development and linux kernel programming related/different?设备驱动程序开发和 linux 内核编程有何相关/不同?
【发布时间】:2014-08-05 12:54:34
【问题描述】:

这可能是一个愚蠢的问题,但我很困惑,谷歌也无能为力。

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

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

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

      Bash 脚本是编写一个 shell (Bash) 来运行用户态程序,这些程序本身使用内核来完成实际工作。 Bash 脚本是用户态编程。

      【讨论】:

        【解决方案3】:

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

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

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

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

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

        【讨论】:

          猜你喜欢
          • 2014-03-02
          • 1970-01-01
          • 2017-03-02
          • 1970-01-01
          • 2013-09-13
          • 2011-02-10
          • 2020-05-08
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多