1. 程式人生 > >nginx之epoll模型的詳細介紹

nginx之epoll模型的詳細介紹

技術分享 處理 主動 模式 過程 管理 行處理 io復用 文件處理

首先我們一個問題一個問題講解,由淺入深的去探索epool

1、什麽是IO復用?

    技術分享圖片

  IO流請求操作系統內核,有串行處理和並行處理的兩種概念;串行處理,前面一個處理,後面的所有的需要等

待,所以這是必需考慮並行處理的方式來完成整個IO流的請求,實現最大的並發和吞吐;這裏就用到了IO復用技術,

IO復用技術就是讓一個Socket來做復用完成整個IO流的請求,當然實現IO流的請求,其中一種方式就是多線程,但

是多線程會占用大量資源,不便於管理,從而出現IO多路復用

2、什麽是IO多路復用?

  IO多路復用是指多個描述符的I/O操作都能在一個線程內並發交替地順序完成,這裏的“復用”指的是復用同一個

線程;對操作系統內核而言多路復用其實是要完成操作系統IO的請求,對於IO文件的請求,我們當一個IO流要進行

對應的文件處理的時候,要獲取一組文件的描述符,當文件描述符還沒就緒時,它就一直在等待,直到描述符一旦

就緒,它就馬上上報系統的一個通知的機制告訴主應用程序,我已經準備就緒了,你可以來操作了這種方式就是IO

復用方式。

3、什麽是epoll?

  IO多路復用的實現方式select 、 poll 、 epoll , 都是liunx內核下的常見多路復用模型最早出現的是select模型

4、什麽是select?

  多路復用其實就是內核態對IO請求的時候,主動的會發送所需要處理的文件對象就緒時的文件就緒信息給應

用端,應用端在FD沒有就緒之前都是Block,也就是阻塞住對應的Socket請求,也會維護一個FD的列表;當內核

態發送可用的信號,FD就緒以後,應用端采用select這種模式,會一直在遍歷所維護的FD文件描述符的列表,以

等到對應的喚醒對應的進程完成對應的數據拷貝;在整個過程中select采用的是線性遍歷的模式,這種模式效率

低下,

  技術分享圖片

5、Select缺點及epoll優點

Select缺點:

  1) 、能夠監視文件描述符的數量存在最大限制

  2) 、線性掃描效率低下

epoll優點:

  epoll則優化,完善了select模式的缺點,每當FD就緒,采用系統的回調函數直接將FD放入,效率高,無監視文件描述符的數量限制。

nginx之epoll模型的詳細介紹