Linux系统调用(一)——API和系统调用
时间:2010-12-01 来源:ws00871112
封装和接口是计算机世界最普遍的特色。系统通过封装,屏蔽了底层具体的实现细节,用户只需要知道系统提供的接口就可以方便的使用系统。Linux系统调用就是这么一个活生生的例子。通过系统调用,用户间接地访问到系统硬件和操作系统资源。这样,用户可以不管复杂的底层操作,而内核也通过这种方式有效地保证了自己的安全。
1、API(应用程序接口): API就是我们上面说到的接口,它展示了所有操作系统能实现的功能,并提供给应用程序。Linux系统的API遵循POSIX(可移植操作系统接口)。POSIX是IEEE制定的定义类UNIX操作系统API的标准。 每个API函数的实现可能由一个系统调用实现,也可以由多个系统调用实现,当然,也可以不使用系统调用。 2、系统调用:
系统调用是内核给用户提供的接口,通常以C函数库的方式提供。而且,C函数库通常对这些系统调用进行了封装。下图可说明系统调用、应用程序和C库的关系:
1、API(应用程序接口): API就是我们上面说到的接口,它展示了所有操作系统能实现的功能,并提供给应用程序。Linux系统的API遵循POSIX(可移植操作系统接口)。POSIX是IEEE制定的定义类UNIX操作系统API的标准。 每个API函数的实现可能由一个系统调用实现,也可以由多个系统调用实现,当然,也可以不使用系统调用。 2、系统调用:
系统调用是内核给用户提供的接口,通常以C函数库的方式提供。而且,C函数库通常对这些系统调用进行了封装。下图可说明系统调用、应用程序和C库的关系:
API和系统调用并不只是一对一的关系,可以是多对一,也可以是一对多。不过只能是API向下调用,而系统调用不能调用API。例如,一个API函数可以调用多个系统调用,而一个系统调用也可以被多个API函数调用。当然,应用程序也可以直接使用系统调用。