linux下I/O多路復用技術:
根據服務端或客戶端對I/O操作的不同,網絡編程人員須選擇不同的多路,復用模型,在大多數情況下,單類模型已不能滿足復雜業務要求。
此時更多的是
采用幾類I/O復用的組合形式。
select、poll、epoll等是linux下常用的I/O多路復用API,以此
衍生出的大規模并發網絡編程模型如PPC、TPC等。
1.PPC/TPC思想是為每一個到來的連接創建進程(PPC)和線程(TPC)由
派生的進程和線程處理業務,此模型當連接數多時進程和縣城間的切換開銷不可
忽略,適用于最大連接數不多的情況。
2.select:對于公平的輪詢業務操作來說適應性較好,但也存在最大并發數限制,
由于單個進程打開的文件描述符有限(FD_SETSIZE默認為1024/2048),select每次
調用為線性掃描FD集合,效率會線性下降,且存在內核到用戶空間的內存拷貝問題。
3.epoll:
3.1 epoll無最大并發連接數限制,上限是最大可打開文件數目,該文件數目
和系統內存大小有關;
3.2 epoll只關心活躍的連接,不產生無效輪詢;
3.3 epoll使用了類似共享內存方式,無內存拷貝操作;
3.4 epoll通知用戶態有I/0事件到來,并通過結構體告訴應用程序已經注冊的相關事件的信息,
根據事件信息用戶態直接定位到事件,不必遍歷整個FD集合。
看文倉www.kanwencang.com網友整理上傳,為您提供最全的知識大全,期待您的分享,轉載請注明出處。
歡迎轉載:http://www.kanwencang.com/bangong/20170116/88700.html
文章列表