Operating system 驱动程序如何成为内核的一部分?

Operating system 驱动程序如何成为内核的一部分?,operating-system,kernel,drivers,Operating System,Kernel,Drivers,有人告诉我,对于大多数操作系统,驱动程序都是内核的一部分。这是怎么发生的?内核是否反编译自身、添加驱动程序并重新编译自身?或者是内核的驱动程序插件?驱动程序甚至是它们自己的独立程序吗?驱动程序被编译到一个公开已知接口的库中。然后内核在启动时扫描驱动程序并将其加载到内核内存中。一些操作系统,比如linux,也支持内核模块,可以在操作系统运行时加载/卸载…我将回答这个问题,尽管7年前有人问过那些在这些年后偶然发现它的人 内核是操作系统的核心,因此包括对系统范围内依赖的各种功能的支持 系统服务例程不必

有人告诉我,对于大多数操作系统,驱动程序都是内核的一部分。这是怎么发生的?内核是否反编译自身、添加驱动程序并重新编译自身?或者是内核的驱动程序插件?驱动程序甚至是它们自己的独立程序吗?

驱动程序被编译到一个公开已知接口的库中。然后内核在启动时扫描驱动程序并将其加载到内核内存中。一些操作系统,比如linux,也支持内核模块,可以在操作系统运行时加载/卸载…

我将回答这个问题,尽管7年前有人问过那些在这些年后偶然发现它的人

  • 内核是操作系统的核心,因此包括对系统范围内依赖的各种功能的支持
  • 系统服务例程不必存在于单个内核映像下(例如,在Windows上,有FltMgr.sys来处理文件系统,并且通过设备控制例程与之通信)
  • 内核模式设备驱动程序用外行的话来说是内核的扩展。您将以当前权限级别0(用于环0)执行,因此对内存访问和特定指令使用的限制将为您撤销。你的信任水平也会更好
  • 内核模式设备驱动程序本质上是内核的“模块”。您在Windows上有一个处于用户模式的动态链接库(DLL),或者在OS X上有一个动态库。。。将内核模式设备驱动程序视为内核模式的等价物,除了它不必扩展实际内核之外,它可以用于第三方应用程序必须在内核级别实现的功能

    此外,它背后的思想是主内核能够为第三方内核模式软件提供对一组API的访问。否则,第三方开发人员将不得不自己实现一切,这基本上就是“操作系统开发”

    要点:

  • 内核模式设备驱动程序具有与实际操作系统内核相同的权限
  • 内核模式设备驱动程序应该能够使用一些操作系统内核API来帮助实现与操作系统设计方式相关的功能(例如文件系统、进程、注册表(或等效)、内存管理等)
  • 内核模式设备驱动程序基本上是操作系统内核的“扩展”,因为您没有替换实际的内核,但您也处于相同的特权级别(称为#1),如果您愿意,理论上可以扩展系统范围的功能(例如,添加对用户模式软件的支持,以通过调用门或进程间通信等通信方法依赖设备驱动程序功能)

  • 我希望这对这条非常古老的线索的未来绊脚石有所帮助;这个问题真的很好。

    Windows的可能副本也会动态加载驱动程序……仅供参考。