8.1、四種的I/O模型
創(chuàng)新互聯(lián)公司是一家專業(yè)提供吉首企業(yè)網(wǎng)站建設,專注與成都做網(wǎng)站、網(wǎng)站制作、H5建站、小程序制作等業(yè)務。10年已為吉首眾多企業(yè)、政府機構(gòu)等服務。創(chuàng)新互聯(lián)專業(yè)的建站公司優(yōu)惠進行中。
在操作系統(tǒng)中,進程無法直接操作I/O設備,其必須通過系統(tǒng)調(diào)用請求kernel來協(xié)助完成I/O動作,而內(nèi)核會為每個I/O設備維護一個buffer。進程與I/O之間的通信模型如圖所示。

對于輸入而言,等待(wait)數(shù)據(jù)輸入至buffer需要時間,而從buffer復制(copy)數(shù)據(jù)至進程也需要時間。根據(jù)調(diào)用者與被調(diào)用者的不同就有四種I/0模型。
| 調(diào)用者處理措施: 阻塞:進程發(fā)起 I/O 調(diào)用, 未完成之前,當前進程會被掛起; 非阻塞:進程發(fā)起 I/O 調(diào)用,被調(diào)用函數(shù)完成之前不會阻塞當前進程,而是立即返回; 被調(diào)用者響應: 同步:進程發(fā)起一個過程調(diào)用(功能、函數(shù))調(diào)用后,在沒得到結(jié)果之前,該調(diào)用將不會返回;異步:進程發(fā)起一個過程調(diào)用后,即使調(diào)用者不能立即得結(jié)果,但調(diào)用卻會返回,返回是未未完成 狀態(tài);當調(diào)用完成后,內(nèi)核會自行通知調(diào)用者結(jié)果已經(jīng) OK; |

8.2、五種網(wǎng)絡服務I/0模型
根據(jù)等待模式不同,I/O動作可分為五種模式:
同步阻塞:進程會一直阻塞,直到數(shù)據(jù)拷貝完成。

同步非阻塞:非阻塞IO通過進程反復調(diào)用IO函數(shù)(多次系統(tǒng)調(diào)用,并馬上返回);在數(shù)據(jù)拷貝的過程中,進程是阻塞的。

I/O 復用:主要是select和epoll;對一個IO端口,兩次調(diào)用,兩次返回,比阻塞IO并沒有什么優(yōu)越性;關鍵是能實現(xiàn)同時對多個IO端口進行監(jiān)聽。

異步IO:數(shù)據(jù)拷貝的時候進程無需阻塞。

信號驅(qū)動:兩次調(diào)用,兩次返回。

五種IO模型的比較:

8.3、select/poll/epoll
select
本質(zhì)上是通過設置或者檢查存放fd標志位的數(shù)據(jù)結(jié)構(gòu)來進行下一步處理,但是單個進程可監(jiān)視的fd數(shù)量被限制,即能監(jiān)聽端口的大小有限。對socket進行掃描時是線性掃描,即采用輪詢的方法,效率較低,需要維護一個用來存放大量fd的數(shù)據(jù)結(jié)構(gòu),這樣會使得用戶空間和內(nèi)核空間在傳遞該結(jié)構(gòu)時復制開銷大。
# cat /proc/sys/fs/file-max #查看可監(jiān)聽fd的數(shù)量
poll
本質(zhì)上和select沒有區(qū)別,它將用戶傳入的數(shù)組拷貝到內(nèi)核空間,然后查詢每個fd對應的設備狀態(tài),其沒有最大連接數(shù)的限制,原因是它是基于鏈表來存儲的,但是同樣有一個缺點:大量的fd的數(shù)組被整體復制于用戶態(tài)和內(nèi)核地址空間之間,而不管這樣的復制是不是有意。 poll還有一個特點是“水平觸發(fā)”,如果報告了fd后,沒有被處理,那么下次poll時會再次報告該fd。
epoll
支持水平觸發(fā)和邊緣觸發(fā),最大的特點在于邊緣觸發(fā),它只告訴進程哪些fd剛剛變?yōu)榫托钁B(tài),并且只會通知一次。 使用“事件”的就緒通知方式,通過epoll_ctl注冊fd,一旦該fd就緒,內(nèi)核就會采用類似callback的回調(diào)機制來激活該fd,epoll_wait便可以收到通知。
其優(yōu)點是沒有最大并發(fā)連接的限制:能打開的FD的上限遠大于1024(1G的內(nèi)存上能監(jiān)聽約10萬個端口)效率提升:非輪詢的方式,不會隨著FD數(shù)目的增加而效率下降;只有活躍可用的FD才會調(diào)用callback函數(shù),即epoll最大的優(yōu)點就在于它只管理“活躍”的連接,而跟連接總數(shù)無關。使用內(nèi)存拷貝方式,利用mmap()文件映射內(nèi)存加速與內(nèi)核空間的消息傳遞;即epoll使用mmap減少復制開銷。
名稱欄目:八、網(wǎng)絡服務I/O模型
標題URL:http://chinadenli.net/article18/jhjodp.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供服務器托管、網(wǎng)站建設、響應式網(wǎng)站、面包屑導航、網(wǎng)站排名、網(wǎng)頁設計公司
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)