#####################################
作者:张卓
原创作品转载请注明出处:《Linux操作系统分析》MOOC课程 http://www.xuetangx.com/courses/course-v1:ustcX+USTC001+_/about
#####################################
一 系统调用概述
操作系统为用户态进程与硬件设备进行交互提供了一组接口-系统调用
● 把用户从底层的硬件编程中解放出来
● 极大的提高了系统的安全性
● 使用用户程序具有可移植性
操作系统提供的API和系统调用的关系
应用编程接口(application program interace,API)和系统调用是不同的
● API只是一个函数定义
● 系统调用通过软中断向内核发生一个明确的请求
Libc库定义的一些API引用了封装例程(wrapper routine,唯一目的就是发布系统调用)
● 一般每个系统调用对应一个封装例程
● 库再用这些例程定义出给用户的API
不是每个API都对应一个特定的系统调用
● API可能直接提供用户态的服务,如一些数学函数
● 一个单独的API可能调用几个系统调用
● 不同的API可能调用同一个系统调用
返回值
● 大部分封装例程返回一个整数,其值的含义依赖于相应的系统调用
● -1在大多数的情况下表示内核不能满足进程的请求
● Libc中定义的errno变量包含特定的出错码
二 系统调用的执行