总体而言,操作系统有两个职责:对硬件进行管理和抽象、为应用提供服务并进行管理。
从硬件的角度看,操作系统主要提供两类共性功能:管理硬件和对硬件进行抽象。
操作系统将复杂的、具备不同功能的硬件资源纳入统一的管理,并负责将硬件抽象成不依赖具体硬件特性的资源。在这个过程中,操作系统的核心功能是将有限的离散的资源高效的抽象成无限的、连续的资源,并提供接口给上层的应用。
从应用的角度来看,操作系统主要包含两类共性的功能:服务于应用 、管理应用。
狭义的操作系统指的是操作系统内核再加上一个shell。
广义的操作系统又可以进一步划分为操作系统内核与操作系统框架两层。
系统调用接口
应用程序提供操作系统内核提供的接口(例如系统调用)向内核申请服务。系统调用是用户态应用向操作系统内核请求服务的方法。
POSIX接口
由于每个操作系统提供的系统调用各不相同,为了同一个应用程序在不同操作系统上的可移植性,形成了一些可以指操作系统接口标准,例如POSIX。
领域应用接口
在POSIX或操作系统调用的基础上可以封装面向不同领域的领域应用接口。
API是应用编程接口,定义了两层软件之间源码层面的交互接口。ABI是应用二进制接口,即在某个特定体系结构下两层软件之间二进制层面的交互接口。包括如何定义二进制文件格式(如ELF、EXE)、应用之间的调用约定(包括参数传递和返回值处理)、数据模式(大端模式、小端模式)等。
参考资料 《现代操作系统:原理与实现》陈海波 夏虞斌等著