Atitit 五种IO模型attilax总结 blocking和non-blocking synchronous IO和asynchronous I
?
?
?
?
Atitit ?五種IO模型attilax總結?blocking和non-blocking?synchronous IO和asynchronous I
?
1.1. .3 進程的阻塞1
1.2. 網絡IO的模型大致有如下幾種:1
1.3. ?IO 模型的簡單矩陣。如下圖所示:2
2. 五種IO模型總結2
2.1. 3.1 blocking和non-blocking區別2
2.2. 3.2 synchronous IO和asynchronous IO區別2
2.3. 各個IO Model的比較如圖所示:3
?
?
同步、異步、阻塞與非阻塞
1.1.?.3 進程的阻塞
正在執行的進程,由于期待的某些事件未發生,如請求系統資源失敗、等待某種操作的完成、新數據尚未到達或無新工作做等,則由系統自動執行阻塞原語(Block),使自己由運行狀態變為阻塞狀態。可見,進程的阻塞是進程自身的一種主動行為,也因此只有處于運行態的進程(獲得CPU),才可能將其轉為阻塞狀態。當進程進入阻塞狀態,是不占用CPU資源的。
1.2.?網絡IO的模型大致有如下幾種:
·?同步模型(synchronous IO)
o?阻塞IO(bloking IO)
o?非阻塞IO(non-blocking IO)
o?多路復用IO(multiplexing IO)
o?信號驅動式IO(signal-driven IO)
·?異步IO(asynchronous IO)
注:由于signal driven IO在實際中并不常用,所以我這只提及剩下的四種IO Model。
1.3.??IO 模型的簡單矩陣。如下圖所示:
?
2.?五種IO模型總結
2.1.?3.1 blocking和non-blocking區別
調用blocking IO會一直block住對應的進程直到操作完成,而non-blocking IO在kernel還準備數據的情況下會立刻返回。
2.2.?3.2 synchronous IO和asynchronous IO區別
在說明synchronous IO和asynchronous IO的區別之前,需要先給出兩者的定義。POSIX的定義是這樣子的:
A synchronous I/O operation causes the requesting process to be blocked until that I/O operation completes;
An asynchronous I/O operation does not cause the requesting process to be blocked;
兩者的區別就在于synchronous IO做”IO operation”的時候會將process阻塞。按照這個定義,之前所述的blocking IO,non-blocking IO,IO multiplexing都屬于synchronous IO。
2.3.?各個IO Model的比較如圖所示:
?
?
?
?
Linux 五種IO模型 - paincupid的專欄 - 博客頻道 - CSDN.NET.html
?
作者::?綽號:老哇的爪子?(?全名::Attilax?Akbar?Al?Rapanui?阿提拉克斯?阿克巴?阿爾?拉帕努伊?)?
漢字名:艾提拉(艾龍),???EMAIL:1466519819@qq.com
轉載請注明來源:?http://www.cnblogs.com/attilax/
Atiend
?
?
轉載于:https://www.cnblogs.com/attilax/p/6098812.html
總結
以上是生活随笔為你收集整理的Atitit 五种IO模型attilax总结 blocking和non-blocking synchronous IO和asynchronous I的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何在包下创建子包?
- 下一篇: border 外边框