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