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

哈特穆特

我读了一些有关I / O和操作系统的介绍性讲义,其中“异步系统需要缓冲”。为什么要这样呢?

干杯

Vojtech

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

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

异步系统更为常见,并且正在逐步取代同步系统。这是因为尽管节点增加了复杂性,但它们没有流设置的开销,因此具有更大的能力来处理大量流并更快地适应数据流的变化。在同步系统上将无法使用Internet。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么异步I / O需要事件循环

来自分类Dev

为什么包含异步lambda的方法本身不需要是异步的?

来自分类Dev

为什么在调用glDrawArrays之前不需要绑定顶点缓冲区对象?

来自分类Dev

为什么刚创建输出缓冲区时需要刷新它?

来自分类Dev

为什么需要异步调用数据库?

来自分类Dev

使用getchar()时,为什么首先需要清除回车按键的缓冲区?

来自分类Dev

为什么struct缓冲区不需要初始化

来自分类Dev

为什么文本I / O必须在python 3中进行缓冲?

来自分类Dev

为什么列表的串联需要O(n)?

来自分类Dev

异步I / O密集型代码的运行速度比非异步慢,为什么?

来自分类Dev

为什么缓冲I / O比未缓冲I / O快

来自分类Dev

什么时候需要清除scanf缓冲区?

来自分类Dev

为什么需要在NSInvocation-getArgument:atIndex:上保留__unsafe_unretain缓冲区?

来自分类Dev

C ++-缓冲区和流都需要什么?

来自分类Dev

为什么异步方法需要返回未来?

来自分类Dev

为什么在LZW压缩中压缩缓冲区需要大于输入缓冲区?

来自分类Dev

如果需要等待,为什么回调被认为是异步的

来自分类Dev

为什么递归异步函数在Rust中需要'静态参数?

来自分类Dev

为什么我们需要异步同步原语,何时使用它们?

来自分类Dev

为什么单个深度缓冲区足以满足此vulkan swapchain渲染循环的需要?

来自分类Dev

为什么Jest需要Babel来测试异步代码?

来自分类Dev

为什么在调用glDrawArrays之前不需要绑定顶点缓冲区对象?

来自分类Dev

I / O类缓冲

来自分类Dev

为什么需要使此方法异步?

来自分类Dev

C ++-缓冲区和流都需要什么?

来自分类Dev

如果需要等待,为什么回调被认为是异步的

来自分类Dev

为什么需要使用 await 关键字来调用异步方法

来自分类Dev

为什么从服务器获取数据时需要使用异步?

来自分类Dev

为什么需要使用 promise 作为异步回调的包装器

Related 相关文章

  1. 1

    为什么异步I / O需要事件循环

  2. 2

    为什么包含异步lambda的方法本身不需要是异步的?

  3. 3

    为什么在调用glDrawArrays之前不需要绑定顶点缓冲区对象?

  4. 4

    为什么刚创建输出缓冲区时需要刷新它?

  5. 5

    为什么需要异步调用数据库?

  6. 6

    使用getchar()时,为什么首先需要清除回车按键的缓冲区?

  7. 7

    为什么struct缓冲区不需要初始化

  8. 8

    为什么文本I / O必须在python 3中进行缓冲?

  9. 9

    为什么列表的串联需要O(n)?

  10. 10

    异步I / O密集型代码的运行速度比非异步慢,为什么?

  11. 11

    为什么缓冲I / O比未缓冲I / O快

  12. 12

    什么时候需要清除scanf缓冲区?

  13. 13

    为什么需要在NSInvocation-getArgument:atIndex:上保留__unsafe_unretain缓冲区?

  14. 14

    C ++-缓冲区和流都需要什么?

  15. 15

    为什么异步方法需要返回未来?

  16. 16

    为什么在LZW压缩中压缩缓冲区需要大于输入缓冲区?

  17. 17

    如果需要等待,为什么回调被认为是异步的

  18. 18

    为什么递归异步函数在Rust中需要'静态参数?

  19. 19

    为什么我们需要异步同步原语,何时使用它们?

  20. 20

    为什么单个深度缓冲区足以满足此vulkan swapchain渲染循环的需要?

  21. 21

    为什么Jest需要Babel来测试异步代码?

  22. 22

    为什么在调用glDrawArrays之前不需要绑定顶点缓冲区对象?

  23. 23

    I / O类缓冲

  24. 24

    为什么需要使此方法异步?

  25. 25

    C ++-缓冲区和流都需要什么?

  26. 26

    如果需要等待,为什么回调被认为是异步的

  27. 27

    为什么需要使用 await 关键字来调用异步方法

  28. 28

    为什么从服务器获取数据时需要使用异步?

  29. 29

    为什么需要使用 promise 作为异步回调的包装器

热门标签

归档