異步IO的概念和同步IO相對。當一個異步過程調用發出後,調用者不能立刻得到結果。實際處理這個調用的部件在完成後,通過狀態、通知和回調來通知調用者。在一個CPU密集型的套用中,有一些需要處理的數據可能放在磁碟上。預先知道這些數 據的位置,所以預先發起異步IO讀請求。等到真正需要用到這些數據的時候,再等待異步IO完成。使用了異步IO,在發起IO請求到實際使用數據這段時間 內,程式還可以繼續做其他事情
基本介紹
- 中文名:異步輸入輸出
- 外文名:Asynchronous Input and Output
- 釋義:異步IO的概念和同步IO相對
異步IO將比特分成小組進行傳送,小組可以是8位的1個字元或更長。傳送方可以在任何時刻傳送這些比特組,而接收方從不知道它們會在什麼時候到達。
異步傳輸存在一個潛在的問題,即接收方並不知道數據會在什麼時候到達。在它檢測到數據並做出回響之前,第一個比特已經過去了。這就像有人出乎意料地從後面走上來跟你說話,而你沒來得及反應過來,漏掉了最前面的幾個詞。因此,每次異步傳輸的信息都以一個起始位開頭,它通知接收方數據已經到達了,這就給了接收方回響、接收和快取數據比特的時間;在傳輸結束時,一個停止位表示該次傳輸信息的終止。按照慣例,空閒(沒有傳送數據)的線路實際攜帶著一個代表二進制1的信號,異步傳輸的開始位使信號變成0,其他的比特位使信號隨傳輸的數據信息而變化。最後,停止位使信號重新變回1,該信號一直保持到下一個開始位到達。例如在鍵盤上數字“1”,按照8比特位的擴展ASCII編碼,將傳送“00110001”,同時需要在8比特位的前面加一個起始位,後面一個停止位。
異步傳輸的實現比較容易,由於每個信息都加上了“同步”信息,因此計時的漂移不會產生大的積累,但卻產生了較多的開銷。在上面的例子,每8個比特要多傳送兩個比特,總的傳輸負載就增加25%。對於數據傳輸量很小的低速設備來說問題不大,但對於那些數據傳輸量很大的高速設備來說,25%的負載增值就相當嚴重了。因此,異步傳輸常用於低速設備。