库函数是语言本身的一部分,而系统函数是内核提供给应用程序的接口,属于系统的一部分
函数调用是语言或者应用程序的一部分,而系统调用是操作系统的一部分
用户应用程序访问并使用内核所提供的各种服务的tuji途径即是系统调用,在内核和用户应用程序相交的地方,内核提供了一组系统调用的接口,通过这组接口,应用程序可以访问系统硬件和操作系统资源
- 系统调用是为了方便应用使用操作系统的接口,而库函数是为了方便人们编写应用程序而引出的,比如你自己编写一个函数其实也可以说是一个kuha库函数
- 系统调用可以理解为内核提供给我们在用户态的接口函数,可以认为是mo某种内核的库函数
- read就是库函数,fread就是C标准库函数
函数库调用 | 系统调用 |
---|---|
在所用的ANSI C编译器版本中,C库函数是相同的 | 各个操作系统的系统调用是不同的 |
他调用库函数中一段程序(或者函数) | 他调用系统内核的服务 |
与应用程序相连接 | 是操作系统的一个入口点 |
在用户地址空间执行 | 在内核地址空间执行 |
他的运行时间属于用户时间 | 他的运行时间属于内核时间 |
属于过程调用,开销较小 | 需要在用户空间和内核上下文环境切换,开销较大 |
典型的C库函数调用:system,malloc | 典型的系统调用:fork,write |
库函数调用通常比行内代码慢,因为他需要付出函数调用的开销。但系统调用比库函数调用还要慢的多,因为他需要把上下文环境切换到内核模式