当前位置:嗨网首页>书籍在线阅读

31-结束语

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

4.7 结束语

通过以上3章,我们已经了解了Linux系统上文件I/O的方方面面。在第2章,我们学习了基础的Linux文件I/O的基础(实际上也是UNIX编程的基础),如read()、write()、open()、close()等。在第3章,我们讨论了用户空间的缓冲和C标准库的实现。在这一章,我们讨论了种种高级I/O问题,从“更有效更复杂”的I/O系统调用到优化技术以及导致性能严重下降的磁盘寻址操作。

在接下来的两章,我们将学习进程管理:创建、销毁和管理进程。一起继续前进!

[1] 译注:一个段(segment)即一个iovec结构体。

[2] 注意,在其他UNIX系统中,当count值为0时,可能将errno值设置为EINVAL。POSIX标准明确指出,如果count为0,可以设置为EINVAL或者由系统做专门处理。

[3] epoll是在2.5.44开发版内核中加入,该接口最终在2.5.66版本中完成。它是Linux专有的。

[4]“写时复制(Copy-on-write)”这个概念和进程创建相关,在5.3.2小节中会描述更多。

[5] 译注:synchronized与synchronous一般都译为同步,在本节后面,为了避免都翻译为“同步”造成的混淆,有些synchronized和synchronous会直接用原文英语表达方式或翻译后给出原文,两种方式都是为了使阅读更流畅。

[6] 从技术角度看,读操作和写操作类似,都是非同步的(nonsynchronized),但是内核保证页缓冲包含最新的数据。也就是说,页缓冲中的数据总是和磁盘上的数据一样或者更新一些。因此,实际上操作都是同步的。也没有人提出要采用别的方式。

[7] 对块绝对数量的限制很大程度上导致了近年来在磁盘容量上的各种限制。

[8] Linus以他自己的名字命名了这个调度器。这种算法因为和解决电梯平滑运行的问题类似,所以也称为电梯算法。

[9] 下面的文字讨论当前CFQ I/O调度器的实现。之前的孵化原型没有使用时间片或启发式预测,但工作方式类似。

[10] 只能将这种技术应用于I/O操作频繁的应用或者关键应用上。对I/O请求很少的应用则没必要对I/O操作进行排序。