真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

八、網(wǎng)絡(luò)服務(wù)I/O模型

8.1、四種的I/O模型

創(chuàng)新互聯(lián)公司是一家專業(yè)提供吉首企業(yè)網(wǎng)站建設(shè),專注與成都做網(wǎng)站、網(wǎng)站制作、H5建站、小程序制作等業(yè)務(wù)。10年已為吉首眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)的建站公司優(yōu)惠進(jìn)行中。

  在操作系統(tǒng)中,進(jìn)程無法直接操作I/O設(shè)備,其必須通過系統(tǒng)調(diào)用請(qǐng)求kernel來協(xié)助完成I/O動(dòng)作,而內(nèi)核會(huì)為每個(gè)I/O設(shè)備維護(hù)一個(gè)buffer。進(jìn)程與I/O之間的通信模型如圖所示。

八、網(wǎng)絡(luò)服務(wù)I/O模型

  對(duì)于輸入而言,等待(wait)數(shù)據(jù)輸入至buffer需要時(shí)間,而從buffer復(fù)制(copy)數(shù)據(jù)至進(jìn)程也需要時(shí)間。根據(jù)調(diào)用者與被調(diào)用者的不同就有四種I/0模型。

調(diào)用者處理措施:
  阻塞:進(jìn)程發(fā)起 I/O 調(diào)用, 未完成之前,當(dāng)前進(jìn)程會(huì)被掛起;

  非阻塞:進(jìn)程發(fā)起 I/O 調(diào)用,被調(diào)用函數(shù)完成之前不會(huì)阻塞當(dāng)前進(jìn)程,而是立即返回;

被調(diào)用者響應(yīng):

  同步:進(jìn)程發(fā)起一個(gè)過程調(diào)用(功能、函數(shù))調(diào)用后,在沒得到結(jié)果之前,該調(diào)用將不會(huì)返回;
  異步:進(jìn)程發(fā)起一個(gè)過程調(diào)用后,即使調(diào)用者不能立即得結(jié)果,但調(diào)用卻會(huì)返回,返回是未未完成     狀態(tài);當(dāng)調(diào)用完成后,內(nèi)核會(huì)自行通知調(diào)用者結(jié)果已經(jīng) OK;

八、網(wǎng)絡(luò)服務(wù)I/O模型

8.2、五種網(wǎng)絡(luò)服務(wù)I/0模型

 根據(jù)等待模式不同,I/O動(dòng)作可分為五種模式:

同步阻塞:進(jìn)程會(huì)一直阻塞,直到數(shù)據(jù)拷貝完成。

八、網(wǎng)絡(luò)服務(wù)I/O模型

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

八、網(wǎng)絡(luò)服務(wù)I/O模型

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

八、網(wǎng)絡(luò)服務(wù)I/O模型

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

八、網(wǎng)絡(luò)服務(wù)I/O模型

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

八、網(wǎng)絡(luò)服務(wù)I/O模型

五種IO模型的比較:

八、網(wǎng)絡(luò)服務(wù)I/O模型

8.3、select/poll/epoll

select

  本質(zhì)上是通過設(shè)置或者檢查存放fd標(biāo)志位的數(shù)據(jù)結(jié)構(gòu)來進(jìn)行下一步處理,但是單個(gè)進(jìn)程可監(jiān)視的fd數(shù)量被限制,即能監(jiān)聽端口的大小有限。對(duì)socket進(jìn)行掃描時(shí)是線性掃描,即采用輪詢的方法,效率較低,需要維護(hù)一個(gè)用來存放大量fd的數(shù)據(jù)結(jié)構(gòu),這樣會(huì)使得用戶空間和內(nèi)核空間在傳遞該結(jié)構(gòu)時(shí)復(fù)制開銷大。 

# cat /proc/sys/fs/file-max    #查看可監(jiān)聽fd的數(shù)量

poll

  本質(zhì)上和select沒有區(qū)別,它將用戶傳入的數(shù)組拷貝到內(nèi)核空間,然后查詢每個(gè)fd對(duì)應(yīng)的設(shè)備狀態(tài),其沒有最大連接數(shù)的限制,原因是它是基于鏈表來存儲(chǔ)的,但是同樣有一個(gè)缺點(diǎn):大量的fd的數(shù)組被整體復(fù)制于用戶態(tài)和內(nèi)核地址空間之間,而不管這樣的復(fù)制是不是有意。 poll還有一個(gè)特點(diǎn)是“水平觸發(fā)”,如果報(bào)告了fd后,沒有被處理,那么下次poll時(shí)會(huì)再次報(bào)告該fd。

epoll

  支持水平觸發(fā)和邊緣觸發(fā),最大的特點(diǎn)在于邊緣觸發(fā),它只告訴進(jìn)程哪些fd剛剛變?yōu)榫托钁B(tài),并且只會(huì)通知一次。 使用“事件”的就緒通知方式,通過epoll_ctl注冊(cè)fd,一旦該fd就緒,內(nèi)核就會(huì)采用類似callback的回調(diào)機(jī)制來激活該fd,epoll_wait便可以收到通知。

  其優(yōu)點(diǎn)是沒有最大并發(fā)連接的限制:能打開的FD的上限遠(yuǎn)大于1024(1G的內(nèi)存上能監(jiān)聽約10萬個(gè)端口)效率提升:非輪詢的方式,不會(huì)隨著FD數(shù)目的增加而效率下降;只有活躍可用的FD才會(huì)調(diào)用callback函數(shù),即epoll最大的優(yōu)點(diǎn)就在于它只管理“活躍”的連接,而跟連接總數(shù)無關(guān)。使用內(nèi)存拷貝方式,利用mmap()文件映射內(nèi)存加速與內(nèi)核空間的消息傳遞;即epoll使用mmap減少復(fù)制開銷。 

  


分享名稱:八、網(wǎng)絡(luò)服務(wù)I/O模型
分享網(wǎng)址:http://weahome.cn/article/jhjodp.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部