打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

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

简单说,库函数(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函数库中的程序通过系统调用来实现功能。

ref:

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

-End-

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
posix是什么都不知道,还好意思说你懂Linux?
对man文件的综述--系统调用和库函数的关系
读《程序员的自我修养 —— 库与运行库》乱摘
快速编程基础知识词典之操作系统篇(一)
UNIX概述
Windows句柄与内核
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服