并發(fā)問題簡介以及研究現(xiàn)狀

如今兵罢,隨著計算機(jī)硬件,網(wǎng)絡(luò)技術(shù)以及多核心處理器系統(tǒng)的發(fā)展滓窍,并發(fā)系統(tǒng)已成為當(dāng)前主流的軟件體系卖词,隨著實際應(yīng)用對并發(fā)系統(tǒng)軟件的需求不斷增加,并發(fā)程序的分析、理解贰您、調(diào)試坏平、測試和維護(hù)已引起人們的高度重視,并發(fā)程序在提高計算效率上發(fā)揮著越來越重要的作用。

程序的并發(fā)是指若干個可在同一時間段內(nèi)執(zhí)行的程序模塊锦亦。并發(fā)和并行從宏觀上來講都是同時處理多路請求的概念舶替。但并發(fā)和并行又有區(qū)別,并行是指兩個或者多個事件在同一時刻發(fā)生杠园;而并發(fā)是指兩個或多個事件在同一時間間隔內(nèi)發(fā)生顾瞪。

并發(fā)程序的特性導(dǎo)致錯誤具有不可重現(xiàn)性,程序員很難根據(jù)錯誤報告重現(xiàn)錯誤并進(jìn)行糾正抛蚁,這使軟件排錯工作非常困難陈醒。程序的正確性僅僅依賴于程序員編寫正確的,不會沖突的代碼瞧甩,然而編寫高質(zhì)量的并發(fā)程序?qū)τ诔绦騿T而言并不是一件簡單的事钉跷,很難滿足高可靠性軟件的要求。

由于并發(fā)程序中線程調(diào)度的不確定性肚逸,并發(fā)程序開發(fā)者很難考慮到所有的輸入以及線程調(diào)度組合爷辙,使得目前的并發(fā)程序中很容易出現(xiàn)并發(fā)錯誤。另一方面朦促,并發(fā)程序帶來的問題也給傳統(tǒng)的軟件調(diào)試膝晾、軟件測試、程序分析等領(lǐng)域帶來新的挑戰(zhàn)务冕。并發(fā)程序中使用多線程技術(shù),會帶來數(shù)據(jù)的并發(fā)訪問,如果沒有進(jìn)行恰當(dāng)?shù)耐?可能會引起并發(fā)錯誤,例如數(shù)據(jù)競爭血当、原子性錯誤、數(shù)據(jù)沒有初始化和死鎖等,這些問題說明存在并發(fā)程序缺陷,會帶來和預(yù)期不同的程序執(zhí)行結(jié)果。

雖然對于并發(fā)程序的測試已經(jīng)提出了很多方法臊旭,但尚未形成完備的體系落恼,很多問題還有待解決。因此离熏,針對并發(fā)程序進(jìn)行有效的測試领跛,重現(xiàn)錯誤,找出錯誤路徑撤奸,是現(xiàn)代軟件測試的一個重要研究點。

并發(fā)軟件最常見的錯誤是非確定性喊括,數(shù)據(jù)競爭和死鎖胧瓜。非確定性行為給我們在結(jié)構(gòu)上測試多線程程序帶來了更多的挑戰(zhàn)。這意味著對并發(fā)程序的相同輸入可能導(dǎo)致不同的執(zhí)行序列郑什,它發(fā)生的原因是并發(fā)程序的交錯執(zhí)行從而可能造成應(yīng)用程序得出不正確的運行結(jié)果府喳。并發(fā)錯誤的發(fā)生不僅取決于程序的輸入和運行環(huán)境,它還取決于不同線程對同一內(nèi)存單元的交叉訪問順序以及一些和具體時間有關(guān)的事件(如信號量)蘑拯。

并發(fā)程序中的錯誤可能導(dǎo)致嚴(yán)重的后果钝满,如數(shù)據(jù)競爭,死鎖申窘,活鎖弯蚜,饑餓,順序違背以及原子性違背剃法。

數(shù)據(jù)競爭是指當(dāng)兩個或多個線程同時訪問共享數(shù)據(jù)并更改它時碎捺,會發(fā)生競爭條件;這導(dǎo)致對于共享數(shù)據(jù)的不可預(yù)測的輸出贷洲。數(shù)據(jù)競爭出現(xiàn)在軟件中收厨,當(dāng)應(yīng)用程序依賴于進(jìn)程或線程的順序或時序才能正常運行時。與電子產(chǎn)品一樣优构,存在嚴(yán)重的數(shù)據(jù)競爭诵叁,導(dǎo)致無效的執(zhí)行和錯誤。當(dāng)進(jìn)程或線程依賴某些共享狀態(tài)時钦椭,通常會發(fā)生嚴(yán)重的數(shù)據(jù)競爭拧额。共享狀態(tài)下的操作是必須相互排斥的關(guān)鍵部分。不遵守這個規(guī)則就會破壞共享狀態(tài)的可能性玉凯。

在C11和C ++ 11標(biāo)準(zhǔn)中定義的存儲器模型對于共享存儲器位置的并發(fā)讀取和寫入引起的關(guān)鍵競爭條件使用術(shù)語“數(shù)據(jù)競爭”势腮。包含數(shù)據(jù)競賽的AC或C ++程序有未定義的行為。數(shù)據(jù)競爭問題具有難以再現(xiàn)和調(diào)試的聲譽漫仆,因為最終結(jié)果是非確定性的捎拯,并且取決于干擾線程之間的相對時序。

