91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

八、網絡服務I/O模型

發布時間:2020-07-07 20:04:03 來源:網絡 閱讀:536 作者:少年不在了 欄目:建站服務器

8.1、四種的I/O模型

  在操作系統中,進程無法直接操作I/O設備,其必須通過系統調用請求kernel來協助完成I/O動作,而內核會為每個I/O設備維護一個buffer。進程與I/O之間的通信模型如圖所示。

八、網絡服務I/O模型

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

調用者處理措施:
  阻塞:進程發起 I/O 調用, 未完成之前,當前進程會被掛起;

  非阻塞:進程發起 I/O 調用,被調用函數完成之前不會阻塞當前進程,而是立即返回;

被調用者響應:

  同步:進程發起一個過程調用(功能、函數)調用后,在沒得到結果之前,該調用將不會返回;
  異步:進程發起一個過程調用后,即使調用者不能立即得結果,但調用卻會返回,返回是未未完成     狀態;當調用完成后,內核會自行通知調用者結果已經 OK;

八、網絡服務I/O模型

8.2、五種網絡服務I/0模型

 根據等待模式不同,I/O動作可分為五種模式:

同步阻塞進程會一直阻塞,直到數據拷貝完成

八、網絡服務I/O模型

同步非阻塞非阻塞IO通過進程反復調用IO函數(多次系統調用,并馬上返回);在數據拷貝的過程中,進程是阻塞的

八、網絡服務I/O模型

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

八、網絡服務I/O模型

異步IO:數據拷貝的時候進程無需阻塞。

八、網絡服務I/O模型

信號驅動:兩次調用,兩次返回。

八、網絡服務I/O模型

五種IO模型的比較:

八、網絡服務I/O模型

8.3、select/poll/epoll

select

  本質上是通過設置或者檢查存放fd標志位的數據結構來進行下一步處理,但是單個進程可監視的fd數量被限制,即能監聽端口的大小有限。對socket進行掃描時是線性掃描,即采用輪詢的方法,效率較低,需要維護一個用來存放大量fd的數據結構,這樣會使得用戶空間和內核空間在傳遞該結構時復制開銷大。 

# cat /proc/sys/fs/file-max    #查看可監聽fd的數量

poll

  本質上和select沒有區別,它將用戶傳入的數組拷貝到內核空間,然后查詢每個fd對應的設備狀態,其沒有最大連接數的限制,原因是它是基于鏈表來存儲的,但是同樣有一個缺點:大量的fd的數組被整體復制于用戶態和內核地址空間之間,而不管這樣的復制是不是有意。 poll還有一個特點是“水平觸發”,如果報告了fd后,沒有被處理,那么下次poll時會再次報告該fd。

epoll

  支持水平觸發和邊緣觸發,最大的特點在于邊緣觸發,它只告訴進程哪些fd剛剛變為就需態,并且只會通知一次。 使用“事件”的就緒通知方式,通過epoll_ctl注冊fd,一旦該fd就緒,內核就會采用類似callback的回調機制來激活該fd,epoll_wait便可以收到通知。

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

  


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

龙门县| 龙井市| 浦北县| 板桥市| 炎陵县| 乌拉特中旗| 乃东县| 河南省| 康平县| 桐梓县| 晋城| 砀山县| 奈曼旗| 清涧县| 北辰区| 海丰县| 广元市| 富民县| 正宁县| 乌鲁木齐县| 潢川县| 波密县| 葵青区| 库尔勒市| 柳林县| 新巴尔虎左旗| 曲水县| 达孜县| 咸宁市| 钟山县| 台州市| 清徐县| 武宣县| 曲沃县| 翁源县| 乐清市| 湟中县| 长岭县| 通海县| 尚义县| 汪清县|