Linux操作系统宏观上可以分为应用程序、内核层和硬件层,结构上是自顶向下。首先是和用户也就是使用者打交道的应用程序,应用程序向上提供友好的人机交互接口,向下调用操作系统的服务接口。第二层为系统内核层,这一层主要是操作系统功能特点的体现,比如进程管理、设备管理、内存管理以及文件管理。除此以外,系统内核还包括驱动程序。最后一层就是底层的硬件物理层,这一层是系统基础资源,如图2-39所示。
图2-39 Linux操作系统架构图
像腾讯QQ、支付宝、微信、360安全卫士等,都属于应用程序。这类软件有良好的用户接口,比如支付宝的登录页面。有形象的运行状态,如360安全卫士查杀病毒。有各种编译器以及编译环境,都是以人的常规思维状态设计而成的。应用程序不关心底层硬件,只关心操作系统类型,因为现在不是所有的软件都是跨平台,比如苹果系统无法安装安卓和微软的应用程序,反之亦然。应用程序关注操作系统主要是因为操作系统提供的调用接口是差异化的。设想一下,如果应用程序没有系统接口可以调用,其功能就非常单一了。
上文列举了不同操作系统平台提供的系统接口是有差异化的,这个差异化的本质是因为操作系统的内核不同。首先我们要明白什么是系统内核,以Linux操作系统内核为例,Linux内核是一个稳定的代码,它需要为多个用户程序服务,为了防止用户空间的某些程序使Linux内核代码崩溃或产生其他问题,而不能为其他用户服务,内核向应用程序提供接口函数,并在这些接口函数中加上防护策略,向符合接口函数的应用程序提供服务,同时也保护了系统内核。
Linux内核层与硬件层之间的接口是驱动程序,驱动程序负责硬件操作,内核提供了驱动程序的添加机制,便于开发人员将驱动代码添加到内核中。
物理层接口是以电平信号为对象,完成各种电平信号之间的相互转换,通常电平信号变换前后其承载的信息保持不变,因此,无论如何变换,电平信号之间总是存在某种映射关系。硬件物理层接口取决于硬件系统的资源,硬件系统资源主要包括:处理器、存储器、I/O设备、通信接口以及扩展接口。其中微处理器又是硬件资源的核心,因为处理器的性能决定着硬件系统的处理速度、GPIO口的数量、内存大小、通信接口以及扩展接口。