天天看点

库函数和系统调用的区别

库函数是语言本身的一部分,而系统函数是内核提供给应用程序的接口,属于系统的一部分

函数调用是语言或者应用程序的一部分,而系统调用是操作系统的一部分

用户应用程序访问并使用内核所提供的各种服务的tuji途径即是系统调用,在内核和用户应用程序相交的地方,内核提供了一组系统调用的接口,通过这组接口,应用程序可以访问系统硬件和操作系统资源

  1. 系统调用是为了方便应用使用操作系统的接口,而库函数是为了方便人们编写应用程序而引出的,比如你自己编写一个函数其实也可以说是一个kuha库函数
  2. 系统调用可以理解为内核提供给我们在用户态的接口函数,可以认为是mo某种内核的库函数
  3. read就是库函数,fread就是C标准库函数

函数库调用VS系统调用

函数库调用 系统调用
在所用的ANSI   C编译器版本中,C库函数是相同的 各个操作系统的系统调用是不同的
他调用库函数中一段程序(或者函数) 他调用系统内核的服务
与应用程序相连接 是操作系统的一个入口点
在用户地址空间执行 在内核地址空间执行
他的运行时间属于用户时间 他的运行时间属于内核时间
属于过程调用,开销较小 需要在用户空间和内核上下文环境切换,开销较大
典型的C库函数调用:system,malloc 典型的系统调用:fork,write

库函数调用通常比行内代码慢,因为他需要付出函数调用的开销。但系统调用比库函数调用还要慢的多,因为他需要把上下文环境切换到内核模式