为什么异步 I/O 需要缓冲?

为什么异步 I/O 需要缓冲?

我在一些关于 I/O 和操作系统的入门讲义中看到“异步系统需要缓冲”。请问这是为什么?

干杯

答案1

在同步网络(例如 SDH)中,比特流被分配有保证带宽。同步网络中的节点将单个比特从入口接口转发到出口接口,由于 TDM(时分复用),始终有一个时隙可供入口比特放置在出口接口上。每个流都需要一个缓冲区(大小为 1 位),比特在入口和出口分配的 TDM 时隙之间等待。1 位太小,通常被认为是“无缓冲区”。

在异步网络(例如以太网)中,您永远不知道有多少数据包将通过一个接口到达并需要转发到另一个接口。带宽预留尚未完成。如果出口接口繁忙,异步节点可能会丢弃传入的数据包,但这会导致非常大的数据包丢失。实施缓冲区允许延迟数据包并充分利用出口接口的带宽。只有当缓冲区已满时,数据包才会被丢弃。关于最佳数据包丢弃(RED、AFD 等)和出口数据包排队(FIFO、SFQ、CODEL)策略有很多理论。

异步系统更为常见,并正在逐渐取代同步系统。这是因为尽管增加了节点的复杂性,但它们没有流设置的开销,因此具有更强的能力来处理大量流并更快地适应数据流的变化。在同步系统上不可能实现互联网。

相关内容