Linux文件IO编程——系统调用及用户编程接口(API)

2019-07-12 14:44发布

1.系统调用        所谓系统调用指操作系统提供给用户程序调用的一组“特殊”接口,用户程序可以通过这组“特殊”接口来获得操作系统内核提供的服务。例如用户可以通过进程控制相关的系统调用来创建进程、实现进程调度、进程管理等。        Linux为了更好地保护内核空间,将程序的运行空间分为内核空间和用户空间(也就是常称的内核态和用户态),它们分别运行在不同的级别上,在逻辑上是相互隔离的。因此,用户进程只能在用户空间操作用户数据,调用用户空间的函数。但是在某些情况下,用户空间程序需要调用内核空间的函数,这是必须利用系统提供给用户的“特殊”接口——系统调用。       系统调用可分为进程控制、进程间通信、文件系统控制、系统控制、存储管理、网络管理、socket控制、用户管理等几类。 2.用户编程接口(API)       前面讲到的系统调用并不是直接与程序员进行交互,而是通过软中断机制向内核提交请求,以获取内核服务的接口。在实际使用中程序员调用的通常是用户编程接口——API。但并不是所有的函数都一一对应一个系统调用,有时一个函数需要几个系统调用来共同完成函数的功能,甚至还有一些API函数不需要调用相应的系统调用(因此它所完成的不是内核提供的服务)。 3.系统调用和用户编程接口(API)的关系       用户编程接口处于用户空间,系统调用处于内核空间,它们的关系有一对一、一对n或一对0 。