因此,程序運行時發(fā)生的問題可能會在調(diào)試模式下運行時署照,添加額外的日志記錄或連接調(diào)試器(通常稱為“ Heisenbug ”)時消失祸泪。許多和軟件數(shù)據(jù)競爭有關(guān)聯(lián)的計算機(jī)安全隱患。數(shù)據(jù)競爭允許訪問共享資源的線程或者進(jìn)程利用該資源從而導(dǎo)致其他線程或進(jìn)程發(fā)生故障建芙。兩個或多個程序可能會在嘗試修改或訪問文件系統(tǒng)時發(fā)生沖突没隘,從而導(dǎo)致數(shù)據(jù)損壞或特權(quán)升級。文件系統(tǒng)中存在不同形式的數(shù)據(jù)競爭禁荸,其中不相關(guān)的程序可能會突然使用可用資源(如磁盤空間右蒲,內(nèi)存空間或處理器周期)而相互影響。未仔細(xì)設(shè)計以預(yù)測和處理這種種族情況的軟件可能變得不可預(yù)測赶熟。這樣的風(fēng)險可能會在似乎非彻逋可靠的系統(tǒng)中長時間被忽視。

未完待續(xù)...

轉(zhuǎn)載請注明出處

原創(chuàng)作者:撫仙湖的小王子
哈爾濱的某個地方

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末映砖,一起剝皮案震驚了整個濱河市间坐,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌邑退,老刑警劉巖竹宋,帶你破解...
    沈念sama閱讀 222,590評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異地技,居然都是意外死亡蜈七,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,157評論 3 399
  • 文/潘曉璐 我一進(jìn)店門莫矗,熙熙樓的掌柜王于貴愁眉苦臉地迎上來宪潮,“玉大人,你說我怎么就攤上這事趣苏〗葡啵” “怎么了?”我有些...
    開封第一講書人閱讀 169,301評論 0 362
  • 文/不壞的土叔 我叫張陵食磕,是天一觀的道長尽棕。 經(jīng)常有香客問我,道長彬伦,這世上最難降的妖魔是什么滔悉? 我笑而不...
    開封第一講書人閱讀 60,078評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮单绑,結(jié)果婚禮上回官,老公的妹妹穿的比我還像新娘。我一直安慰自己搂橙,他們只是感情好歉提,可當(dāng)我...
    茶點故事閱讀 69,082評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般苔巨。 火紅的嫁衣襯著肌膚如雪版扩。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,682評論 1 312
  • 那天侄泽,我揣著相機(jī)與錄音礁芦,去河邊找鬼。 笑死悼尾,一個胖子當(dāng)著我的面吹牛柿扣,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播闺魏,決...
    沈念sama閱讀 41,155評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼窄刘,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了舷胜?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,098評論 0 277
  • 序言:老撾萬榮一對情侶失蹤活翩,失蹤者是張志新(化名)和其女友劉穎烹骨,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體材泄,經(jīng)...
    沈念sama閱讀 46,638評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡沮焕,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,701評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了拉宗。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片峦树。...
    茶點故事閱讀 40,852評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖旦事,靈堂內(nèi)的尸體忽然破棺而出魁巩,到底是詐尸還是另有隱情,我是刑警寧澤姐浮,帶...
    沈念sama閱讀 36,520評論 5 351
  • 正文 年R本政府宣布谷遂,位于F島的核電站,受9級特大地震影響卖鲤,放射性物質(zhì)發(fā)生泄漏肾扰。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,181評論 3 335
  • 文/蒙蒙 一蛋逾、第九天 我趴在偏房一處隱蔽的房頂上張望集晚。 院中可真熱鬧,春花似錦区匣、人聲如沸偷拔。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,674評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽条摸。三九已至悦污,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間钉蒲,已是汗流浹背切端。 一陣腳步聲響...
    開封第一講書人閱讀 33,788評論 1 274
  • 我被黑心中介騙來泰國打工顷啼, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留踏枣,地道東北人钙蒙。 一個月前我還...
    沈念sama閱讀 49,279評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像躬厌,于是被迫代替她去往敵國和親马昨。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,851評論 2 361

推薦閱讀更多精彩內(nèi)容

  • ORA-00001: 違反唯一約束條件 (.) 錯誤說明:當(dāng)在唯一索引所對應(yīng)的列上鍵入重復(fù)值時扛施,會觸發(fā)此異常鸿捧。 O...
    我想起個好名字閱讀 5,341評論 0 9
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對...
    cosWriter閱讀 11,113評論 1 32
  • 本文出自 Eddy Wiki 匙奴,轉(zhuǎn)載請注明出處:http://eddy.wiki/interview-java.h...
    eddy_wiki閱讀 2,150評論 0 14
  • “叮——咚——咚”A市摩登廣場的大本鐘響起妄荔,午夜十二點的城市依舊繁華泼菌。 香煙先生在夜場孤獨地抽著煙,WT酒吧的人都...
    拾荒筆社閱讀 221評論 0 3
  • 重點 background-image: url(images/110.png); background-posi...
    Yuann閱讀 1,300評論 0 0