【正确答案】库函数调用是语言或应用程序的一部分,它是高层的,完全运行在用户空间,为程序员提供调用真正的在幕后完成实际事务的系统调用接口。而系统函数是内核提供给应用程序的接口,属于系统的一部分。函数库调用是语言或应用程序的一部分,而系统调用是操作系统的一部分。
库函数调用与系统调用的区别见下表。
| 库函数调用与系统调用的区别
|
| 库函数调用
|
系统调用
|
| 在所有的ANSIC编译器版本中,C语言库函数是相同的
|
各个操作系统的系统调用是不同的
|
| 它调用函数库中的一段程序(或函数)
|
它调用系统内核的服务
|
| 与用户程序相联系
|
是操作系统的一个入口点
|
| 在用户地址空间执行
|
在内核地址空间执行
|
| 它的运行时间属于“用户时间”
|
它的运行属于“系统时间”
|
| 属于过程调用,调用开销较小
|
需要在用户空间和内核上下文环境间切换,开销较大
|
| 在C函数库libc中有大约300个函数
|
在Unix中有大约90个系统调用
|
| 典型的C函数库调用:system、fprintf和malloc等
|
典型的系统调用:chdir、fork、write和brk等
|
库函数调用通常比行内展开的代码慢,因为它需要付出函数调用的时间耗费。但系统调用比库函数调用还要慢很多,因为它需要把上下文环境切换到内核模式。