劉儒香
(亳州學(xué)院 電子與信息工程系,安徽 亳州 236800)
試論當(dāng)前網(wǎng)絡(luò)程序設(shè)計(jì)中的復(fù)雜性
劉儒香
(亳州學(xué)院 電子與信息工程系,安徽 亳州 236800)
科學(xué)技術(shù)的不斷發(fā)展使互聯(lián)網(wǎng)成為了當(dāng)前社會(huì)生活和經(jīng)濟(jì)發(fā)展不可缺少的信息基礎(chǔ)設(shè)施.但是網(wǎng)絡(luò)環(huán)境較為復(fù)雜,缺乏一定的安全性,基于網(wǎng)絡(luò)環(huán)境,傳統(tǒng)網(wǎng)絡(luò)程序設(shè)計(jì)開(kāi)發(fā)受到了前所未有的阻礙,出現(xiàn)了很多并發(fā)性問(wèn)題,使網(wǎng)絡(luò)程序開(kāi)發(fā)效率不斷降低.針對(duì)網(wǎng)絡(luò)程序設(shè)計(jì)受到并發(fā)性問(wèn)題影響的問(wèn)題,本文從網(wǎng)絡(luò)程序設(shè)計(jì)現(xiàn)狀和并發(fā)復(fù)雜性的實(shí)質(zhì)出發(fā),對(duì)網(wǎng)絡(luò)程序設(shè)計(jì)中的并發(fā)復(fù)雜性問(wèn)題進(jìn)行詳細(xì)的探討,以期為相關(guān)的研究提供相應(yīng)的意見(jiàn).
網(wǎng)絡(luò)程序設(shè)計(jì);并發(fā)復(fù)雜性;實(shí)質(zhì);模型
近年來(lái),傳統(tǒng)程序設(shè)計(jì)方法無(wú)法應(yīng)用于當(dāng)前開(kāi)發(fā)高質(zhì)量網(wǎng)絡(luò)程序中,這是因?yàn)閭鹘y(tǒng)的單機(jī)環(huán)境與當(dāng)前的網(wǎng)絡(luò)環(huán)境存在較大的差異,這些差異體現(xiàn)于網(wǎng)絡(luò)環(huán)境與單機(jī)環(huán)境之間的分布、結(jié)構(gòu)、并發(fā)性以及延誤等多種問(wèn)題方面,一旦這些問(wèn)題整體結(jié)合,網(wǎng)絡(luò)程序設(shè)計(jì)就更加難以正常開(kāi)展.并發(fā)性是阻礙網(wǎng)絡(luò)程序設(shè)計(jì)的主要因素,由于并發(fā)處理方法影響著軟件模板可組合性,進(jìn)而導(dǎo)致網(wǎng)絡(luò)程序設(shè)計(jì)中的部分問(wèn)題難以得到正常解決.因此,網(wǎng)絡(luò)程序設(shè)計(jì)者應(yīng)該重視并發(fā)性管理,以合理的并發(fā)處理模型,盡力降低網(wǎng)絡(luò)陳雪開(kāi)發(fā)難度.
1.1 網(wǎng)絡(luò)程序設(shè)計(jì)的現(xiàn)狀
程序使用過(guò)程中,網(wǎng)絡(luò)程序設(shè)計(jì)與單機(jī)程序之間存在較大的差異,由于二者之間的運(yùn)行環(huán)境并不相同,這就給網(wǎng)絡(luò)程序帶來(lái)了較大的阻礙.當(dāng)今時(shí)代已經(jīng)進(jìn)入了信息化時(shí)代,社會(huì)的發(fā)展與進(jìn)步離不開(kāi)網(wǎng)絡(luò),當(dāng)前很多軟件、設(shè)備都擁有網(wǎng)絡(luò)功能,網(wǎng)絡(luò)技術(shù)被應(yīng)用于生活、生產(chǎn)的方方面面,同時(shí)也轉(zhuǎn)變了很多工作模式.基于這樣的大背景,網(wǎng)絡(luò)程序設(shè)計(jì)得到了空前的發(fā)展,與此同時(shí),人們生活水平的不斷提高,對(duì)網(wǎng)絡(luò)程序設(shè)計(jì)的要求也隨之增高,但是傳統(tǒng)網(wǎng)絡(luò)程序設(shè)計(jì)方法已經(jīng)無(wú)法滿(mǎn)足當(dāng)代高品質(zhì)網(wǎng)絡(luò)程序設(shè)計(jì)要求,因此,完善網(wǎng)絡(luò)程序設(shè)計(jì)方法已經(jīng)成為了網(wǎng)絡(luò)程序工作中亟待解決的問(wèn)題[1].針對(duì)此,網(wǎng)絡(luò)程序設(shè)計(jì)者努力對(duì)網(wǎng)絡(luò)程序設(shè)計(jì)中存在的缺陷進(jìn)行不斷優(yōu)化和改進(jìn).但是,就是因?yàn)橄蛑@一目標(biāo)的不斷努力,程序設(shè)計(jì)者逐漸發(fā)現(xiàn)并沒(méi)有辦法可以很好地解決這些并發(fā)復(fù)雜性問(wèn)題,極大地阻礙了網(wǎng)絡(luò)程序設(shè)計(jì)的發(fā)展.針對(duì)這一現(xiàn)狀,網(wǎng)絡(luò)程序設(shè)計(jì)應(yīng)該立足于當(dāng)前發(fā)展的實(shí)際情況,對(duì)單機(jī)環(huán)境與網(wǎng)絡(luò)環(huán)境中存在的差異進(jìn)行整體調(diào)整,從細(xì)節(jié)和整體上對(duì)整個(gè)網(wǎng)絡(luò)程序設(shè)進(jìn)行完善,提高網(wǎng)絡(luò)程序模型性能,縮小并發(fā)復(fù)雜性問(wèn)題的處理規(guī)模,促進(jìn)網(wǎng)絡(luò)程序設(shè)計(jì)的發(fā)展與進(jìn)步.
1.2 網(wǎng)絡(luò)程序并發(fā)復(fù)雜性實(shí)質(zhì)
并發(fā)主要是指在一個(gè)時(shí)間段中,網(wǎng)路程序中的某幾個(gè)程序同時(shí)處于已經(jīng)啟動(dòng)運(yùn)行到運(yùn)行完畢的狀態(tài)中,且這個(gè)程序都同時(shí)在同一個(gè)處理機(jī)上運(yùn)行,在這一個(gè)整個(gè)過(guò)程中,雖然一個(gè)處理機(jī)上有多個(gè)程序運(yùn)行,但是任意一個(gè)時(shí)刻點(diǎn)上只有一個(gè)程序在處理機(jī)上運(yùn)行.具體來(lái)說(shuō),所謂“并發(fā)”,從全局的角度來(lái)看就是“串聯(lián)”,這個(gè)與在單核處理器上,多線程運(yùn)行于單人計(jì)算機(jī)相似.并發(fā)與并行存在很多相似的地方,但是二者在處理方法中存在實(shí)質(zhì)性差異,并發(fā)復(fù)雜性處理可以針對(duì)單機(jī)程序設(shè)計(jì)中存在的并發(fā)問(wèn)題進(jìn)行有針對(duì)性的解決,這對(duì)于網(wǎng)絡(luò)程序設(shè)計(jì)有重要意義.并發(fā)性問(wèn)題主要存在于網(wǎng)絡(luò)操作系統(tǒng)中,處理并發(fā)性問(wèn)題應(yīng)該根據(jù)問(wèn)題的實(shí)際情況,采用合理的方法和正確觀念.雖然相關(guān)的研究者針對(duì)解決并發(fā)性問(wèn)題研究了很長(zhǎng)時(shí)間,但是并未發(fā)現(xiàn)哪一種方法能夠徹底解決并發(fā)性問(wèn)題.當(dāng)前的處理方法大部分都是基于事件的驅(qū)動(dòng)并發(fā)模型以及多線程模型,這兩種模型各有優(yōu)點(diǎn)和缺點(diǎn),且在不同的環(huán)境下,產(chǎn)生的作用也大不相同,因此,在本質(zhì)上沒(méi)有什么模型比另一個(gè)模型優(yōu)質(zhì)的說(shuō)法,選用什么模型主要是取決于什么環(huán)境.
2.1 事件驅(qū)動(dòng)并發(fā)模型
目前的計(jì)算機(jī)大部分都是使用馮·諾依曼所設(shè)計(jì)的計(jì)算機(jī)模型,但是,這種類(lèi)型的計(jì)算機(jī)模型往往都需要依靠其他信息驅(qū)動(dòng)來(lái)運(yùn)行,即基于事件驅(qū)動(dòng)并發(fā)模型,這種計(jì)算機(jī)模型與數(shù)據(jù)流驅(qū)動(dòng)的計(jì)算機(jī)模型顯示.事件驅(qū)動(dòng)并發(fā)模型被廣泛應(yīng)用于現(xiàn)當(dāng)代的網(wǎng)絡(luò)程序設(shè)計(jì)中,網(wǎng)絡(luò)程序設(shè)計(jì)者還可以按照操作調(diào)配時(shí)機(jī),分為反應(yīng)模式和前攝模式[2].其中,反應(yīng)模式是指在數(shù)據(jù)滿(mǎn)足相應(yīng)的條件的基礎(chǔ)上,進(jìn)行相應(yīng)的操作;前攝模式則是指先進(jìn)行相應(yīng)的操作,然后再等待事件完成.
基于事件的驅(qū)動(dòng)并發(fā)模型,在對(duì)事件的維護(hù)以及函數(shù)運(yùn)行時(shí)間的處理上,基本都是通過(guò)事件分派器來(lái)進(jìn)行處理,例如:函數(shù)之間的通信主要是依靠事件完成,事件維護(hù)是通過(guò)事件分配器完成.在這種模型下,函數(shù)完成了特定的操作后,將CPU控制權(quán)又交還出來(lái),進(jìn)而通過(guò)事件分派器來(lái)做進(jìn)一步的處理.與此同時(shí),該模型會(huì)立足于事件上次沒(méi)有完成的進(jìn)度繼續(xù)跟進(jìn),這樣就反轉(zhuǎn)了CPU的控制權(quán).從上述的內(nèi)容來(lái)看,基于事件的驅(qū)動(dòng)并發(fā)模型主要是通過(guò)事件分派器對(duì)任務(wù)關(guān)系進(jìn)行處理,并對(duì)函數(shù)進(jìn)行拆分,促使函數(shù)分裂.假如在事件分派器處理任務(wù)的過(guò)程中,出現(xiàn)問(wèn)題,導(dǎo)致大量函數(shù)分裂,則會(huì)增加程序調(diào)試難度,并造成計(jì)算機(jī)內(nèi)存泄漏.總體而言,基于事件驅(qū)動(dòng)并發(fā)模型在被調(diào)用的過(guò)程中,需要進(jìn)行函數(shù)分裂,主要會(huì)導(dǎo)致函數(shù)內(nèi)部細(xì)節(jié)暴露,函數(shù)穩(wěn)定性降低,進(jìn)而降低基于事件驅(qū)動(dòng)并發(fā)模型板塊重復(fù)使用性,對(duì)計(jì)算機(jī)整體性能造成破壞.
2.2 多線程并發(fā)模型
多線程并發(fā)模型與基于事件驅(qū)動(dòng)并發(fā)模型具有一定的相似性,而菏澤都可以分為兩種調(diào)度類(lèi)型,不同的是,多線程并發(fā)模型主要分為搶占式模型和協(xié)作式模型.所謂搶占式模型主要是指計(jì)算機(jī)系統(tǒng)內(nèi)核調(diào)度和管理線程,這種調(diào)度類(lèi)型下,應(yīng)用層不會(huì)控制線程的運(yùn)行.另外,協(xié)作式模型主要是指應(yīng)用層以協(xié)作的方式進(jìn)行任務(wù)線程運(yùn)行.兩種調(diào)度方法在本質(zhì)上存在較大的差別,因此,二者所表現(xiàn)出的特征以及并發(fā)性問(wèn)題也存在很大的區(qū)別,值得注意的是,二者不存在哪一個(gè)方法優(yōu)質(zhì)哪一個(gè)方法劣質(zhì)的說(shuō)法,兩種調(diào)度方法各有其優(yōu)點(diǎn)和缺點(diǎn).
在搶占式調(diào)度方法中,計(jì)算機(jī)CPU控制權(quán)依靠于調(diào)度器的管理,但是,調(diào)度器知識(shí)對(duì)線程進(jìn)行強(qiáng)制性調(diào)度,基于這種調(diào)度模式,調(diào)度器很有可能在一個(gè)不能暫停線程的時(shí)候,反而將計(jì)算機(jī)CPU的控制權(quán)強(qiáng)制轉(zhuǎn)移到另一個(gè)線程上,這就容易造成上一個(gè)線程沒(méi)有妥善處理當(dāng)前線程所需要的數(shù)據(jù),進(jìn)而造成數(shù)據(jù)見(jiàn)的惡意競(jìng)爭(zhēng),情況嚴(yán)重還容易導(dǎo)致計(jì)算機(jī)程序崩潰[3].
協(xié)作式多線程調(diào)度方法與搶占式調(diào)度方法不同,協(xié)作式多線程調(diào)度方法不會(huì)出現(xiàn)CPU控制權(quán)的強(qiáng)制性轉(zhuǎn)移現(xiàn)象,只有在當(dāng)前線程放棄了CPU的控制權(quán)的情況下,CPU的控制權(quán)才會(huì)轉(zhuǎn)移到其他的線程.協(xié)作式調(diào)度模型可以充分發(fā)揮處理器的并行能力,但是在協(xié)作調(diào)度方法下,實(shí)時(shí)性較差,導(dǎo)致在對(duì)實(shí)時(shí)性有高要求的任務(wù)中,適合采用搶占式調(diào)度方法.只是愛(ài)大多數(shù)情況下,多線程并發(fā)模型靈活性高于基于事件驅(qū)動(dòng)并發(fā)模型.另外,多線程協(xié)作應(yīng)用于不同的計(jì)算機(jī)系統(tǒng)中時(shí),線程代碼之間的移植具有較大的困難,這降低了多線程模型的適應(yīng)性.例如:在Windows系統(tǒng)中,可以支持搶占式線程方法和協(xié)作式線程方法同時(shí)應(yīng)用,但是標(biāo)準(zhǔn)的Linux中只允許搶占式線程,在某部分資源有限的計(jì)算機(jī)系統(tǒng)中,多線程并發(fā)模型更加不被支持.
2.3 派生并發(fā)模型
派生并發(fā)模型中期貨是被應(yīng)用最廣泛的一種派生并發(fā)模型,期貨會(huì)立刻返還一個(gè)關(guān)于任何表達(dá)式N的期貨,并在同一時(shí)間并發(fā)對(duì)X的主動(dòng)求值[4].求值完成后所得出的結(jié)果取代之前產(chǎn)生的期貨,從本質(zhì)上來(lái)看,期貨就在產(chǎn)生的時(shí)候就沒(méi)有確定,只有值求出后,才能處于確定狀態(tài).使用期貨在很大程度上可以消除并發(fā)管理,甚至程序設(shè)計(jì)者都不用指導(dǎo)所使用的程序是否是期貨程序,也不用知道期貨是否處于確定狀態(tài),大部分并發(fā)管理的相關(guān)內(nèi)容都集中于產(chǎn)生期貨的程序中,在對(duì)問(wèn)題的處理過(guò)程中,除了明確任務(wù)能不能被并發(fā)執(zhí)行以外,還要根據(jù)程序多線程并發(fā)處理方式或者基于事件驅(qū)動(dòng)并發(fā)方式來(lái)進(jìn)行任務(wù)的處理,當(dāng)任務(wù)處理完成后,期貨才能夠處于確定狀態(tài).從當(dāng)前的多核并行計(jì)算環(huán)境來(lái)看,期貨受到了更加廣泛的關(guān)注,盡管期貨擁有很多優(yōu)點(diǎn),但是因?yàn)橹髁鞒绦蛟O(shè)計(jì)語(yǔ)言并不支持期貨,導(dǎo)致在實(shí)際應(yīng)用中較少.總而言之期貨主要來(lái)源于分布式計(jì)算,是一種適用于管理并行復(fù)雜性的有效措施之一.
2.4 混合性并發(fā)模型
基于事件驅(qū)動(dòng)并發(fā)模型與多線程并發(fā)模型組處理當(dāng)前網(wǎng)絡(luò)程序設(shè)計(jì)并發(fā)復(fù)雜性問(wèn)題的主要方法,這兩種處理方法各有其優(yōu)點(diǎn)和缺點(diǎn),結(jié)合二者的優(yōu)點(diǎn)所建立的新型處理方式被稱(chēng)作混合性并發(fā)模型.這種模型的運(yùn)行原理,就是把網(wǎng)絡(luò)程序進(jìn)行形式化的轉(zhuǎn)換促進(jìn)驅(qū)動(dòng)間能夠完成良好的協(xié)作驅(qū)動(dòng).從當(dāng)前的網(wǎng)絡(luò)程序設(shè)計(jì)現(xiàn)狀來(lái)看,已經(jīng)有良好的技術(shù)基礎(chǔ),可以支持事件驅(qū)動(dòng)和多線程、派生等多種并發(fā)模型的應(yīng)用,但是在處理任務(wù)的過(guò)程中具有較大的復(fù)雜性,因此缺乏一種針對(duì)發(fā)生異常突發(fā)情況的處理機(jī)制.從從總體上來(lái)看,至今為止還沒(méi)有一種全面的、系統(tǒng)的方法將多種模型融合起來(lái),盡管混合性并發(fā)模型已經(jīng)結(jié)合了多種模型中的優(yōu)點(diǎn),但是其通用性能較差,再加上混合性并發(fā)模型研發(fā)時(shí)間短,實(shí)踐時(shí)間不長(zhǎng),還有待完善,因此在實(shí)際應(yīng)用中并沒(méi)有得到良好的效果.
并發(fā)復(fù)雜性問(wèn)題普遍存在于網(wǎng)絡(luò)程序設(shè)計(jì)中,且在網(wǎng)絡(luò)信息化的大環(huán)境下,這種問(wèn)題只會(huì)越來(lái)越突出,研究人員應(yīng)該將其設(shè)置為網(wǎng)絡(luò)程序設(shè)計(jì)領(lǐng)域中的重點(diǎn)研究問(wèn)題.在網(wǎng)絡(luò)信息化發(fā)展的長(zhǎng)河中,盡管有很多研究者對(duì)并發(fā)性問(wèn)題有所研究,但是仍然缺乏系統(tǒng)的、完善的技術(shù)應(yīng)用來(lái)解決并發(fā)性復(fù)雜問(wèn)題[5].利用當(dāng)前的網(wǎng)絡(luò)技術(shù)只能通過(guò)不斷提高并發(fā)問(wèn)題解決能力來(lái)進(jìn)行網(wǎng)絡(luò)設(shè)計(jì)的完善,而且上述并發(fā)模型都擁有較大的發(fā)展空間,加入對(duì)軟件進(jìn)行細(xì)致分類(lèi),縮小處理規(guī)模,這對(duì)于并發(fā)問(wèn)題的解決具有較大的促進(jìn)作用.
總而言之,網(wǎng)絡(luò)程序設(shè)計(jì)的并發(fā)復(fù)雜性是一個(gè)無(wú)法避免的問(wèn)題,從當(dāng)前的網(wǎng)絡(luò)技術(shù)現(xiàn)狀來(lái)看,并沒(méi)有系統(tǒng)有效的措施來(lái)徹底解決這一系列并發(fā)復(fù)雜性問(wèn)題.因此,網(wǎng)絡(luò)程序設(shè)計(jì)者應(yīng)該從當(dāng)前的實(shí)際情況出發(fā),不斷強(qiáng)化自身的網(wǎng)絡(luò)程序并發(fā)處理能力,完善并發(fā)模型的性能,盡量縮小并發(fā)處理規(guī)模,充分發(fā)揮網(wǎng)絡(luò)程序的優(yōu)質(zhì)性能,使網(wǎng)絡(luò)程序設(shè)計(jì)可以正常順利地開(kāi)展.
〔1〕楊文福,王捷.網(wǎng)絡(luò)系統(tǒng)設(shè)計(jì)中的程序設(shè)計(jì)并發(fā)復(fù)雜性[J].信息通信,2016,19(1):110-111.
〔2〕高偉,張學(xué)紅.關(guān)于網(wǎng)絡(luò)程序設(shè)計(jì)中的并發(fā)復(fù)雜性研究[J].網(wǎng)絡(luò)安全技術(shù)與應(yīng)用,2014,15(12):49-51.
〔3〕林赟煌.關(guān)于網(wǎng)絡(luò)程序設(shè)計(jì)中的并發(fā)復(fù)雜性的幾點(diǎn)思考[J].民營(yíng)科技,2016,22(9):89.
〔4〕胡泳霞.基于內(nèi)存模型的 Java并發(fā)編程[J].電子測(cè)試,2016,17(13):89-90.
〔5〕盧棟棟,何清法.基于多線程的并行實(shí)例恢復(fù)方法[J].計(jì)算機(jī)應(yīng)用,2016,36(4):1002-1007.
TP311.10
A
1673-260X(2017)04-0028-02
2017-02-09
2015年安徽省省級(jí)計(jì)算機(jī)應(yīng)用技術(shù)專(zhuān)業(yè)綜合改革試點(diǎn)(2015ZY078)