我找不到IO Stream Buffering的基本概念以及它的含义。任何教程和链接都会很有帮助。
发布于 2012-11-16 15:40:54
缓冲是处理输入和输出的软件的基本部分。因为硬件和软件以不同的速度运行,所以缓冲器保存在软件接口和硬件接口之间的数据。
生成数据的组件可以将其放入缓冲区,然后通过将收集的数据发送到下一个组件来“刷新”缓冲区。类似地,另一个组件可以在缓冲器上等待,直到完整的数据片段或足够的数据可用于输入。
在C++中,std::basic_filebuf在文件系统文件上实现了一个缓冲区。它最多存储固定数量的字节,因此操作系统始终以最小事务大小工作,同时如果需要,程序可以访问单个字符。
参见Wikipedia。
发布于 2012-11-16 15:38:24
缓冲是使用内存(用户内存),而不是直接将数据发送到操作系统(即磁盘)。在上下文切换时保存。
发布于 2012-11-16 15:46:20
概念是这样的。假设您有一个需要将数据写入硬盘的应用程序。假设它想要每半秒写一些东西(例如更新日志文件)。这样好吗?不,原因是这样的。
软件可以非常快,但硬盘的运行速度是有限的,它比内存和你的应用程序慢得多。要写入数据,HDD需要将其磁头重新定位到特定的扇区(这可能涉及减慢磁盘的旋转速度),写入数据,然后重新定位回原来的位置。因此,您的应用程序可能运行得非常慢(当然,这只是一个理论上的例子)。
缓冲可以帮助解决这个问题。不是每次都写入磁盘,而是将数据累积在存储器中某处的缓冲区中。一旦收集到足够数量的数据,就会刷新缓冲区:将其中的数据写入磁盘。这种方法有助于最大限度地减少HDD操作并提高整体速度。
https://stackoverflow.com/questions/13412289
复制相似问题