Unix網(wǎng)絡(luò)編程中有哪些模型
Unix和Windows同樣是由美國(guó)的貝爾實(shí)驗(yàn)室所開發(fā)的獨(dú)立分時(shí)操作系統(tǒng),它的操作簡(jiǎn)潔,界面優(yōu)化好,是編程人員必須熟悉理解的一類操作系統(tǒng)之一。而網(wǎng)絡(luò)編程是操作系統(tǒng)開發(fā)的一項(xiàng)重要內(nèi)容,尤其是在網(wǎng)絡(luò)編程中的I/O模型研究是非常重要的一項(xiàng)任務(wù),那么在Unix網(wǎng)絡(luò)編程中,都有哪些I/O模型呢?學(xué)習(xí)啦小編來告訴你
1. 信號(hào)驅(qū)動(dòng)I/O模型
顧名思義,信號(hào)驅(qū)動(dòng)模型就是在運(yùn)轉(zhuǎn)過程中會(huì)產(chǎn)生信號(hào)信息的一種I/O模型,當(dāng)我們?cè)谕瑯拥牟僮髑闆r下,如果內(nèi)核為我們的相關(guān)操作已經(jīng)準(zhǔn)備好了數(shù)據(jù)信息,就會(huì)發(fā)送相關(guān)的SIGIO 信號(hào), 在此基礎(chǔ)上我們能夠使用sigaction 安裝 SIGIO 信號(hào)的相關(guān)處理函數(shù),并實(shí)現(xiàn)接受數(shù)據(jù)報(bào)的功能。
2.異步I/O模型
所謂異步指的就是操作反應(yīng)方式和順序有些與眾不同,異步模型中,是內(nèi)核在進(jìn)行數(shù)據(jù)拷貝完畢之后才會(huì)通知我們完成了相關(guān)的操作。配合信號(hào)驅(qū)動(dòng)的I/O模型,當(dāng)內(nèi)核工作完畢之后就能夠發(fā)送相關(guān)的操作信號(hào),并通知我們進(jìn)行下一步的操作,這就是異步I/O模型。
3. 阻塞I/O模型
阻塞I/O模型是一類對(duì)無法滿足條件的數(shù)據(jù)進(jìn)行阻塞傳遞的一類模型,例如,當(dāng)計(jì)算機(jī)使用UDP函數(shù)recvfrom的時(shí)候,從這一類函數(shù)的內(nèi)核層次到應(yīng)用層、應(yīng)用層到內(nèi)核的相互調(diào)用的過程當(dāng)中,計(jì)算機(jī)會(huì)把數(shù)據(jù)的相關(guān)信息如大小、描述符等傳遞至內(nèi)核進(jìn)行審查,假如這時(shí)候的對(duì)應(yīng)緩沖區(qū)沒有數(shù)據(jù)存在,不滿足條件,就會(huì)導(dǎo)致函數(shù)卡在數(shù)據(jù)正在傳輸?shù)奈恢枚枞?,這個(gè)I/O模型就被稱為阻塞I/O模型。
4. 非阻塞I/O模型
非阻塞模型和阻塞模型是恰好相反的一類I/O模型,具體特征為,在同樣適用UDP函數(shù)recvfrom時(shí),對(duì)數(shù)據(jù)的相關(guān)信息大小、描述符參數(shù)給內(nèi)核進(jìn)行判斷,假如對(duì)應(yīng)緩沖區(qū)沒有數(shù)據(jù),則將數(shù)據(jù)進(jìn)行返回處理,并且反復(fù)進(jìn)行這樣的操作,直到緩沖區(qū)有數(shù)據(jù)到來。
5. I/O復(fù)用模型
假如我們?cè)谶M(jìn)行I/O模型設(shè)計(jì)的時(shí)候設(shè)計(jì)了一組套接字,只要在這組套接字中出現(xiàn)可讀、可寫或者直接錯(cuò)誤的情況,select命令都會(huì)指派相關(guān)套接字進(jìn)行返回操作,出現(xiàn)這種情況的時(shí)候,我們能夠檢查套接字的狀態(tài)信息,查看它們的位置,這種類型的I/O模型就稱為復(fù)用I/O模型。
以上就是Unix網(wǎng)絡(luò)編程中能夠遇到和涉及到的五種I/O模型,當(dāng)然,計(jì)算機(jī)的編程知識(shí)非常繁雜,小編就不能夠?yàn)榇蠹以敿?xì)解讀了,希望大家看了文章以后能對(duì)大家有所幫助。
Unix網(wǎng)絡(luò)編程中有哪些模型
上一篇:無線路由要如何設(shè)置
下一篇:telnet端口的工作過程怎么樣