对于开发者来说,I/O是绕不过去的一个基本问题。从文件I/O到网络I/O,存在着各式各样的概念和I/O模型。深入了解l这些I/O的原理才可以从深层次的角度去做系统优化。
1.1 缓冲I/O和直接I/O
表1-1列出了缓冲I/O与直接I/O对应的API接口列表,缓冲I/O是C语言提供的库函数,均以f打头:直接I/O是Linux的系统API,但因为操作系统的API也是用C语言编写的,所以导致开发者往无法区分这两类I/O,但在原理上实际差异很大。
表1-1 缓冲I/O与直接I/O对应的API接口列表
类型 |
对应API接口 |
缓冲I/O |
C语言函数库: |
直接I/O |
Linux系统API: |