大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 hot資訊 5種Linux 網絡I/O模型解析

5種Linux 網絡I/O模型解析

更新時間:2020-12-21 17:49:05 來源:動力節點 瀏覽1419次

在實際應用中,數據操作通常分為輸入和輸出,那么以輸入為例,在操作系統中,一個數據的輸入通常分為兩個過程:等待數據準備好和將準備好的數據從內核拷貝到用戶空間。我們先來看看5種Linux網絡I/O模型分別是什么?

1.阻塞I/O

2.非阻塞I/O

3.I/O多路復用

4.信號驅動I/O

5.異步I/O

下面我們來具體分析這5種Linux網絡I/O模型:

1、阻塞IO模型

學習過操作系統的知識后,可以知道:不管是網絡IO還是磁盤IO,對于讀操作而言,都是等到網絡的某個數據分組到達后/數據準備好后,將數據拷貝到內核空間的緩沖區中,再從內核空間拷貝到用戶空間的緩沖區。
此處需要一個清新的腦回路,我就是程序,我想要全家桶,于是發起了系統調用,而后廚加工的過程就是在做數據準備和拷貝工作。全家桶最終到手,數據終于從內核空間拷貝到了用戶空間。

阻塞IO的執行過程是進程進行系統調用,等待內核將數據準備好并復制到用戶態緩沖區后,進程放棄使用CPU并一直阻塞在此,直到數據準備好。


2、非阻塞IO模型

同步阻塞 I/O 的一種效率稍低的變種是非阻塞 I/O。在這種模型中,設備是以非阻塞的形式打開的。這意味著 I/O 操作不會立即完成,read操作可能會返回一個錯誤代碼,說明這個命令不能立即滿足(EAGAIN 或 EWOULDBLOCK)

 

每次應用程序詢問內核是否有數據準備好。如果就緒,就進行拷貝操作;如果未就緒,就不阻塞程序,內核直接返回未就緒的返回值,等待用戶程序下一個輪詢。

非阻塞IO模型

大致經歷兩個階段:

等待數據階段:未阻塞, 用戶進程需要盲等,不停的去輪詢內核。

數據復制階段:阻塞,此時進行數據復制。

在這兩個階段中,用戶進程只有在數據復制階段被阻塞了,而等待數據階段沒有阻塞,但是用戶進程需要盲等,不停地輪詢內核,看數據是否準備好。

 

3.IO多路復用模型

I/O 復用有時又被稱為 事件驅動 I/O, 它的最大優勢在于,我們可以將感興趣的多個I/O事件(更精確的說,應該是 I/O 所對應的文件描述符)注冊到 select/poll/epoll/kqueue 之中某一個系統調用上(很多時候,這些系統調用又被稱為多路復用器。假設此時我們選擇了 select() )。此后,調用進程會阻塞在 select() 系統調用之上(而不是阻塞在真正的 I/O 系統調用(如 read(), write() 等)上)。select() 會負責監視所有已注冊的 I/O 事件,一旦有任意一個事件的數據準備好,那么 select() 會立即返回,此時我們的用戶進程便能夠進行數據的復制操作。

 

總而言之,I/O 復用的優點就在于可以同時等待多個I/O事件;而缺點是會進行兩次系統調用(一次 select(), 一次 read() )。

 

4.信號驅動IO模型

在這種模型下,我們首先開啟套接字的信號驅動式I/O功能,并通過sigaction系統調用安裝一個信號處理函數。改系統調用將立即返回,我們的進程繼續工作,也就是說他沒有被阻塞。當數據報準備好讀取時,內核就為該進程產生一個SIGIO信號。我們隨后就可以在信號處理函數中調用read讀取數據報,并通知主循環數據已經準備好待處理,也可以立即通知主循環,讓它讀取數據報。當數據報準備好的時候,內核會向應用程序發送一個信號,進程對信號進行捕捉,并且調用信號處理函數來獲取數據報。


5.異步IO模型

 異步 I/O 模型是一種處理與 I/O 重疊進行的模型。讀請求會立即返回,說明 read 請求已經成功發起了。在后臺完成讀操作時,應用程序然后會執行其他處理操作。當 read 的響應到達時,就會產生一個信號或執行一個基于線程的回調函數來完成這次 I/O 處理過程。 

異步I/O執行的兩個階段都不會阻塞讀寫操作,由內核完成。完成后內核將數據放到指定的緩沖區,通知應用程序來取。

 

通過以上的介紹,我想大家5種Linux網絡I/O模型有了一定的了解和認識,而且也了解到了5種Linux網絡I/O模型每種模型的優缺點,Linux同步 I/O 總會有阻塞的過程,這就是“同步”最本質的特征。而Linux異步 I/O 的最大特點在于用戶進程均不阻塞。用戶進程告知內核啟動某一 I/O 操作, 并讓內核全權代為執行(包括等待數據及拷貝數據至用戶空間),此后用戶進程可以立即執行其它的任何操作。等到所有 I/O 過程執行完成后, 內核會通知用戶進程。由此可見,在整個過程中,用戶進程均不阻塞。讓我們攜手本站的Linux教程,更加透徹的學習Linux中的各種知識吧!


提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 亚洲人成一区二区三区 | 一级毛片免费不卡 | 情趣色视频网站 | 在线成人毛片 | 欧美日韩亚洲精品一区 | 免费视频不卡 | 人成在线免费视频 | 老司机深夜影院入口aaaa | 性丰满妇女free性性性 | 成人国产精品一级毛片视频 | 亚洲丶国产丶欧美一区二区三区 | 精品国产视频在线观看 | 久草在线影视 | 视频日韩| 国产97在线观看 | 色播99| 操操操日日日 | 羞羞视频网站在线观看 | www.99色.com| 欧美肥婆xxxx欧美另类 | 天天干天天曰天天操 | 国产成人精品一区二区视频 | 日本一级在线播放线观看视频 | 99精品高清不卡在线观看 | 99热这里只有精品免费国产 | 手机看片久久高清国产日韩 | 99热这里只有精品2 99热这里只有精品3 | 精品乱久久 | 国产成人啪一区二区 | 色欧美在线 | 亚洲狠狠色丁香婷婷综合 | 日日夜夜操美女 | 一级淫片免费看 | 欧美人成在线 | 日日夜夜国产 | 四虎网站 | 亚洲国产成人精品一区91 | 二级毛片 | 午夜国产福利 | 亚洲国产高清精品线久久 | 色婷婷资源网 |