13.8 总结
2016-04-13 22:37
232 查看
13.8 总结
输入输出数据的缓冲由内核和stdio库完成。有时可能希望阻止缓冲,但这需要了解其对应用程序性能的影响。可以使用各种系统调用和库函数来控制内核和stdio 缓冲,并执行一次性的缓冲区刷新。
进程使用posix_fadvise()函数,可就进程对特定文件可能采取的数据访问模式向内核提出建议。内核可籍此来优化对缓冲区高速缓存的应用,进而提高I/O性能。
在Linux环境下,open()所特有的O_DIRECT标识允许特定应用跳过缓冲区高速缓存。
在对同一个文件执行I/O操作时,fileno()和fdopen()有助于系统调用和标准C语言库函数的混合使用。给定一个流,fileno()将返回相应的文件描述符,fdopen()则反其道而行之,针对指定的打开文件描述符创建一个新的流。
补充信息
[Bach,1986]描述了System V中缓冲区高速缓存的实现和优势。[Goodheart & Cox,1994]和[Vahalia,1996]也描述了System V缓冲区高速缓存的基本原理和实现。更多关于Linux环境下的相关信息参见[Bovet & Cesati,2005] 和 [Love,2010]。
输入输出数据的缓冲由内核和stdio库完成。有时可能希望阻止缓冲,但这需要了解其对应用程序性能的影响。可以使用各种系统调用和库函数来控制内核和stdio 缓冲,并执行一次性的缓冲区刷新。
进程使用posix_fadvise()函数,可就进程对特定文件可能采取的数据访问模式向内核提出建议。内核可籍此来优化对缓冲区高速缓存的应用,进而提高I/O性能。
在Linux环境下,open()所特有的O_DIRECT标识允许特定应用跳过缓冲区高速缓存。
在对同一个文件执行I/O操作时,fileno()和fdopen()有助于系统调用和标准C语言库函数的混合使用。给定一个流,fileno()将返回相应的文件描述符,fdopen()则反其道而行之,针对指定的打开文件描述符创建一个新的流。
补充信息
[Bach,1986]描述了System V中缓冲区高速缓存的实现和优势。[Goodheart & Cox,1994]和[Vahalia,1996]也描述了System V缓冲区高速缓存的基本原理和实现。更多关于Linux环境下的相关信息参见[Bovet & Cesati,2005] 和 [Love,2010]。
相关文章推荐
- Android温故之-BroadcastReceiver
- nyoj 66
- 【C++】迭代器的失效
- java编程思想第四版-嵌套类
- 单例饿汉式和饱汉式各自的有缺点
- Can not perform this action after onSaveInstanceStat的一些思考
- AngularJs学习——实现列表内容项的增加删除
- Java进程、线程
- Ubuntu14.04安装wineqq国际版
- SSH 实现无密码登录
- 调试Javascript代码
- Unity圣典
- SpringMVC详细示例实战教程
- DedeCMS group.php SQL注入漏洞
- 淘宝内部分享:怎么跳出MySQL的10个大坑(上)
- 13.7 混合使用库函数和系统调用进行文件I/O
- 13.6 绕过缓冲区高速缓存:直接I/O
- 第3周 C语言及程序设计初步例程-40 穷举法解题
- ****创业者必看:黄太吉商业计划书完整版
- The Linux Storage Stack Diagram 内核 4.0 版的 I/O 栈