Linux API和c运行时库等关系

来源:互联网 发布:游戏编程精粹那本好 编辑:程序博客网 时间:2024/05/21 18:46

1.系统调用与POSIX

系统调用是用户应用程序访问并使用内核所提供的各种服务的途径。

但通常情况下,应用程序不是直接通过系统调用来编程,而是通过操作系统提供的编程接口(API)。

操作系统API的主要作用是把操作系统的功能打包并更好的展示出来,供应用程序使用,功能包括,与文件

内存、时钟、网络、图形、各种外设等互操作的能力。

除此之外,API还提供许多工具类的功能,比如操纵字符串、各种数据类型、时间日期等。

 

在UNIX世界里,较常用的系统API是基于POSIX(portable operating systemn interface of unix)标准的。

在UNIX的发展历程中,很多公司都推出了不桶的版本的unix系统。他们的API各不相同。这给软件的移植带来了很大的困难。

为了解决这个问题,IEEE制定了POSIX标准。从而提高UNIX环境下应用程序的可移植性。同时,POSIX也不是UNIX专有的。

比如MICROSOFT NT也支持posix(WinXP需要安装个插件才能使用。)

Linux兼容于POSIX标准,提供了相关的API函数。这些API函数与系统调用之间有着错综复杂的关系。

可以是一对一,可以使一对多,也可以是不使用系统调用。

我们可知POSIX是对系统调用的封装。但不限于系统调用。

2.操作系统API通常以C库的方式提供。C库提供了POSIX的绝大部分的API,同时,内核提供的每个系统调用在C库中都具有相应的封装函数。

系统调用和C库函数并不是一对一的关系。可一是多对一,一对多。或者是不调用,因为这些不需要向内核请求任何服务

C库使得系统调用透明化,用户只考虑C库即可。同样,内核看不到用户的请求。

3.系统调用和内核函数

内核函数在内核内实现,遵守内核编程的规则。

原创粉丝点击