【问题标题】:how do drivers become parts of operating systems?驱动程序如何成为操作系统的一部分?
【发布时间】:2011-11-05 21:41:20
【问题描述】:

我知道操作系统内核是由驱动组成的,但是驱动是如何成为操作系统的一部分的呢,内核是自己反编译,然后添加驱动,然后自己重​​新编译?还是驱动插件呢?对于内核?有人告诉我,对于大多数操作系统,驱动程序实际上是内核的一部分,但是每当我编译一个c程序时,它就会变成一个普通的可执行文件

【问题讨论】:

  • 如果您构建操作系统内核,您的编译器设置与构建可执行文件时使用的不同。基本原理是相同的,但如果您要创建一个足够原始的“图像”以启动机器,编译器会做一些特殊的事情。

标签: c operating-system drivers


【解决方案1】:

驱动程序架构完全取决于您的操作系统。对于在计算机上运行的大多数操作系统(与嵌入式设备相反),将驱动程序视为内核的“插件”非常准确。也就是说,有很多旧的、更小的和不太复杂的操作系统需要您将驱动程序作为内核的一部分构建 - 不可能动态加载。如今,一些操作系统支持“用户模式”驱动程序,这些驱动程序根本不在内核内存空间中运行。

【讨论】:

  • 当然,在微内核操作系统中,驱动程序只是普通的用户空间程序,就像任何其他程序(例如,Web 浏览器或文本编辑器)。
【解决方案2】:

这取决于操作系统。

传统上,内核是一个包含所有驱动程序的单一可执行文件 - 并且在需要添加新驱动程序时重新构建,包括新驱动程序的代码以及所有旧驱动程序的代码。

在现代 Linux 中,可能还有其他操作系统,驱动程序在需要时由内核动态加载。驱动程序以允许内核执行加载的形式创建;通常,这意味着采用共享对象或动态链接库格式。

【讨论】:

    【解决方案3】:

    在 Linux 等操作系统中,驱动程序实际上可以编译到内核映像中。尽管即使是静态链接的,它们也可能表现出一种插件式架构,允许人们轻松地只包含自己需要的驱动程序。

    或者,它们可以在启动时动态链接和加载,或者在某些系统级软件需要时按需加载。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-09
      • 1970-01-01
      • 2010-11-06
      • 1970-01-01
      • 1970-01-01
      • 2020-09-27
      • 1970-01-01
      • 2022-11-29
      相关资源
      最近更新 更多