linux文件操作笔记(1)——系统调用、库函数

系统调用和设备驱动程序:

只需少量的函数就可以对文件和设备进行访问和控制。这些函数成为 系统调用。由linux直接提供,它们是通向操作系统的接口。
操作系统的核心部分,即内核,是一组 设备驱动程序。它们是一组对系统硬件进行控制的底层接口。
为了向用户提供一个一致的接口,设备驱动程序封装了所有与硬件相关的特性。硬件的特有功能可通过ioctl系统调用来提供。所以/dev目录中的设备驱动文件用法都是相同的。都可以被打开、关闭、读、写。下面是用于访问设备驱动程序的底层函数(系统调用)。

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

库函数:

针对输入输出操作使用底层系统调用效率非常低,因为
  • 使用系统调用会影响系统性能。因为在执行系统调用时,linux必须从运行用户代码切换到执行内核代码,然后再返回用户代码。
  • 硬件会限制对底层调用一次所能读写的数据块大小。例如,磁带通常每次读写数据块长度为10K,如果试图写的数据量不是10K的整数倍,磁带机会以10K为单位卷绕磁带,从而留下空隙。
为了给设备和磁盘文件提供更高层的接口,linux发行版提供了一系列的标准函数库。比如提供输出缓冲功能的标准I/O库。你可以高效地写任意长度的数据块,库函数则在数据满足数据块长度要求时安排执行底层系统调用。极大降低了系统调用的开销。

它们之间关系可以用下图表示:

 


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值