系统调用和库函数的区别

一.系统调用
所有的操作系统都提供多种服务的入口点,程序由此向内核请求服务。这些可直接进入内核的入口点被称为系统调用。
逻辑上系统调用可以被看做是一个内核与用户程序空间程序的接口。

它的执行流程就是把用户进程的请求传递给内核,待内核处理完毕后将处理结果返回给用户空间。

下面适用于访问设备驱动程序的系统调用:

open:打开文件或设备
read:从打开的文件和设备中读取数据
write:向打开的文件或设备中写入数据
close:关闭文件和设备
ioctl:把控制信息传递给设备驱动文件

二.库函数
用户或组织自己开发的,具有一定功能的函数集合,一般具有较好平台移植性,通过库文件(静态库或者动态库)向程序员提供功能性调用。程序员无需关心平台差异,由库来屏蔽平台差异性。

三.差异性
调用※函数库调用 VS 系统
函数库调用 系统调用
平台移植性好 依赖于内核,不能保证移植性
调用函数库中的一段程序(或函数) 调用系统内核的服务
一个普通功能函数的调用 是操作系统的一个入口点
在用户空间执行 在内核空间执行
它的运行时间属于“用户时间” 它的运行时间属于“系统”时间
属于过程调用,调用开销较小 在用户空间和内核上下文环境间切换,开销较大
库函数数量较多 UNIX中大约有90个系统调用,较少

四.联系
一般而言,跟内核功能与操作系统特性紧密相关的服务,由系统调用提供;
具有共通性的动能一般需要较好的平台移植性,故而由库函数提供。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值