驱动程序与API有什么区别和关联?

问题

一直对这个很纠结,比如说PC上插上一个USB设备,上层程序可以通过API函数(如libusb库的函数)对该设备对它进行操作,那么驱动程序呢?不是说驱动程序是硬件的接口么,通过加载驱动到操作系统就可以对硬件进行操作么,对这个我始终很纳闷,求大神解答


回答

操作系统理论研究者有时把操作系统分成四大部分:

驱动程序:最底层的、直接控制和监视各类硬件的部分,它们的职责是隐藏硬件的具体细节,并向其他部分提供一个抽象的、通用的接口。

内核:操作系统内核部分,通常运行在最高特权级,负责提供基础性、结构性的功能。

接口库:是一系列特殊的程序库,它们职责在于把系统所提供的基本服务包装成应用程序所能够使用的编程接口(API),是最靠近应用程序的部分。例如,GNU C运行期库就属于此类,它把各种操作系统的内部编程接口包装成ANSI C和POSIX编程接口的形式。

外围:是指操作系统中除以上三类以外的所有其他部分,通常是用于提供特定高级服务的部件。例如,在微内核结构中,大部分系统服务,以及UNIX/Linux中各种守护进程都通常被划归此列。

也就是说一个靠近硬件,一个靠近应用程序,缺一不可。

我的理解是:驱动程序告诉系统计算机内有这么一个硬件,API则是告诉系统有应用程序需要调用硬件,系统再通过驱动程序找到这个需要调用的硬件给应用程序使用。

你可能感兴趣的:(驱动程序与API有什么区别和关联?)