I/O模型
模型:阻塞型、非阻塞型、復用型、信號驅動型、異步
同步/異步:
關注消息通知機制
消息通知:
同步:等待對方返回消息
異步:被調用者通過狀態、通知或回調機制通知調用者被調用者的運行狀態
一次IO請求,都會由兩階段組成:
第一步:等待數據,即數據從磁盤到內核內存
第二步:復制數據,即數據內核內存到進程內存
阻塞/非阻塞:
關注調用者在等待結果返回之前所處的狀態
阻塞:blocking,調用結果返回之前,調用者被掛起
非阻塞:nonblocking,調用結果返回之前,調用者不會被掛起
復用型IO調用:
select():最大只支持1024個連接,http的prefork和work都是此模型
poll():
event-driven:<信號驅動型>
epoll(Linux):libevent
Kqueue(BSD):
Solaris:/dev/poll
異步IO模型:
當一個異步過程調用發出后,調用者不能立刻得到結果。實際處理這個調用的部件在完成后,通過狀態、通知和回調來通知調用者的輸入輸出操作
5個I/O模型的比較:
原創文章,作者:megedugao,如若轉載,請注明出處:http://www.www58058.com/55510