我最近重新安装了电脑的操作系统,必须安装一些驱动程序才能使一切正常运行。这让我很疑惑,驱动程序是什么?它是如何工作的?打印机驱动程序和显卡驱动程序之间有什么区别吗?
答案1
当我编写软件来打印到打印机时,我不想知道需要发送给 Lexmark 打印机的特定特殊命令,才能使其打印,而不是 HP 打印机。我想编写的是操作系统给我的一个抽象概念这样,我只需要编写一次打印代码,用户就可以使用他们想要的任何打印机,只要操作系统可以将通用接口转换为制造商特定的接口即可。
那么操作系统如何知道如何将这种抽象转化为设备制造商特定的命令呢?操作系统发布 API制造商可以编写从通用接口到特定硬件的“翻译代码”。
那个“翻译代码”是一个驱动程序。
答案2
操作系统的职责之一是提供“抽象”——一种程序员无需处理底层细节的环境,而是可以专注于他们希望计算机执行的任务。这可以减少开发时间和成本。
可以用非常通用的方式来看待 I/O。打开一个文件,读取或写入,然后在完成后关闭它。这里的 I/O 范例(它不是唯一的范例,但肯定是最常见和最容易理解的范例)显然可以应用于多种设备。
但设备的底层细节往往有很大不同。软盘驱动器控制器的编程和操作与硬盘控制器有很大不同,而硬盘控制器又与NAND闪存有很大不同。
假设有一位程序员试图开发电子表格之类的应用程序,如果他或她不必担心让这些设备读取块、旋转电机等所涉及的所有细致且往往复杂的技术和要求,那将是非常有益的。
如果了解低级 I/O 硬件细节的人将其打包成 API,那么我们可能会得到一个更好的电子表格程序,然后电子表格程序员可以使用该 API(希望是记录良好的)并处理他/她最了解的内容。因此,我们为每个实现我们的 I/O 范例的设备编写一个驱动程序 - 驱动程序将是接受高级请求并具有使设备服从这些请求所需知识的小程序。
额外的好处是,当新类型的设备出现时,我们(通常)不必更改我们的应用程序。我们只需添加更多驱动程序并告诉应用程序保存到不同的地方。
现在这是一个简化的外观但希望能给你一个好的想法。
答案3
驱动程序是允许计算机程序使用特定硬件设备资源的中间件。