硬件

每个硬件都有自己的命令集,os通过这些命令集控制硬件并与硬件通信

不同硬件部分的命令集数量和复杂度差别很大

通常,同样的硬件如果由不同的硬件厂商实现,它们通常会在标准的命令集外提供一些扩展,使用这些扩展通常可以发挥这些硬件的特性

每个硬件的生产厂家都有很多,不可能每个程序编写者都针对这些硬件重写一遍程序

于是上帝说,要有操作系统,于是人类有了一个方便的访问硬件的统一平台

os

os 目的之一就是把底层硬件的特性给封装起来,然后提供一个统一的接口,便于人去控制硬件

现代os不再允许应用程序直接访问硬件,os直接访问硬件层时,称os处于内核态(kernel mode)

老版os,如MS-DOS,允许编程人员直接访问硬件

虽然可使写出来的程序能够在一段短的时间内应用硬件的某些高级特性,但长远来说,这个程序将不能在这个硬件的新版本上运行

API

现代应用程序如果想访问硬件,必须通过os,具体就是用os提供的API

一个API就是一些功能的统一接口,能把硬件的这些功能抽象地统一起来,让程序员集中精力实现他们想要的功能

应用程序已经不可能绕过现代os直接访问硬件,一种更普遍的说法就是应用程序以用户态(user mode)运行

MS Windows提供的API是一群C函数的集合。Windows平台的最低层次的开发语言就是C语言

https://blog.csdn.net/menggucaoyuan/article/details/6532941