亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 操作系統 > 正文

select、poll和epoll的比較

2024-06-28 13:28:01
字體:
來源:轉載
供稿:網友
select、poll和epoll的比較

一、select機制

  在linux下網絡通信中,經常用到select機制,這是一種異步通信的實現方式,select中提供一fd_set的數據結果,實際上是一個long類型的數組, 每一個數組元素都能與一打開的文件句柄建立聯系,通常這個句柄并不局限于網絡通信中的socket句柄,還包括其他文件、命名管道或設備句柄等。當程序中調用select()時,由內核根據IO狀態修改fd_set的內容,由此來通知執select()的進程哪一Socket或文件可讀或者可寫。

  select的本質上是通過設置或者檢查存放fd標志位的數據結構來進行下一步處理。這樣所帶來的缺點是:

  1、單個進程可監視的fd數量受到了限制,在32位機器上,他所能管理的fd數量最大為1024。

  2、需要維護一個用來存放大量fd的數據結構,這樣會使得用戶空間和內核空間在傳遞該結構時復制開銷大。

  3、對socket進行掃描時是線性掃描,當socket文件描述符數量變多時,大量的時間是被白白浪費掉的。

二、poll機制

  poll是Linux中的字符設備驅動中有一個函數,Linux 2.5.44版本后已經被epoll所取代。poll機制是用在某些Unix系統中,使用poll()函數用于執行與select()函數同等功能的函數。

  poll本質上和select沒有區別,它將用戶傳入的數組拷貝到內核空間,然后查詢每個fd對應的設備狀態,如果設備就緒則在設備等待隊列中加入一項并繼續遍歷,如果遍歷完所有fd后沒有發現就緒設備,則掛起當前進程,直到設備就緒或者主動超時,被喚醒后它又要再次遍歷fd。這個過程經歷了多次無謂的遍歷。

  相比于select機制,poll機制采用鏈表來進行文件描述符的存儲,因此它并沒有最大連接數的限制,但同樣存在一些缺點:

  1、大量的fd的數組被整體復制于用戶態和內核地址空間之間,而不管這樣的復制是不是有意義。

  2、poll還有一個特點是“水平觸發”,如果報告了fd后,沒有被處理,那么下次poll時會再次報告該fd。

三、epoll機制

  epoll是Linux內核為處理大批量的句柄而作了改進的poll,是Linux下多路復用IO接口select/poll的增強版本,它能顯著提高程序在大量并發連接中只有少量活躍的情況下的系統CPU利用率。

  epoll會復用文件描述符集合來傳遞結果而不用迫使開發者每次等待事件之前都必須重新準備要被偵聽的文件描述符集合,另一點原因就是獲取事件的時候,它無須遍歷整個被偵聽的描述符集,只要遍歷那些被內核IO事件異步喚醒而加入Ready隊列的描述符集合就行了。epoll除了提供select/poll那種IO事件的電平觸發(Level Triggered)外,還提供了邊沿觸發(Edge Triggered),這就使得用戶空間程序有可能緩存IO狀態,減少epoll_wait/epoll_pwait的調用,提高應用程序效率。

  相比于poll機制,epoll支持水平觸發和邊緣觸發,最大的特點在于邊緣觸發,它只告訴進程哪些fd剛剛變為就需態,并且只會通知一次。在fd的數組在用戶態和內核地址空間之間復制的問題上,epoll使用mmap減少復制開銷。還有一個特點是,epoll使用“事件”的就緒通知方式,通過epoll_ctl注冊fd,一旦該fd就緒,內核就會采用類似callback的回調機制來激活該fd,epoll_wait便可以收到通知。

四、select、poll與epoll的比較

  1、支持一個進程所能管理的最大連接數

select

單個進程所能打開的最大連接數有FD_SETSIZE宏定義,其大小是32個整數的大小(在32位的機器上,大小就是32*32,同理64位機器上FD_SETSIZE為32*64),當然我們可以對進行修改,然后重新編譯內核,但是性能可能會受到影響,這需要進一步的測試。

poll

poll本質上和select沒有區別,但是它沒有最大連接數的限制,原因是它是基于鏈表來存儲的

epoll

雖然連接數有上限,但是很大,1G內存的機器上可以打開10萬左右的連接,2G內存的機器可以打開20萬左右的連接

  2、文件描述符劇增后帶來的IO效率問題

select

因為每次調用時都會對連接進行線性遍歷,所以隨著FD的增加會造成遍歷速度慢的“線性下降性能問題”。

poll

同上

epoll

因為epoll內核中實現是根據每個fd上的callback函數來實現的,只有活躍的socket才會主動調用callback,所以在活躍socket較少的情況下,使用epoll沒有前面兩者的線性下降的性能問題,但是所有socket都很活躍的情況下,可能會有性能問題。

  3、消息傳遞的方式

select

內核需要將消息傳遞到用戶空間,都需要內核拷貝動作

poll

同上

epoll

epoll通過內核和用戶空間共享一塊內存來實現的。

  綜上,在選擇select,poll,epoll時要根據具體的使用場合以及這三種方式的自身特點,epoll的性能最好。但是考慮到在連接數少并且連接都十分活躍的情況下,select和poll的性能可能會比epoll更好,畢竟epoll的通知機制需要很多函數回調。


上一篇:高級I/O之STREAMS

