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

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

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

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

库函数:

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

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

 linux文件操作笔记(1)——系统调用、库函数_第1张图片


你可能感兴趣的:(linux文件操作笔记(1)——系统调用、库函数)