C/C++函数库调用和系统调用的区别

    函数库调用是语言或应用程序的一部分,而系统调用是操做系统的一部分。函数

    系统调用是在操做系统内核发现的一个“trap”或中断后进行的。性能

函数库调用vs.系统调用
函数库调用 系统调用
在全部的ANSI C编译器版本中,C函数库是相同的 各个操做系统的系统调用是不一样的
它调用函数库中的一个程序 它调用系统内核的服务
与用户程序相联系 是操做系统的一个进入点
在用户地址空间执行 在内核地址空间执行
它的运行时间属于“用户”时间 它的运行时间属于“系统”时间
属于过程调用,开销较小 须要在切换到内核上下文环境而后切换回来,开销较大
在C函数库libc中有大约300个程序 在UNIx中有大约90个系统调用(MS-DOS中少一些)
记录于UNIX OS手册的第三节

记录于UNIX OS手册的第二节spa

典型的C函数库调用:system,fprintf,malloc 典型的系统调用:chidr,fork,write,brk

 

     库函数调用一般比行内展开的代码慢,由于它须要付出函数调用的开销。但系统调用比库函数调用还要慢不少,由于它须要把上下文环境切换到内核模式。在SPARC工做站上,对一个库函数调用进行记时,结果大约是半微秒。系统调用所须要的时间大约是库函数调用的70倍(35微秒)。纯粹从性能上考虑,你应该尽量地减小系统调用的数量。可是,许多C函数库中的程序经过系统调用来实现功能。操作系统

 

摘自:《C语言专家》ci

相关文章
相关标签/搜索