既然系统I/O都已经有缓存了,为什么c库的io还要弄一层缓存?
例如,系统调用如read/write/open/close等,posix的实现都说了有缓存了。为什么标准I/O库的fread/fwrite还需要再弄一层缓存呢?会不会多次一举了呢?
谢谢。 fread和fwrite这些属于C库的,是为了方便程序员使用。 zsszss0000 发表于 2015-01-30 13:31 static/image/common/back.gif
fread和fwrite这些属于C库的,是为了方便程序员使用。
write/read/open/close使用的时候也只是包含了对应的头文件就行了啊。为什么呢? C库的缓存相当于预读一部分数据,期望减少系统调用的次数;而IO系统的缓存是为了减少直接访问磁盘的次数,层次不同 回复 4# yang511yang
解释的精辟。
os提供很多api,希望调用者能明确自己的需求,能在合适的场景应用合适的机制。
人的消化系统就是一输入输出模型,口腔有一缓存,胃也分配了一定的缓存,管道也有一定的缓存能力!
人法地,地法天,天法道。人为万物之灵,不是没道理的! 我的理解是隔离平台差异 yang511yang 发表于 2015-01-30 21:31 static/image/common/back.gif
C库的缓存相当于预读一部分数据,期望减少系统调用的次数;而IO系统的缓存是为了减少直接访问磁盘的次数,层 ...
双层缓存,精辟的解释!
页:
[1]