库函数与系统调用的联系与区别
系统 区别 调用 联系 库函数
2023-09-11 14:18:45 时间
一. 概念
系统调用(英语:system call),指运行在用户空间的应用程序向操作系统内核请求某些服务的调用过程。 系统调用提供了用户程序与操作系统之间的接口。一般来说,系统调用都在内核态执行。由于系统调用不考虑平台差异性,由内核直接提供,因而移植性较差(几乎无移植性)。
库函数(library function),是由用户或组织自己开发的,具有一定功能的函数集合,一般具有较好平台移植性,通过库文件(静态库或动态库)向程序员提供功能性调用。程序员无需关心平台差异,由库来屏蔽平台差异性。
二,区别
调用※函数库调用 VS 系统
函数库调用 |
系统调用 |
平台移植性好 |
依赖于内核,不保证移植性 |
调用函数库中的一段程序(或函数) |
调用系统内核的服务 |
一个普通功能函数的调用 |
是操作系统的一个入口点 |
在用户空间执行 |
在内核空间执行 |
它的运行时间属于“用户时间” |
它的运行时间属于“系统”时间 |
属于过程调用,调用开销较小 |
在用户空间和内核上下文环境间切换,开销较大 |
库函数数量较多 |
UNIX中大约有90个系统调用,较少 |
典型的C函数库调用:printf scanf malloc |
典型的系统调用:fork open write |
三. 联系
一般而言,跟内核功能与操作系统特性紧密相关的服务,由系统调用提供;
具有共通特性的功能一般需要较好的平台移植性,故而由库函数提供。
库函数与系统调用在功能上相互补充,如进程间通信资源的管理,进程控制等功能与平台特性和内核息息相关,必须由系统调用来实现。
文件 I/O操作等各平台都具有的共通功能一般采用库函数,也便于跨平台移植。
某些情况下,库函数与系统调用也有交集,
如 库函数中的I/O操作的内部实现依然需要调用系统的I/O方能实现。
相关文章
- linux系统中如何进入退出vim编辑器,方法及区别
- 『2021语言与智能技术竞赛』-机器阅读理解任务基线系统详解
- 产品功能测试与系统测试有什么区别
- 单片机的时钟,系统时钟
- 2021年春季学期-信号与系统-第十一次作业参考答案-第六小题
- 系统架构演变:SOA、微服务架构的区别和联系
- 详解Linux与Unix系统的区别与联系
- Qubes:为安全而生的开源系统
- 【软件测试】v模型中的单元测试、集成测试、系统测试有什么区别
- Qt编写安防视频监控系统68-兼容Qt4到Qt6
- 库函数调用和系统调用的区别
- 日处理数据量超10亿:友信金服基于Flink构建实时用户画像系统的实践
- OA系统:规避选型误区
- Linux 系统的磁盘设备_【all】
- 【系统设计】本地生活之附近商家 LBS 服务实现
- Linux系统如何解压rar文件
- 【跟我一起学Unity3D】做一个2D的90坦克大战之AI系统
- 信号与系统——傅里叶变换、拉普拉斯变换、Z变换联系与区别以及工程应用(二)
- Unity UI系统-NGUI-AtlasMaker
- Linux系统小技巧(4):环境变量JAVA_TOOL_OPTIONS简介
- 高清网络监控系统施工中,一定要注意的事项