文件操作接口一:(系统调用与库函数)

本文详细解析了系统调用与库函数的区别,包括它们的定义、运行位置、执行效率及相互关系。系统调用作为用户程序和硬件设备间的桥梁,直接调用内核接口;而库函数则封装了系统调用,提高了代码的可读性和可移植性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 系统调用与库函数区别

在这里插入图片描述

2.

2.1 系统调用(SCI)定义:

系统调用就是用户程序和硬件设备之间的桥梁
用户程序在需要的时候,通过系统调用来使用硬件设备

进程直接调用内核暴露出来的的接口的方式称为系统调用
系统调用SCI(system-call interface)

2.2.库函数定义:

调用将内核暴露出来的接口封装好的函数的方法为库函数的调用
注: 有的库函数不需要封装内核暴露出来的接口

3.运行位置

库函数:在用户态调用,在用户态执行
系统调用函数:在用户态调用,在内核态执行

4.执行效率

当处理的数据量比较小时,函数库的函数执行效率比较好
因为函数库的函数的作法是将要处理的数据先存入缓冲区内,等到缓冲区装满了,再将数据一次写入或者读出。这种方式处理小量数据时效率比较高。
但是在进行系统调用时,因为用户进程从用户模式进入系统内核模式,中间涉及了许多额外的任务的切换工作,这些操作称为上下文切换,此类的额外工作会影响系统的执行效率。

5.系统函数和库函数的关系

系统调用通常是用于底层文件的访问
例如在驱动程序中对设备文件的直接访问,如open read write seek等

库函数是对系统调用的一层封装
因此在用库函数对文件操作的时候,必然会引起系统调用。也就是说,库函数调用实际上是通过系统调用实现的
例如:C库函数fwrite()就是通过write实现的。

6.用户态切换内核态

1、调用系统调用函数 → 软中断
2、缺页异常 → 硬中断

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值