C标准库,系统调用,系统接口API,内核函数

虽是转载,但也有自己的一些总结或看法或疑问。aaron注:所以总结一下,是否能这么认为:不管是无平台差异的C标准库还是与系统平台有关的API,其实都有对系统调用的封装,都是一个屏蔽系统底层复杂度或差异的一个中间层。

=================分界线========================================

一、用户空间:

1)C标准库:是适用于所有c语言编写的程序,没有平台差异性。

                 在用户空间程序员可以直接调用的。

                 用C语言和汇编语言实现的。

                 有的库函数封装系统调用函数(调用库函数就可以间接调用系统调用)。

2)系统API(以库的形式提供): 具有平台差异性,比如windowsAPI 就不能在Linux平台上使用

                  它是操作系统提供给用户的接口,可以让用户直接使用操作系统的某个服务。

                 一个API可能调用了一个系统调用,也可能对应好几个系统调用

二、内核空间:

 1)系统调用:由内核提供给用户的接口,使用户可以对内核做操作。

                 但是需要进入内核态,才能调用。

系统调用是用户进程进入内核的接口层,它本身并非内核函数,但他是由内核函数实现的,进入系统内核后,不同的系统调用会找到各自对应的内核函数,这写内核函数被称为系统调用的“服务例程”。也可以说系统调用是服务例程的封装例程。

2)内核函数:实现内核功能的函数

C标准库,系统调用,系统接口API,内核函数