同步与异步

对于同步与异步一直处于似懂非懂的地步,当上网查阅资料的时候,更是云里雾里。看起来比较妥当的解析是“从大的概念上来讲同步和异步关注的是消息通信机制”,但是却将我导向了《The Sockets Networking API: UNIX® Network Programming Volume 1, Third Edition》的第六章中,然而看完却依然无法理解“从大的概念上来讲同步和异步关注的是消息通信机制”,因此看完关于5中I/O模型的介绍之后继续查询关于同步异步的介绍。


同步和异步的定义,需要看场景。《The Sockets Networking API: UNIX® Network Programming Volume 1, Third Edition》当中限定在了I/O的场景,定义中提及的也是同步I/O、异步I/O。
再进行仔细的查阅,发现同步异步确实不仅仅局限于I/O的场景。

同步与异步

就像乐队指挥协调乐队成员功能演奏一样,系统也需要有一个协调各个部分运转的协同方法,同步异步是其中两种不同的方式。同步依赖于外部共同的一个或者多个时钟实现的同步,而异步则可以不依赖于外部共同的时钟来实现可靠的系统操作(例如分组到达、信号转变、握手协议等)。

同步传输

在同步传输中,数据流会转变成电压波动在线路上传输(DATA)如下图所示是两种方式的同步信息。除此之外,还需要单独的传出一段周期性变化的电压波动(CLOCK或者STROBE)。

通过时钟周期才能正确解析出数据流。
几乎所有并行传输都是使用同步通讯传输,例如在电脑中地址信息、控制总线的读写请求等。

  • 并行传输是对应串行传输的,串行传输一次传输一个bit的数据,而并行传输则是一次传输多个bit的数据。

异步传输

一般异步传输信号,是在DATA的前后添加开始和结束标记,接收方在接收到开始标记之后等待半个或者一个bit之后开始接受数据,最后接收到结束标记的时候完成完成接收。
在串行通信,一个典型的异步传输的字结构是START-DATA[0:7]-STOP[0:1],这个格式需要发送端和接收端在开始通信之前确定下来的。

优缺点

异步传输

  • 优点
    • 简单,不要求发送和接收端同步
    • 硬件设备便宜
    • 启动很快,因此很适合不规则间隔的信号,例如接收键盘数据、两套不同速度的应用间通讯。
  • 缺点
    • 由于增加了开始和结束标记,因此传送消息的开销增大了,传输的数据越多,其中没有用的消耗(开始和结束标记)越多

同步传输

  • 优点
    • 低开销(不需要像异步传输那样携带开始和结束标记),因此更高的吞吐量
  • 缺点
    • 相对复杂
    • 硬件设备更加贵

参考