缓冲区在哪里?

时间:2012-01-06 14:37:36

标签: process operating-system kernel buffer

我听到很多关于刷新缓冲区发送到缓冲区等的内容,但我没有关于缓冲区所在位置以及它们外观的可视图像。< / p>

缓冲区是OS内核的一部分还是每个进程的一部分?如果案例是第一个,多个进程可以使用相同的缓冲区吗?

1 个答案:

答案 0 :(得分:2)

缓冲区是字节集合的通用术语,通常用于发送,接收或存储信息的上下文中,其中信息的内部数据结构并不重要。

在“刷新”缓冲区的情况下,这通常用于将数据发送到文件或网络的上下文中;在这种情况下,缓冲区用于将对文件或网络的多个小写入合并为一个更大,更高效的发送缓冲区。在执行了最后一次写入之后(或在一些“提交”点之后),必须“刷新”缓冲区以确保等待与未来写入合并的任何数据立即提交到通过网络发送的基础文件而不是等待未来的写作可能永远不会到来。

在网络和文件IO的情况下,缓冲区通常用于多个地方。文件IO可以通过应用程序中的缓冲区,库中的缓存(例如fwrite的实现可以缓冲输出),内核甚至设备本身来缓冲 - 设备可以在等待时缓冲网络写入对于线路和硬盘驱动器上的带宽将缓冲来自OS的输出,以确保数据不会丢失,因为物理盘片旋转到正确的写入位置。