linux-I/O模式

同步IO和異步IO,阻塞IO和非阻塞IO分別是什麼,到底有什麼區別?以前聽到這些名詞很模糊,今天理了一下。

操作系統分用戶空間內核空間。32位操作系統而言,它的尋址空間(虛擬存儲空間)爲4G(2的32次方)。
linux操作系統而言,內核空間:最高的1G字節(從虛擬地址0xC0000000到0xFFFFFFFF)
                                用戶空間:     較低的3G字節(從虛擬地址0x00000000到0xBFFFFFFF)

內存數據會先被拷貝到操作系統內核的緩衝區中,然後纔會從操作系統內核的緩衝區拷貝到用戶空間的地址空間。

linux系統產生了下面五種網絡模式的方案。
- 阻塞 I/O(blocking IO)
- 非阻塞 I/O(nonblocking IO)
- I/O 多路複用( IO multiplexing)
- 信號驅動 I/O( signal driven IO)
- 異步 I/O(asynchronous IO)

我的總結:
數據的過程兩步: 1.外部數據->內核空間
                               2.內核空間->用戶空間
 

1.阻塞I/O    過程一步步走  外-》內核 卡住
                         內核-》用戶
2.非阻塞I/O   沒數據返回error 
                         外-》內核   沒數據    返回error
                         內核-》用戶 沒數據就返回
3.I/O  多路複用 事件驅動 select poll epoll
     與第一個比:100個socket  有幾個有數據就返回幾個
             外->內  卡住 ,只是SOCKET是多個的
             內核-》用戶
4.異步I/O     外-》內核  沒數據直接返回
             內核-》用戶 沒數據直接返回
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章