作为启动程序的一部分,操作系统决定系统的硬件配置,搜索连接到USB接口或者PCI扩展槽的外界设备,对他们进行初始化,如果有必要,在初始化的时候加载驱动程序。
操作系统完成加载后。用户便可以运行应用程序,引用软件可能需要分配内存或者向磁盘读写文件,这些请求均有操作系统进行处理。对于用户而言,操作系统的参与基本是透明的。
操作系系统在运行的应用程序和物理硬件之间提供了一个抽象层。应用程序一般通过向操作系统发出高层请求与硬件进行通信。因为这些请求是由操作系统处理,所以应用程序可能完全不知道其运行环境的硬件配置(如RAM数量,硬盘存储器是内部的SSD还是一个外部的USB驱动器)。
这个抽象层可以使应用软件在多种不同的硬件配置下运行,无需程序员为每种硬件添加支持,即便那些在应用程序发布后才出现的新硬件设备也不需要。
应用程序开发者通常可以忽略计算机操作系统中的工作细节,因为操作系统将运行应用程序的硬件平台抽象了出来。但是,如果你作为一名驱动程序开发者,你所编写的代码将作为操作系统的一部分,直接与硬件软件进行交互。你不能对系统操作的内部工作原理一无所知。