這篇文章主要講解了“l(fā)inux中的五種IO模型是什么”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“l(fā)inux中的五種IO模型是什么”吧!
額敏網(wǎng)站建設(shè)公司成都創(chuàng)新互聯(lián),額敏網(wǎng)站設(shè)計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗。已為額敏近1000家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)網(wǎng)站制作要多少錢,請找那個售后服務(wù)好的額敏做網(wǎng)站的公司定做!
對于一次IO操作,數(shù)據(jù)會先拷貝到內(nèi)核空間中,然后再從內(nèi)核空間拷貝到用戶空間中,所以一次read操作,會經(jīng)歷兩個階段:
(1)等待數(shù)據(jù)準(zhǔn)備
(2)數(shù)據(jù)從內(nèi)核空間拷貝到用戶空間
基于以上兩個階段就產(chǎn)生了五種不同的IO模式。
從進(jìn)程發(fā)起IO操作,一直等待上述兩個階段完成。
兩階段一起阻塞。
進(jìn)程一直詢問IO準(zhǔn)備好了沒有,準(zhǔn)備好了再發(fā)起讀取操作,這時才把數(shù)據(jù)從內(nèi)核空間拷貝到用戶空間。
第一階段不阻塞但要輪詢,第二階段阻塞。
多個連接使用同一個select去詢問IO準(zhǔn)備好了沒有,如果有準(zhǔn)備好了的,就返回有數(shù)據(jù)準(zhǔn)備好了,然后對應(yīng)的連接再發(fā)起讀取操作,把數(shù)據(jù)從內(nèi)核空間拷貝到用戶空間。
兩階段分開阻塞。
進(jìn)程發(fā)起讀取操作會立即返回,當(dāng)數(shù)據(jù)準(zhǔn)備好了會以通知的形式告訴進(jìn)程,進(jìn)程再發(fā)起讀取操作,把數(shù)據(jù)從內(nèi)核空間拷貝到用戶空間。
第一階段不阻塞,第二階段阻塞。
進(jìn)程發(fā)起讀取操作會立即返回,等到數(shù)據(jù)準(zhǔn)備好且已經(jīng)拷貝到用戶空間了再通知進(jìn)程拿數(shù)據(jù)。
兩個階段都不阻塞。
各種IO模式同比如下:
同步非同步的區(qū)別在于調(diào)用操作系統(tǒng)的recvfrom()的時候是否阻塞,可見除了最后的異步IO其它都是同步IO。
select 有最大文件描述符的限制,只能監(jiān)聽到有幾個文件描述符就緒了,得遍歷所有文件描述符獲取就緒的IO。
poll 沒有最大文件描述符的限制,與select一樣,只能監(jiān)聽到有幾個文件描述符就緒了,得遍歷所有文件描述符獲取就緒的IO。
epoll 沒有最大文件描述符的限制,它通過回調(diào)的機(jī)制,一旦某個文件描述符就緒了,迅速激活這個文件描述符,當(dāng)進(jìn)程下一次調(diào)用epoll_wait()的時候便得到通知。
所以,在有大量空閑連接的時候,epoll的效率要高很多。
感謝各位的閱讀,以上就是“l(fā)inux中的五種IO模型是什么”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對linux中的五種IO模型是什么這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!
本文名稱:linux中的五種IO模型是什么
URL標(biāo)題:http://jinyejixie.com/article34/pshipe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開發(fā)、服務(wù)器托管、品牌網(wǎng)站設(shè)計、全網(wǎng)營銷推廣、外貿(mào)建站、用戶體驗
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)