免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 788 | 回复: 0
打印 上一主题 下一主题

Linux 程序设计入门》 第四版 §3 文件处理 §3.3 库函数 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-11-19 15:32 |只看该作者 |倒序浏览


在输入输出操作中,直接使用底层系统调用的问题是它们的效率非常低。为什么呢?
􀂉 系统调用会影响系统的性能。与函数调用相比,系统调用的开销要大些,因为在执行系统调用时,Linux必须从用户代码切换到内核代码运行,然后再返回用户代码。减少这种开销的一个好方法是,在程序中尽量减少系统调用的次数,并且让每次系统调用完成尽可能多的工作。例如每次读写大量的数据而不是每次仅读写一个字符。
􀂉 硬件会对底层系统调用一次所能读写的数据块做出一定的限制。例如,磁带机通常的写操作数据块长度是10k,所以如果所写的数据量不是10k的整数倍,磁带机还是会以10k为单位卷绕磁带,这就在磁带上留下了空隙。
为了给设备和磁盘文件提供更高层的接口,与UNIX一样,Linux发行版提供了一系列的标准函数库。它们是一些由函数构成的集合,你可以把它们包括在自己的程序中去处理那些与设备和文件有关的问题。提供输出缓冲功能的标准I/O库就是一个这样的例子。你可以高效地写任意长度的数据块,库函数则在数据满足数据块长度要求时安排执行底层系统调用。这就极大降低了系统调用的负面影响。
库函数的文档一般被放在使用手册的第三小节,并且往往会有一个与之对应的标准头文件,例如
与标准I/O库对应的头文件是stdio.h。
图3-2是对前面几小节讨论的总结,它显示了Linux系统中各种文件函数与用户、设备驱动程序、内核和硬件之间的关系。
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/21908/showart_1424034.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP