这篇文章主要介绍了C/C++函数库调用与系统调用的区别有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
函数库调用是语言或应用程序的一部分,而系统调用是操作系统的一部分。
系统调用是在操作系统内核发现的一个“trap”或中断后进行的。
函数库调用vs.系统调用
函数库调用 | 系统调用 |
---|---|
在所有的ANSI C编译器版本中,C函数库是相同的 | 各个操作系统的系统调用是不同的 |
它调用函数库中的一个程序 | 它调用系统内核的服务 |
与用户程序相联系 | 是操作系统的一个进入点 |
在用户地址空间执行 | 在内核地址空间执行 |
它的运行时间属于“用户”时间 | 它的运行时间属于“系统”时间 |
属于过程调用,开销较小 | 需要在切换到内核上下文环境然后切换回来,开销较大 |
在C函数库libc中有大约300个程序 | 在UNIx中有大约90个系统调用(MS-DOS中少一些) |
记录于UNIX OS手册的第三节 | 记录于UNIX OS手册的第二节 |
典型的C函数库调用:system,fprintf,malloc | 典型的系统调用:chidr,fork,write,brk |
库函数调用通常比行内展开的代码慢,因为它需要付出函数调用的开销。但系统调用比库函数调用还要慢很多,因为它需要把上下文环境切换到内核模式。在SPARC工作站上,对一个库函数调用进行记时,结果大约是半微秒。系统调用所需要的时间大约是库函数调用的70倍(35微秒)。纯粹从性能上考虑,你应该尽可能地减少系统调用的数量。但是,许多C函数库中的程序通过系统调用来实现功能。
感谢你能够认真阅读完这篇文章,希望小编分享的“C/C++函数库调用与系统调用的区别有哪些”这篇文章对大家有帮助,同时也希望大家多多支持亿速云,关注亿速云行业资讯频道,更多相关知识等着你来学习!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。