缓冲与无缓冲的区别
来源:互联网 发布:ubuntu提取dsdt方法 编辑:程序博客网 时间:2024/04/28 00:19
1.首先无缓存只不过是指在用户层没有缓存,但对于内核来说,还是进行了缓存
2.如果你想要写数据到文件中(即硬盘中),内核先将数据写入到内核中所设的缓冲储存器(write()系统调用),等缓冲器满的时候再真正写到磁盘上
3.带缓冲的IO是在用户层再建立一个缓冲区(流缓冲区),通过减少对系统调用(read() 和 write())的次数来提高性能
例如:用户多次调用fwrite将数据写入流缓冲区,等流缓冲区满的时候再调用一次write(),写入内核缓冲区
4.总结:
无缓冲IO操作数据流向路径:数据->内核缓冲区->磁盘
带缓冲IO操作数据流向路径:数据->流缓冲区->内核缓冲区->磁盘
5.标准IO就是带缓存的IO,提供了三种类型的缓存
全缓存:当填满标准IO缓存后才执行IO操作,磁盘上的文件通常都是全缓存的
行缓存:当输入输出遇到换行符或缓存满时,才执行IO操作,stdin和stdout通常是行缓存的
无缓存:stderr通常是无缓存的,因为它必须尽快输出
是什么样的缓冲跟使用那个函数没有关系,而跟你读写什么类型的文件有关系.
6.带缓存的文件操作时标准C库的实现,第一次调用带缓存的文件操作函数时,标准库会自动非配内存并且读出一段固定大小的内存存储在缓存中。以后每次的读写操作并不是针对硬盘上的文件直接进行的,而是针对内存中的缓存的。
7.不带缓存的文件操作通常都是系统提供的系统调用
8.什么是无缓冲I/O
我们首先要知道Linux操作系统提供给我们的用户程序调用的接口,除了使用库函数,还可以直接使用系统调用。而今天我要介绍的相关函数就是直接调用了内核的系统调用,所以说它是无缓冲的,它跟标准的I/O函数相对应。
- 有缓冲与无缓冲的区别
- 缓冲与无缓冲的区别
- 双缓冲与后备缓冲的区别
- 单缓冲与双缓冲的区别
- 单缓冲与双缓冲的区别
- 无缓冲I/O与有缓冲I/O区别
- golang的缓冲channel和无缓冲channel的区别
- OpenGL单缓冲与双缓冲的区别
- 文件复制缓冲与不缓冲的区别
- OpenGL单缓冲与双缓冲的区别
- OpenGL单缓冲与双缓冲的区别
- C的全缓冲、行缓冲和无缓冲
- 缓存与缓冲的区别与应用
- 缓存与缓冲的区别与联系
- 全缓冲和行缓冲的区别
- 全缓冲和行缓冲的区别
- 无缓冲的文件操作
- 无缓冲的copy实现
- 关于C++类的一些小知识点
- R语言中导入excel乱码的解决办法
- eclipse 搭建WEB应用的MAVEN基本结构
- CF757B: Bash's Big Day(分解质因子)
- 洛谷堆专题 黑匣子
- 缓冲与无缓冲的区别
- 【bzoj1001】[BeiJing2006]狼抓兔子
- 【Android开发】RecyclerView的基本使用
- 64位Windos10+theano+VS2012+GPU加速
- processing练手
- 122. Best Time to Buy and Sell Stock II
- Android Socket 轻松建立连接和发送消息
- 开启未来之门,走进编程世界
- 理解JAVA MQ消息中间件