下一篇:高級I/O之記錄鎖

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美体内谢she精2性欧美| 精品国产成人在线| 亚洲男人天堂手机在线| 久久露脸国产精品| 精品国产一区二区在线| 91久久久久久久久久久久久| 日韩欧美在线中文字幕| 欧美日韩激情视频8区| 亚洲专区在线视频| 欧美激情第1页| 国产一区二区丝袜| 中文字幕亚洲激情| 日韩欧美国产免费播放| 亚洲人午夜色婷婷| 美女久久久久久久| 91高潮精品免费porn| 亚洲综合自拍一区| 欧美黑人巨大xxx极品| 亚洲国产精品视频在线观看| 欧美激情网友自拍| 91精品国产自产在线观看永久| 亚洲黄色av网站| 色偷偷亚洲男人天堂| 久久精品国产免费观看| 亚洲午夜久久久久久久| 国产欧美精品一区二区| 日韩av电影在线网| 亚洲免费一级电影| 国产成人jvid在线播放| 久久免费视频在线观看| 日韩成人性视频| 欧美在线xxx| 久久久久久97| 欧美又大又硬又粗bbbbb| 亚洲成人黄色在线观看| 久久影视免费观看| 久久精品久久久久电影| 久久69精品久久久久久久电影好| 欧美精品性视频| 亚洲精品v天堂中文字幕| 欧美肥老太性生活视频| 久久人人97超碰精品888| 日韩在线视频网站| 97成人精品区在线播放| 久久五月天综合| 日韩毛片在线看| 欧美在线中文字幕| 日本伊人精品一区二区三区介绍| 亚洲精品suv精品一区二区| 超碰97人人做人人爱少妇| 久久久www成人免费精品张筱雨| 国产精品久久久久久久久久久久| 国产精品国产亚洲伊人久久| 国产精品久久久久久久久久| 有码中文亚洲精品| 亚洲精品视频网上网址在线观看| 91精品国产高清久久久久久| 久久青草福利网站| 亚洲成人精品久久久| 日韩成人高清在线| 欧美资源在线观看| 欧美视频中文字幕在线| 成人黄色片网站| 国产精品青青在线观看爽香蕉| 国产精品盗摄久久久| 亚洲日韩欧美视频| 成人精品视频在线| 国产精品嫩草影院一区二区| 欧美日韩中文字幕日韩欧美| 国产精品久久婷婷六月丁香| 国产一区二区三区直播精品电影| 日韩av一区在线观看| 日韩精品免费在线视频观看| 日韩精品日韩在线观看| 亚洲女人被黑人巨大进入| 国产精品一区二区久久| 国产精品免费久久久久影院| 亚洲成年人在线| 亚洲欧美国产精品久久久久久久| 亚洲天堂第一页| 91精品在线观看视频| 亚洲最大av在线| 亚洲www在线观看| 亚洲天堂久久av| 上原亚衣av一区二区三区| 高清一区二区三区日本久| 最近2019中文字幕第三页视频| 这里只有精品视频| 国产一区深夜福利| 国产亚洲福利一区| 亚洲无av在线中文字幕| 成人免费看片视频| 亚洲深夜福利在线| 欧美成人小视频| 亚洲欧洲黄色网| 欧美日韩美女在线| 日韩中文字幕在线视频| 亚洲成人av在线| 日韩风俗一区 二区| 久久人人爽人人爽人人片av高请| 国产香蕉97碰碰久久人人| 成人乱色短篇合集| 日韩成人在线视频观看| 97av视频在线| 久久99精品久久久久久青青91| 浅井舞香一区二区| 国产精品稀缺呦系列在线| 欧美福利视频在线| 欧美激情国产日韩精品一区18| 亚洲欧美日韩精品久久奇米色影视| 中文字幕av一区中文字幕天堂| 日韩国产欧美精品一区二区三区| 久久99精品国产99久久6尤物| 青青青国产精品一区二区| 国产一区二区日韩精品欧美精品| 日韩av在线一区二区| 久久成人人人人精品欧| 最近免费中文字幕视频2019| 色综合导航网站| 亚洲国模精品一区| 91精品啪aⅴ在线观看国产| 欧美一级成年大片在线观看| 亚洲石原莉奈一区二区在线观看| 中文字幕国产亚洲2019| 久久免费视频网站| 亚洲国产91色在线| 亚洲黄页视频免费观看| 国产女精品视频网站免费| 国产精品a久久久久久| 欧美激情一区二区三级高清视频| 欧美激情在线播放| 日韩中文字在线| 精品视频—区二区三区免费| 欧美日韩性视频在线| 国产精品精品视频一区二区三区| 欧美性xxxxxxxxx| 粉嫩老牛aⅴ一区二区三区| 中文字幕av一区中文字幕天堂| 国产日韩欧美在线| 亚洲人成电影网站色xx| 欧美午夜精品久久久久久人妖| 久久久999精品免费| 亚洲风情亚aⅴ在线发布| 国产精品成人一区二区| 久久精品电影一区二区| 成人天堂噜噜噜| 不卡av日日日| 国产69精品久久久久99| 日本国产精品视频| 久久精品视频在线| 日韩专区中文字幕| 亚洲最大福利网站| 亚洲高清福利视频| 一区二区三区国产视频| 欧美激情a在线| 一区二区三区国产在线观看| 欧美亚洲成人精品| 岛国视频午夜一区免费在线观看| 国产成人一区二区三区电影| 国产精品免费久久久久影院| 中文字幕亚洲综合久久筱田步美| 成人免费在线视频网址| 日av在线播放中文不卡| 国产成人精品综合久久久|