驱动程序是操作系统的一部分吗?

驱动程序是操作系统的一部分吗?

我很难理解操作系统包含什么,不包含什么。设备驱动程序(例如打印机驱动程序或图形驱动程序)是操作系统的一部分吗?考虑到操作系统的定义,我认为驱动程序是操作系统的一部分。

答案1

是的,驱动程序是操作系统的一部分。它们以与操作系统内核相同的特权级别运行,要编写驱动程序,您必须对操作系统内部结构有充分的了解。驱动程序的作用是提供硬件的抽象,以便应用程序可以通过操作系统 API(应用程序编程接口)使用它,而不必了解它的具体细节。在许多情况下,它还允许多个应用程序同时共享同一块硬件。

一些错误信息会误导用户认为驱动程序可能不是操作系统的一部分,因为许多供应商会单独提供他们制造的硬件的驱动程序,而不是操作系统。事实上,许多驱动程序都是以可加载模块的形式呈现的,这些模块可以加载并动态地参与操作系统。一旦不再使用它们,它们就可以与操作系统“断开连接”,操作系统将继续正常运行。

无论是否可加载,驱动程序始终特定于它们应向系统提供的设备,因此虽然它们有时是操作系统的“可选”部分,但它们在运行时确实参与其中。

答案2

“OS”一词可以表示多种含义。

虽然在大多数操作系统中,内核是管理和“运行”一切并仲裁硬件访问的代码片段,但它通常无法独自完成任何有趣的事情 - 它的工作是为应用程序提供一个框架,让其“在其之上”运行。因此,许多人对操作系统的定义包括实用程序、shell 和构成熟悉的标准化环境的程序。

驱动程序依赖于内核,最正确的说法可能是它们像插件一样“扩展”了内核。Linux 支持“可加载内核模块”的概念 - 所有设备驱动程序都可以是可加载内核模块。也可以构建一个内核,其中一个或多个模块是“内置”的,而不是与内核分离的。因此,您确实可以在 Linux 下构建一个“无模块”内核,并且它无法支持除您内置的模块之外的任何硬件。

我对 Windows 的内部结构不太熟悉,但我相信除了极少数“微型端口”驱动程序外,所有驱动程序都是在启动时加载的外部文件。如果您深入研究在 Windows 上创建服务,似乎驱动程序实际上只是 Windows 下服务的特殊形式。一些程序安装驱动程序以在低级别访问硬件,但不一定用于驱动设备,这些通常是设备管理器下的“非即插即用”驱动程序。因此,从概念上讲,驱动程序似乎与 Linux 下的可加载内核模块具有相同的功能。

为了简单起见,我会说它们是操作系统的一部分,因为如果没有操作系统,它们实际上就无法使用,而且除非启动了操作系统,否则它们就没有用,但无论如何,划定的界线都是相当任意的。

答案3

驱动程序不是操作系统的一部分。您可以说驱动程序帮助操作系统与设备或硬件进行通信。操作系统默认不包含所有驱动程序,如 Windows XP 和 Vista,但 Windows 7 中包含了大多数必要的驱动程序,因此您不必混淆它们不是操作系统的一部分。

相关内容