計算機操作系統之IO

一.同步IO與異步IO的特點
1.異步傳輸是面向字符的傳輸,而同步傳輸是面向比特的傳輸。
2.異步傳輸的單位是字符而同步傳輸的單位是幀。
3. 異步傳輸通過字符起止的開始和停止碼抓住再同步的機會,而同步傳輸則是以數據中抽取同步信息。
4.異步傳輸對時序的要求較低,同步傳輸往往通過特定的時鐘線路協調時序。
5.異步傳輸相對於同步傳輸效率較低。
二.同步的好處
1.同步流程對結果處理通常更爲簡單,可以就近處理。
2.同步流程對結果的處理始終和前文保持在一個上下文內。
3.同步流程可以很容易捕獲、處理異常。
4.同步流程是最天然的控制過程順序執行的方式。
三.異步的好處
1.異步流程可以立即給調用方返回初步的結果。
2.異步流程可以延遲給調用方最終的結果數據,在此期間可以做更多額外的工作,例如結果記錄等等。
3.異步流程在執行的過程中,可以釋放佔用的線程等資源,避免阻塞,等到結果產生再重新獲取線程處理。
4.異步流程可以等多次調用的結果出來後,再統一返回一次結果集合,提高響應效率。
四.BIO,NIO,AIO
Java BIO (blocking I/O): 同步並阻塞,服務器實現模式爲一個連接一個線程,即客戶端有連接請求時服務器端就需要啓動一個線程進行處理,如果這個連接不做任何事情會造成不必要的線程開銷,當然可以通過線程池機制改善。
Java NIO (non-blocking I/O): 同步非阻塞,服務器實現模式爲一個請求一個線程,即客戶端發送的連接請求都會註冊到多路複用器上,多路複用器輪詢到連接有I/O請求時才啓動一個線程進行處理。
Java AIO(NIO.2) (Asynchronous I/O) : 異步非阻塞,服務器實現模式爲一個有效請求一個線程,客戶端的I/O請求都是由OS先完成了再通知服務器應用去啓動線程進行處理
五.說一下NIO
NIO主要有三大核心部分:Channel(通道),Buffer(緩衝區), Selector。傳統IO基於字節流和字符流進行操作,而NIO基於Channel和Buffer(緩衝區)進行操作,數據總是從通道讀取到緩衝區中,或者從緩衝區寫入到通道中。Selector(選擇區)用於監聽多個通道的事件(比如:連接打開,數據到達)。因此,單個線程可以監聽多個數據通道。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章