C|库函数调用和系统调用区别何在

C|库函数调用和系统调用区别何在简单说 库函数 library function 调用是语言或应用程序的一部分 而系统 API 调用是操作系统的一部分 系统调用是在操作系统内核发现一个 trap 自陷 或中断后进行的 毫无疑问 两者都是用相同的编程语言编写的

欢迎大家来到IT世界,在知识的湖畔探索吧!

简单说,库函数(library function)调用是语言或应用程序的一部分,而系统API调用是操作系统的一部分,系统调用是在操作系统内核发现一个“trap(自陷)”或中断后进行的。毫无疑问,两者都是用相同的编程语言编写的。

库函数调用

系统API调用

在所有的ANSI C编译器版本中,C函数库是相同的

各个操作系统的系统调用是不同的

调用的是函数库中的一个程序

调用的是系统内核的服务

与用户程序相联系

是操作系统的一个进入点

在用户地址空间执行

在内核地址空间执行

它的运行时间属于“用户”时间

它的运行时间属于“系统”时间

属于过程调用,

开销较小

需要切换到内核上下文环境然后切换回来,开销较大

在C函数库libc中有大约300个程序

在UNIX中有大约90个系统调用

典型的C函数库调用:

system, fprintf,malloc

典型的系统调用:

chdir, fork, write,brk

用文件指针(file pointer)来标识文件

用文件描述符(file descriptor)来标识文件

库函数调用通常比行内展开的代码(也就是inline函数)慢,因为它需要付出函数调用的开销。但系统调用比库函数调用还要慢很多,因为它需要把上下文环境切换到内核模式。在SPARC工作站上,一个库函数调用大约是半微秒。系统调用所需要的时间大约是库函数调用的70倍(35微秒)。纯粹从性能上考虑,你应该尽可能地减少系统调用的数量。但是,你必须记住,很多C函数库中的程序通过系统调用来实现功能。

C|库函数调用和系统调用区别何在

欢迎大家来到IT世界,在知识的湖畔探索吧!

ref:

Perter Van Der Linden《Expert C Programming Deep C Secrets》

-End-

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/112372.html

(0)
上一篇 3天前
下一篇 3天前

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们YX

mu99908888

在线咨询: 微信交谈

邮件:itzsgw@126.com

工作时间:时刻准备着!

关注微信