库函数

以下文字翻译自Beginning Linux Programming的小节Library Functions


直接使用底层的 系统调用来输入与输出将面临一个问题,效率很低。为什么?如下:

使用系统调用时,会有性能上的代价。相比普通函数的调用,系统调用的开销大得多,因为,Linux需要从当前的程序代码的运转切换到内核代码的执行。所以,降低使用 系统调用的频率,充分利用每次的 系统调用,是占优的策略。例如,要一次性读取或写入大量的数据,而不是一个一个地来。

当使用系统调用时,硬件会约束读写时的数据块的大小。例如,磁盘驱动器对每次读写的约束是10k,所以,每当你写的数据不足10k时,下次再写入会从下一个10k的数据块开始写入,导致浪费了一段空间。

每个Linux的发行版(以及UNIX)都会提供一些标准库,来提供一些高层(higher-level)接口用于设备和硬件文件。

这是一系列可以被你的程序include的方法。一个很好的例子就是,标准的I/O库——提供了有缓冲的输出。你可以高效地写入不同大小的数据块,库函数会在数据块达到指定大小的时候使用底层的 系统调用。这有效地避免了过度调用。

库函数在用户手册(manual page)第三节中有详细文档,并且有标准的include文件,例如用于标准的I/O库的stdio.h。

以下的图,展示了与用户、设备驱动、内核以及硬件相关的函数文件所存在的位置。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值