第3章:缓冲I/O
来源:互联网 发布:mac如何禁止开机启动 编辑:程序博客网 时间:2024/05/31 11:03
- 1. 在内核中,所有的文件系统操作都是基于块来执行的。实际上,块是I/O中的基本概念。因此,所有I/O操作都是在块大小或者块大小的整数倍上执行。也就是说,也许你只想读取一个字节,实际上需要读取整个块。额外的系统调用所带来的开销会导致操作性能急剧下降。例如,要读取1024个字节,如果每次读一个字节需要执行1024次调用,而如果一个读取1024字节的块则只需要调用一次。对于前一种,提升性能的途径是“用户缓冲I/O”(user-buffered I/O),通过缓冲I/O,从用户角度,读写数据并没有任何变化,而实际上,只有当数据量大小达到文件系统块大小整数倍时,才会执行真正的I/O操作。
- 2. 实际应用中,块大小一般是512字节、1024字节、2048字节或4096字节。内核和硬件之间的交互单元是块。标准I/O程序集并不是直接操作文件描述符。相反,他们通过唯一标识发,即文件指针来操作。在标准I/O中,打开的文件成为“流“(stream)。
- 3. 标准I/O实现了三种类型的用户缓冲:
- 无缓冲(Unbuffered)
- 不执行用户缓冲。数据直接提交给内核,不支持用户缓冲,通常很少使用,只有一个例外:标准错误默认是采用无缓冲模式。
- 行缓冲(Line-buffered)
- 缓冲是以行单位执行,每遇到换行符,缓冲区就会被提交到内核。行缓冲是终端的默认缓冲模式,比如标准输出。
- 块缓冲(Block-buffered)
- 缓冲以块单位执行,每个块是固定的字节数。默认情况下,和文件相关的所有流都是块缓冲模式。标准I/O称块缓冲为”完全缓冲“(full buffering)。
0 0
- 第3章:缓冲I/O
- Linux系统编程第13章-文件I/O缓冲
- I/O缓冲策略
- 标准I/O缓冲
- I/O缓冲
- 标准I/O缓冲
- I/O缓冲
- I/O缓冲
- 基于流的I/O提供以下3种缓冲:全缓冲、行缓冲、无缓冲
- 第3章 文件I/O
- apue 第3章 文件I/O
- 第3章 异步I/O
- 缓冲I/O与直接I/O
- 标准I/O缓冲:全缓冲、行缓冲、无缓冲
- 标准I/O缓冲:全缓冲、行缓冲、无缓冲
- 标准I/O缓冲:全缓冲、行缓冲、无缓冲 .
- 标准I/O缓冲:全缓冲、行缓冲、无缓冲
- I/O缓冲和内核缓冲
- 第11周项目类族的设计
- 2.2 立方数之和 UVa11137
- C/C++面试题集合(2)
- 第十一周课后实践:阅读程序
- 2283156.html
- 第3章:缓冲I/O
- 手机本身可用存储空间和sdcard可用的存储空间
- 汇编学习笔记--查看CPU和内存
- java图片水印和图片缩放
- 重新教自己学算法之循环-递归(二)
- Pat(Advanced Level)Practice--1096(Consecutive Factors)
- spark1
- Python初探
- week13---5月26日(补充 DataTime)