unix網路io模型

來源:互聯網
上載者:User

標籤:

阻塞I/O(bloking I/O)

阻塞IO的特點就是在IO執行的兩個階段(recvfrom和資料從核心空間轉移到使用者空間)都被block了

非阻塞I/O(non-bloking I/O)
 

非阻塞 IO的特點是使用者進程需要不斷的主動詢問kernel資料是否準備好。

多工I/O(multiplexing I/O)

多工特點是通過一種機制一個進程能同時等待IO檔案描述符,核心監視這些檔案描述符(通訊端描述符),其中的任意一個進入讀就緒狀態,select, poll,epoll函數就可以返回。對於監視的方式,又可以分為 select, poll, epoll三種方式。

非同步I/O(asynchronous I/O)

相對於同步I/O,非同步I/O不是順序執行。使用者進程進行aio_read系統調用之後,無論核心資料是否準備好,都會直接返回給使用者進程,然後使用者態進程可以去做別的事情。等到socket資料準備好了,核心直接複製資料給進程,然後從核心向進程發送通知。I/O兩個階段,進程都是非阻塞的。

同步和非同步區別

通過對上述幾種模型的討論,需要區分阻塞和非阻塞,同步和非同步。他們其實是兩組概念。區別前一組比較容易,後一種往往容易和前面混合。在我看來,所謂同步就是在整個I/O過程。尤其是拷貝資料的過程是阻塞進程的,並且都是應用進程態去檢查核心態。而非同步則是整個過程I/O過程使用者進程都是非阻塞的,並且當拷貝資料的時是由核心發送通知給使用者進程。



 

unix網路io模型

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.