httpd服務歸納:淺談I/O模型

1. 四種理論的I/O模型 

    1) 調用者(服務進程):

        阻塞:  進程發起I/O調用,如果調用為完成,進程被掛起休眠,不能再執行其他功能

        非阻塞:進程發起I/O調用,被調用的函數完成之前,依然可以執行其他功能

    2) 被調用函數或過程(系統調用I/O讀寫操作)

        同步: 函數或功能被進程調用時,不立即返回值,直到此調用完成 

        異步: 函數或功能被進程調用時,不能立即完成則返回未完成狀態,完成后通知調用進程

    3)四中理論模型

         同步阻塞 

         同步非阻塞(幾乎沒人使用)

         異步阻塞 

         異步非阻塞: 真正的異步I/O 

    

2. 五種網絡服務中的I/O模型  

    1) 同步阻塞模型

        工作進程調用I/O請求庫函數后,工作進程被阻塞等待I/O完成第一階段,數據從硬盤加載到內核空間,此時工作進程在庫函數返回數據之前繼續被阻塞參與完成第二階段數據從內核空間復制到用戶進程空間的過程,最后拿到數據。 

同步阻塞.png

    2)I/O復用(同步阻塞模型):select(), poll()

         工作進程調用一個管理I/O的特殊庫函數,此庫函數可以接受并管理多個I/O請求,工作進程則可以同時等待多個I/O請求,雖然是阻塞,但是阻塞在多個進程上,可以提高效率。第二階段依然需要工作進程參與庫函數把內核空間數據復制到用戶空間,第二階段依舊阻塞。 

IO復用模型.png

    3) 同步非阻塞(盲等待模型)

            工作進程調用I/O庫函數,工作進程不需要I/O完成依舊可以處理其他事物,但是需要反復查看I/O是否完成。第二階段依然需要工作進程參與庫函數把內核空間數據復制到用戶空間,第二階段依舊阻塞。 

        

同步非阻塞.png

    4) 事件觸發模型(同步非阻塞): epoll(), kqueue() 

        工作進程調用I/O庫函數,工作進程不需要等待I/O完成,內核空間I/O完成后會通過事件通知進程。第二階段依然需要工作進程參與庫函數把內核空間數據復制到用戶空間,第二階段依舊阻塞。  

事件驅動(同步非阻塞).png

    5) 全異步:AlO 調用

        全異步1: 工作進程調用I/O庫函數,工作進程不需要等待I/O完成,內核空間I/O完成后會通過事件通知進程。第二階段不需要工作進程參與庫函數把內核空間數據復制到用戶空間,庫函數完成復制后自行返回數據給工作進程

異步非阻塞.png

        全異步2: 工作進程調用I/O庫函數,工作進程不需要等待I/O完成,內核空間I/O完成后會通過事件通知進程。第二階段不需要庫函數從內核空間復制數據,而是通過內存映射來實現(mmap)。 

mmap.png

        實現以上功能,libevent   庫 

         libevent.png

原創文章,作者:以馬內利,如若轉載,請注明出處:http://www.www58058.com/4811

(0)
以馬內利以馬內利
上一篇 2015-05-27
下一篇 2015-05-28

相關推薦

  • N28 第三周【2】:用戶和組管理

    用戶和組管理 前言 Linux用戶管理非常關鍵且重要,Linux的所有進程都是以不同的身份擁有不同的權限來運行和調度資源的。但是我們不用費勁心思去管理,因為系統將用戶劃分成為了兩部分:無所不能的root用戶和普通用戶。同時呢,又將普通用戶分為系統用戶和登錄用戶。對于Linux,他會用UID去快速識別用戶身份,對于我們,可以用用戶名去識別。 接下來介紹一下用戶…

    Linux干貨 2017-12-19
  • 四大開源協議比較:BSD、Apache、GPL、LGPL

          現今存在的開源協議很多,而經過Open Source Initiative組織通過批準的開源協議目前有58種。我們現在常見的開源協議如BSD, GPL, LGPL,MIT等都是OSI批準的協議。如果要開源自己的代碼,最好也是選擇這些被批準的開源協議。   這里我們來看四種最常用的開源協議及它們的適用范圍,供那些準備開…

    系統運維 2016-08-15
  • SQL Server 2012 故障轉移群集最佳實踐

    一、Windows server  2012 系統主域的安裝配置 功能介紹:  SQL Server 故障轉移群集在網絡上顯示為一臺計算機上的單個 SQL Server 實例。在群集內部,一次只有一個節點擁有群集資源組,滿足針對該故障轉移群集實例的所有客戶端請求。在出現故障(硬件故障、操作系統故障、應用程序或服務故障)或進行計劃升級時,組…

    Linux干貨 2015-10-27
  • 第七周 練習

    1. 請描述網橋、集線器、二層交換機、三層交換機、路由器的功能、使用場景與區別。 集線器:集線器的主要功能是對接收到的信號進行再生整形放大,以擴大網絡的傳輸距離網橋:是早期的兩端口二層網絡設備,用來連接不同網段。網橋的兩個端口分別有一條獨立的交換信道,      不是共享一條背板總線,可隔…

    Linux干貨 2016-12-13
  • 題外:自制小linux

    自制小linux 系統 制作環境的概述 首先你的有VMware的虛擬機軟件,其次安裝了centos6/centos7的linux系統 而且你需要寫一個復制相關命令以及依賴庫文件的的腳本(主要是為了省時間,腳本寫法會在后面備注)準備好以上環境,便可以制作一個小linux系統了,具體步驟如下 1)  在虛擬機設置中,在原有基礎上在掛載一個20G大小的硬…

    2017-04-04
  • 第一周

       注意:請同學們不要參考我這個,怕誤導,謝謝 A.計算機組成及其功能     1.計算機的組成分:硬件和軟件         硬件:CPU,存儲設備(內存,硬盤),輸入輸出設備(鍵盤,顯示器,鼠標)  &n…

    Linux干貨 2016-12-31

評論列表(2條)

  • 以馬內利
    以馬內利 2015-05-27 11:15

    各位大神見諒,非專業出身,I/O 模型實在不知道怎么表現才真正準確,自己也很淺

  • clover
    clover 2015-06-12 07:52

    已經很棒了

欧美性久久久久