系统调用提供了用户程序与操作系统之间的接口。
函数库调用是语言或应用程序的一部分,而系统调用是操作系统的一部分。
库函数是语言本身的一部分,而系统函数是内核提供给应用程序的接口,属于系统的一部分。
1.系统调用是为了方便应用使用操作系统的接口,而库函数是为了方便人们编写应用程序而引出的,比如你自己编写一个函数其实也可以说就是一个库函数。
2.系统调用可以理解为内核提供给我们在用户态用的接口函数,可以认为是某种内核的库函数。
3.read就是系统调用,而fread就是C标准库函数.
区别:
函数库调用 | 系统调用 |
平台移植性好 | 依赖于内核,不保证移植性 |
调用函数库中的一段程序(或函数) | 调用系统内核的服务 |
一个普通功能函数的调用 | 是操作系统的一个入口点 |
在用户空间执行 | 在内核空间执行 |
它的运行时间属于“用户时间” | 它的运行时间属于“系统”时间 |
属于过程调用,调用开销较小 | 在用户空间和内核上下文环境间切换,开销较大 |
库函数数量较多 | UNIX中大约有90个系统调用,较少 |
典型的C函数库调用:printf scanf malloc | 典型的系统调用:fork open write |