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