新聞中心
小編給大家分享一下java系統(tǒng)中I/O模型有哪些,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
創(chuàng)新互聯(lián)是專業(yè)的雙牌網(wǎng)站建設(shè)公司,雙牌接單;提供做網(wǎng)站、網(wǎng)站建設(shè),網(wǎng)頁設(shè)計,網(wǎng)站設(shè)計,建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行雙牌網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊,希望更多企業(yè)前來合作!
備注:進(jìn)程調(diào)用recvfrom, 系統(tǒng)調(diào)用直到數(shù)據(jù)到達(dá)且數(shù)據(jù)被復(fù)制到應(yīng)用進(jìn)程的緩存區(qū)或者發(fā)生錯誤時才返回結(jié)果,應(yīng)用進(jìn)程開始數(shù)據(jù)數(shù)據(jù)。特點:圖示中第1步和第2步都是阻塞的。
備注:調(diào)用recvfrom時沒有數(shù)據(jù)返回,因此內(nèi)核轉(zhuǎn)而立即返回一個EWOULDBLOCK錯誤;數(shù)據(jù)準(zhǔn)備好被復(fù)制到應(yīng)用進(jìn)程緩存區(qū),于是recvfrom成功返回。特點:圖示第1步?jīng)]有阻塞;第2步阻塞;由于持續(xù)輪詢內(nèi)核調(diào)用recvfrom,耗費(fèi)大量CPU資源。
備注:I/O復(fù)用可以調(diào)用select/poll阻塞在這兩個系統(tǒng)調(diào)用中的某一個上,而不是阻塞在真正的I/O系統(tǒng)調(diào)用上。圖示中應(yīng)用進(jìn)程阻塞于select調(diào)用,等待數(shù)據(jù)報套接字變?yōu)榭勺x,當(dāng)select返回套接字可讀這一條件時,調(diào)用recvfrom把所讀數(shù)據(jù)復(fù)制到應(yīng)用進(jìn)程緩沖區(qū)。特點:select等待多個描述符就緒;即圖示中第1步可以等待多個文件描述符。與I/O復(fù)用密切相關(guān)的另一種I/O模型:在多線程中使用使用阻塞I/O;該模式?jīng)]有使用select阻塞在多個文件描述符上,而是使用多線程,每個文件描述符一個線程,這樣每個線程都可以自由地調(diào)用像recvfrom之類的阻塞式系統(tǒng)調(diào)用。
備注:應(yīng)用程序開啟套接字的信號驅(qū)動式I/O功能,通過sigaction系統(tǒng)調(diào)用安裝一個信號處理函數(shù)。系統(tǒng)調(diào)用立即返回,應(yīng)用程序繼續(xù)工作,即:非阻塞。當(dāng)數(shù)據(jù)報準(zhǔn)備好讀取后,內(nèi)核為該進(jìn)程產(chǎn)生一個SIGIO信號。進(jìn)而可以調(diào)用recvfrom讀取數(shù)據(jù)報。特點:內(nèi)核在描述符就緒時發(fā)送SIGIO信號通知應(yīng)用程序,等待數(shù)據(jù)報的過程不被阻塞;即:圖示第1步不被阻塞。
備注:異步I/O由POSIX規(guī)范定義,工作機(jī)制:應(yīng)用進(jìn)程告訴內(nèi)核啟動某個動作,并在內(nèi)核處理整個過程含數(shù)據(jù)準(zhǔn)備以及數(shù)據(jù)從內(nèi)核空間復(fù)制到用戶空間完成后通知應(yīng)用進(jìn)程。應(yīng)用進(jìn)程在等待I/O完成期間不被阻塞。特點:應(yīng)用進(jìn)程不被阻塞調(diào)用aio_read后立即返回;內(nèi)核在第1步和第2步全部完成后通知應(yīng)用進(jìn)程;支持該異步I/O模型的系統(tǒng)少見。
以上是“java系統(tǒng)中I/O模型有哪些”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
名稱欄目:java系統(tǒng)中I/O模型有哪些
分享URL:http://fisionsoft.com.cn/article/jioioc.html