溫馨提示×

溫馨提示×

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

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

java的IO模型有幾種

發布時間:2020-06-16 16:56:45 來源:億速云 閱讀:189 作者:元一 欄目:編程語言

服務器端編程經常需要構造高性能的IO模型

IO模型主要分為:

阻塞IO、非阻塞IO、多路復用IO、信號驅動IO以及異步IO。

1.阻塞式IO
應用進程被阻塞,知道數據復制到應用進程緩沖區才返回。在阻塞過程中,其他程序還可以執行,因此阻塞并不意味著整個操作系統被阻塞。因為其他程序還可以運行,因此不消耗CPU時間,這種模型的CPU利用率會比較高。

2.非阻塞IO
應用程序執行系統調用之后,內核返回一個錯誤碼。應用程序還可以繼續運行,但是需要不斷的執行系統調用來獲知IO是否完成,這種方式成為輪詢。
由于CPU要處理更多的系統調用,因此這種模型的CPU利用率比較低。

3.IO復用
使用select或者poll等待數據,并且可以等待多個套接字中的任何一個變為可讀。這一過程會被阻塞,當某一個套接字可讀時返回,之后使用recvfrom把數據從內核復制到進程中。

它可以讓但個進程具有處理多個I/O事件的能力,又被稱為Event Driven IO,即事件驅動IO。

4.信號驅動IO
應用進程使用sigaction系統調用,內核立即被返回,應用進程可以繼續執行,也就是說等待數據階段應用程序時非阻塞的。內核在數據到達時向應用進程發送SIGIO信號,應用進程收到之后在信號處理程序中調用recvfrom將數據從內核中復制到應用進程。
相比于非阻塞IO的輪詢方式,信號驅動I/O的CPU利用率更高。

5.異步IO
應用進程執行aio_read系統調用會立即返回,應用進程可以繼續執行,不會被阻塞,內核會在所有操作完成之后向應用進程發送信號。
異步IO與信號驅動IO的區別在于,異步IO的信號是通知應用進程IO完成,而驅動IO的信號是通知應用程序可以開始IO。
以上就是常見的五種IO模型介紹,需要圖解或詳細教學的可以私信或評論聯系我。

向AI問一下細節

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

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女