1.2系统调用和库函数

操作系统用户接口
命令接口 以命令形式呈现在用户面前,方便用户直接或者间接控制自己的电脑
程序接口 为应用程序使用系统功能而设置,是应用程序取得操作系统服务的唯一途径。由一系列系统调用组成,每一个系统调用都是一个能完成特定功能的子程序
图形接口 采用了图形化的操作界面,将各种应用程序和文件,直观、逼真地表示出来

1.2系统调用和库函数

系统调用是内核提供地程序接口,是应用程序和硬件设备之间的中间层:

为应用程序提供了服务和硬件抽象能力,例如,当需要读文件时,应用程序可以不管磁盘类型和介质,甚至不用去管文件所在的文件系统到底是哪种类型;
系统调用保证了系统的稳定和安全;
每个进程都运行在虚拟系统中。

Linux根据不同的版本有240到260个系统调用

系统调用类型
文件操作类系统调用 如打开、创建、读取、删除、修改文件
进程控制类系统调用 如创建进程、设置或获取进程属性
通信类系统调用 创建进程之间的通信连接,发送、接收信息,或其它的通信方式
设备管理类系统调用 打开、关闭和操作设备
信息维护类系统调用 在用户程序和OS之间传递信息。例如,系统向用户程序传送当前时间、日期、操作系统版本号等

系统调用和C库函数之间并不是一一对应的关系,可能几个不同的函数会调用到同一个系统调用;

并非所有的库函数都会调用系统调用,例如,printf函数会调用write系统调用以输出一个字符串,但strcpyatoi函数则不会使用任何系统调用。

1.2系统调用和库函数

一般而言,应用程序使用API而不是直接使用系统调用来编程。