gpt4 book ai didi

api - API 和设备驱动程序之间的区别

转载 作者:行者123 更新时间:2023-12-01 13:59:26 28 4
gpt4 key购买 nike

我试图理解它们是如何相互关联的。据我所知,它们都可以成为 HAL 的一部分。在应用程序和显卡之间进行通信的情况下 - API 可以自己完成工作还是我们必须同时依赖它们? API 可以直接与硬件通信,还是我们总是需要一个驱动程序来转换 API 的命令?

最佳答案

TL;博士

将 API 视为描述要做什么的规范,而驱动程序是描述如何做的实现。

细节

作为一个人为的例子,假设我们有三个不同的声卡,我们想在多个操作系统上很好地播放。我们可以为卡制造商定义一个 API,“每张卡必须支持四种方法:mute()playsound(sound)volumeup()volumedown()”。通过定义 API,我们获得了一个通用接口(interface),允许操作系统设计人员支持音频设备,而无需担心硬件细节。他们知道,如果他们想静音声卡,他们可以调用mute() ,或者如果他们想调高音量,可以调用volumeup() .

然后由设备制造商实现实际执行这些操作的驱动程序。驱动程序将在三种不同的声卡之间有所不同,因为它们在硬件级别上是不同的,但 API 是一致的,因此下一个更高的抽象级别(操作系统)不需要知道如何处理硬件。

对于更具体的示例,请考虑 Advanced Control & Power Interface (ACPI)规范。它为操作系统定义了一个通用接口(interface),用于管理硬件设备的功耗和热特性。设备驱动程序或固件必须实现一些方法才能“符合 ACPI”。这允许 Windows 操作系统和 Linux 变体在硬件设备上执行相同的操作,而无需为硬件实现自己的驱动程序

注意:Windows 通过 acpi.sys 执行 ACPI 操作,他们称之为“ACPI 驱动程序”。不要让术语迷惑你;尽管他们称它为驱动程序,但它实际上是一个进入 ACPI 接口(interface)的窗口。 Linux 使用 acpi kernel module做同样的事情,Linux 不称它为驱动程序。也许 ACPI 不是最好的例子,但我目前没有更好的例子。

关于api - API 和设备驱动程序之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31167526/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com