深入理解异步和同步

 本文参考:http://blog.csdn.net/thisispan/article/details/7481127   

同步和异步是通信的两种方式,并且在通信的过程中划分为同步传输/异步传输,以及同步通知/异步通知

       同步传输/异步传输

      同步传输方式中发送方和接收方的时钟是统一的,传输数据的时间间隔是相同的。

     异步传输方式并不要求发送方和接收方的时钟完全一样,传输数据的时间间隔是不一样的

       硬件原理

简单的同步硬件设计原理就是有两条线,一条时钟线,一条数据线,只有两者相与为1(即同时有效)时,

就是同步信号

异步则是单独的一条数据线,只要它有效,就是异步信号

异步传输

异步传输是一个字节一个字节来的,加上起始位和标志位。

异步传输将比特分成小组进行传送,小组可以是8位的1个字符或更长。发送方可以在任何时刻发送这些比特组,

而接收方从不知道它们会在什么时候到达。一个常见的例子是计算机键盘与主机的通信。按下一个字母键、数字键或

特殊字符键,就发送一个8比特位的ASCII代码。

键盘可以在任何时刻发送代码,这取决于用户的输入速度,内部的硬件必须能够在任何时刻接收一个键入的字符。

 

异步传输存在一个潜在的问题,即接收方并不知道数据会在什么时候到达。在它检测到数据并做出响应之前,

第一个比特已经过去了。

这就像有人出乎意料地从后面走上来跟你说话,而你没来得及反应过来,漏掉了最前面的几个词。因此,

每次异步传输的信息都以一个起始位开头,

它通知接收方数据已经到达了,这就给了接收方响应、接收和缓存数据比特的时间;在传输结束时,一个停止位

表示该次传输信息的终止。

同步传输

同步传输是一帧一帧的,有帧起始标志和帧结束标志,中间很多数据。

数据帧的第一部分包含一组同步字符,它是一个独特的比特组合,类似于前面提到的起始位,用于通知接收方

一个帧已经到达,

但它同时还能确保接收方的采样速度和比特的到达速度保持一致,使收发双方进入同步。

 

帧的最后一部分是一个帧结束标记。与同步字符一样,它也是一个独特的比特串,类似于前面提到的停止位,用于表示在下一帧开始之前没有别的即将到达的数据了。

 

同步传输通常要比异步传输快速得多。接收方不必对每个字符进行开始和停止的操作。一旦检测到帧同步字符,它就在接下来的数据到达时接收它们。

 

同步与异步传输的区别

 

1,异步传输是面向字符的传输,而同步传输是面向比特的传输。

 

2,异步传输的单位是字符而同步传输的单位是桢。

 

3,异步传输通过字符起止的开始和停止码抓住再同步的机会,而同步传输则是以数据中抽取同步信息。

 

4,异步传输对时序的要求较低,同步传输往往通过特定的时钟线路协调时序。

 

5,异步传输相对于同步传输效率较低。

简单说

  同步传输就是,数据没有被对方确认收到则调用传输的函数就不返回。  

接收时,如果对方没有发送数据,则你的线程就一直等待,直到有数据了才返回,可以继续执行其他指令  

异步传输就是,你调用一个函数发送数据,马上返回,你可以继续处理其他事,接收时,对方的有数据来,

你会接收到一个消息,或者你的相关接收函数会被调用。

形象点说

异步传输: 你传输吧,我去做我的事了,传输完了告诉我一声  

同步传输:你现在传输,我要亲眼看你传输完成,才去做别的事

 

一般的工作流程就是:

异步传输:你发送你的,我接收方一直处于监听中,当接收到起始信号,接收端才准备接收数据,如果没有接收到

起始信号,接收方接收到的数据会丢弃。接收到起始信号后,接收方才开始接收数据。

同步传输:接收方平时不监听,直到发送方发送一个时钟的起始信号,接收方做好准备,开始接收数据

因此,在数据通信的传输过程必须得有一个建立通信的方式,即通知流程。于是,异步和同步中就有了异步通知和同步通知的概念


 异步通知(通信)

异步通信在发送字符时,所发送的字符之间的时间间隔可以是任意的。当然,接收端必须时刻做好接收的准备(监听)

 

发送端可以在任意时刻开始发送字符,因此必须在每一个字符的开始和结束的地方加上标志,即加上开始位和停止位,以便使接收端能够正确地将每一个字符接收下来。

 

异步通信的好处是通信设备简单、便宜,但传输效率较低(因为开始位和停止位的开销所占比例较大)。

异步通信通常是设备资源准备好了之后,就会发送信号,唤醒相应的进程。

 同步通知(通信)

同步通信在发送字符时,所发送的字符之间的时间间隔必须是确定的,接收端不必时刻做好接收的准备(监听),

因为有时钟信号提醒

同步通信就是发送一个信号之后,必须等到接收方的回应,才可以返回,则异步则没有这个必要

同步通信和异步通信最主要的区别是发送通知时,是否需要等待


你可能感兴趣的:(深入理解异步和同步)