java系統(tǒng)中I/O模型有哪些

小編給大家分享一下java系統(tǒng)中I/O模型有哪些,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

創(chuàng)新互聯(lián)是專(zhuān)業(yè)的雙牌網(wǎng)站建設(shè)公司,雙牌接單;提供做網(wǎng)站、網(wǎng)站建設(shè),網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專(zhuān)業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行雙牌網(wǎng)站開(kāi)發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專(zhuān)業(yè)做搜索引擎喜愛(ài)的網(wǎng)站,專(zhuān)業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!

一、阻塞式I/O模型

java系統(tǒng)中I/O模型有哪些

備注:進(jìn)程調(diào)用recvfrom, 系統(tǒng)調(diào)用直到數(shù)據(jù)到達(dá)且數(shù)據(jù)被復(fù)制到應(yīng)用進(jìn)程的緩存區(qū)或者發(fā)生錯(cuò)誤時(shí)才返回結(jié)果,應(yīng)用進(jìn)程開(kāi)始數(shù)據(jù)數(shù)據(jù)。特點(diǎn):圖示中第1步和第2步都是阻塞的。

二、非阻塞式I/O模型

java系統(tǒng)中I/O模型有哪些

備注:調(diào)用recvfrom時(shí)沒(méi)有數(shù)據(jù)返回,因此內(nèi)核轉(zhuǎn)而立即返回一個(gè)EWOULDBLOCK錯(cuò)誤;數(shù)據(jù)準(zhǔn)備好被復(fù)制到應(yīng)用進(jìn)程緩存區(qū),于是recvfrom成功返回。特點(diǎn):圖示第1步?jīng)]有阻塞;第2步阻塞;由于持續(xù)輪詢內(nèi)核調(diào)用recvfrom,耗費(fèi)大量CPU資源。

三、I/O復(fù)用模型

java系統(tǒng)中I/O模型有哪些

備注:I/O復(fù)用可以調(diào)用select/poll阻塞在這兩個(gè)系統(tǒng)調(diào)用中的某一個(gè)上,而不是阻塞在真正的I/O系統(tǒng)調(diào)用上。圖示中應(yīng)用進(jìn)程阻塞于select調(diào)用,等待數(shù)據(jù)報(bào)套接字變?yōu)榭勺x,當(dāng)select返回套接字可讀這一條件時(shí),調(diào)用recvfrom把所讀數(shù)據(jù)復(fù)制到應(yīng)用進(jìn)程緩沖區(qū)。特點(diǎn):select等待多個(gè)描述符就緒;即圖示中第1步可以等待多個(gè)文件描述符。與I/O復(fù)用密切相關(guān)的另一種I/O模型:在多線程中使用使用阻塞I/O;該模式?jīng)]有使用select阻塞在多個(gè)文件描述符上,而是使用多線程,每個(gè)文件描述符一個(gè)線程,這樣每個(gè)線程都可以自由地調(diào)用像recvfrom之類(lèi)的阻塞式系統(tǒng)調(diào)用。

四、信號(hào)驅(qū)動(dòng)式I/O模型

java系統(tǒng)中I/O模型有哪些

備注:應(yīng)用程序開(kāi)啟套接字的信號(hào)驅(qū)動(dòng)式I/O功能,通過(guò)sigaction系統(tǒng)調(diào)用安裝一個(gè)信號(hào)處理函數(shù)。系統(tǒng)調(diào)用立即返回,應(yīng)用程序繼續(xù)工作,即:非阻塞。當(dāng)數(shù)據(jù)報(bào)準(zhǔn)備好讀取后,內(nèi)核為該進(jìn)程產(chǎn)生一個(gè)SIGIO信號(hào)。進(jìn)而可以調(diào)用recvfrom讀取數(shù)據(jù)報(bào)。特點(diǎn):內(nèi)核在描述符就緒時(shí)發(fā)送SIGIO信號(hào)通知應(yīng)用程序,等待數(shù)據(jù)報(bào)的過(guò)程不被阻塞;即:圖示第1步不被阻塞。

五、異步I/O模型

java系統(tǒng)中I/O模型有哪些

備注:異步I/O由POSIX規(guī)范定義,工作機(jī)制:應(yīng)用進(jìn)程告訴內(nèi)核啟動(dòng)某個(gè)動(dòng)作,并在內(nèi)核處理整個(gè)過(guò)程含數(shù)據(jù)準(zhǔn)備以及數(shù)據(jù)從內(nèi)核空間復(fù)制到用戶空間完成后通知應(yīng)用進(jìn)程。應(yīng)用進(jìn)程在等待I/O完成期間不被阻塞。特點(diǎn):應(yīng)用進(jìn)程不被阻塞調(diào)用aio_read后立即返回;內(nèi)核在第1步和第2步全部完成后通知應(yīng)用進(jìn)程;支持該異步I/O模型的系統(tǒng)少見(jiàn)。

以上是“java系統(tǒng)中I/O模型有哪些”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

網(wǎng)頁(yè)名稱(chēng):java系統(tǒng)中I/O模型有哪些
URL鏈接:http://muchs.cn/article2/jioioc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信小程序、定制網(wǎng)站網(wǎng)站導(dǎo)航、企業(yè)網(wǎng)站制作網(wǎng)站排名、電子商務(wù)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

微信小程序開(kāi)發(fā)

網(wǎng)站設(shè)計(jì)公司知識(shí)