UNIX/Linux 体系结构
了解UNIX/Linux 体系结构更有助与在Linux系统编程。
image.png操作系统在计算机体系中的位置
操作系统位于应用程序和计算机硬件之间,是两者的“桥梁”,用户或者应用程序可以通过操作系统对计算机硬件进行管理和操作。操作系统还可以扩展计算机的功能,提升用户的体验;
Linux内核是操作系统的核心,它具有包括内存管理、进程管理、文件管理、设备管理等功能
image.pngUNIX/Linux操作系统架构
通过上图可以观察到,用户可以通过内核层提供的System call interface (系统调用接口)与内核的一些功能进行交互,内核可以和硬件设备打交道,用户的应用程序就可以通过系统调用来操作文件系统以及进程控制系统等
系统调用和库函数
系统调用主要分为文件操作类系统调用、进程控制类系统调用、通信类系统调用、设备管理类系统调用、信息维护类系统调用
c库提供了绝大部分操作系统api,同时内核的系统调用在c库中都有具体的封装函数
从用户的角度来看,只需关注如何通过c库完成所需功能;从内核的角度来看,内核只需提供系统调用来管理硬件设备,不需要关注这些系统调用是如何被调用的
计算机硬件是底层基础,应用程序对用户提供服务,内核相当是一段“计算机程序”,这个“程序”可以直接管理硬件,为了方便调用内核,Linux将功能,接口制作成系统调用,通过系统调用用户可以不用了解内核的复杂结构就可以使用内核,系统调用是操作系统的最小功能单元,一个操作系统或者基于操作系统的应用都不可能实现超越系统调用的功能,一个系统调用就好比汉字中的笔画一样,任何一个汉字都要由这些基本笔画组成;
系统调用提供的功能非常基础,所以使用起来很麻烦,而库函数会将一些系统调用模块化进行封装,可以把程序员从麻烦的细节中解脱出来。库函数就好比偏旁部首,它是由笔画组成,但更容易组成汉字。
小总结:Linux 利用内核实现软硬件的对话,通过系统调用这个接口将上层的应用与下层的内核分离,隐藏了底层的复杂性也提高了上层应用的可移植性。库函数利用系统调用创造出模块化的功能。