库函数和系统调用的区别
来源:互联网 发布:萨拉戈萨大学 知乎 编辑:程序博客网 时间:2024/05/29 07:42
库函数是语言本身的一部分,而系统函数是内核提供给应用程序的接口,属于系统的一部分。
函数库调用是语言或应用程序的一部分,而系统调用是操作系统的一部分。
用户应用程序访问并使用内核所提供的各种服务的途径即是系统调用。在内核和用户应用程序相交界的地方,内核提供了一组系统调用接口,通过这组接口,应用程序可以访问系统硬件和各种操作系统资源。
1.系统调用是为了方便应用使用操作系统的接口,而库函数是为了方便人们编写应用程序而引出的,比如你自己编写一个函数其实也可以说就是一个库函数。
2.系统调用可以理解为内核提供给我们在用户态用的接口函数,可以认为是某种内核的库函数。
3.read就是系统调用,而fread就是C标准库函数.
※函数库调用 VS 系统调用
函数库调用
系统调用
在所有的ANSI C编译器版本中,C库函数是相同的
各个操作系统的系统调用是不同的
它调用函数库中的一段程序(或函数)
它调用系统内核的服务
与用户程序相联系
是操作系统的一个入口点
在用户地址空间执行
在内核地址空间执行
它的运行时间属于“用户时间”
它的运行时间属于“系统”时间
属于过程调用,调用开销较小
需要在用户空间和内核上下文环境间切换,开销较大
在C函数库libc中有大约300个函数
在UNIX中大约有90个系统调用
典型的C函数库调用:system fprintf malloc
典型的系统调用:chdir fork write brk;
库函数调用通常比行内展开的代码慢,因为它需要付出函数调用的开销。但系统调用比库函数调用还要慢很多,因为它需要把上下文环境切换到内核模式。
系统调用通过软中断int 0x80从用户态进入内核态。
函数库中的某些函数调用了系统调用。
函数库中的函数可以没有调用系统调用,也可以调用多个系统调用。
编程人员可以通过函数库调用系统调用。
高级编程也可以直接采用int 0x80进入系统调用,而不必通过函数库作为中介。
如果是在核心编程,也可以通过int 0x80进入系统调用,此时不能使用函数库。因为函数库中的函数是内核访问不到的。
2.
1)
2)
3)
- 库函数调用和系统调用的区别
- 库函数调用和系统调用的区别
- 系统调用和库函数调用的区别
- 库函数调用和系统调用的区别
- 库函数调用和系统调用的区别
- 库函数调用和系统调用的区别
- 库函数调用和系统调用的区别
- 系统调用和库函数调用的区别
- 库函数调用和系统调用的区别
- 库函数调用和系统调用的区别
- 库函数调用和系统调用的区别
- 库函数调用和系统调用的区别
- 库函数调用和系统调用的区别
- 系统调用和库函数调用的区别
- 库函数调用和系统调用的区别
- 系统调用和库函数调用的区别
- 系统调用和库函数调用的区别
- 系统调用和库函数调用的区别
- launcher 壁纸与功能表背景一致,功能表背景透明
- html5 file api to preview image
- 1008:ASCII码
- MySQL创建用户带SSL认证,并且有SUBJECT和ISSUER的时候,报错[Note] X509 subject mismatch:
- 嵌入式系统用户接口设计之裸机界面开发(二)
- 库函数和系统调用的区别
- c++中什么类型的成员变量只能在构造函数的初始化列表中进行
- 高性能前端开发-Web性能测试工具推荐
- c++ vector容器和iterator迭代器
- 导入excel错误:外部表不是预期的格式 解决方案
- Android延时执行的几种方法
- 自动化测试框架比较
- centos 解压 tar命令
- Android 多Activity之间跳转传值