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