欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

通過(guò)最小化差錯(cuò)恢復(fù)邏輯來(lái)改善軟件系統(tǒng)的制作方法

文檔序號(hào):9383070閱讀:314來(lái)源:國(guó)知局
通過(guò)最小化差錯(cuò)恢復(fù)邏輯來(lái)改善軟件系統(tǒng)的制作方法
【專利說(shuō)明】通過(guò)最小化差錯(cuò)恢復(fù)邏輯來(lái)改善軟件系統(tǒng)
[0001] 背景
[0002] 計(jì)算機(jī)和計(jì)算系統(tǒng)已經(jīng)影響了現(xiàn)代生活的幾乎每個(gè)方面。計(jì)算機(jī)通常涉及工作、 休閑、保健、運(yùn)輸、娛樂(lè)、家政管理等。計(jì)算機(jī)功能通常是計(jì)算系統(tǒng)執(zhí)行軟件代碼的結(jié)果。
[0003] 非常大部分的現(xiàn)代軟件代碼旨在發(fā)現(xiàn)錯(cuò)誤狀況、報(bào)告錯(cuò)誤狀況和從錯(cuò)誤狀況中恢 復(fù)。在現(xiàn)實(shí)世界場(chǎng)景中,錯(cuò)誤狀況相對(duì)罕見(jiàn)并且通常難以模擬,然而程序員投入了大量的資 源來(lái)處理它們。
[0004] 在軟件系統(tǒng)內(nèi),差錯(cuò)恢復(fù)代碼中存在與這些系統(tǒng)中的全部代碼相比不成比例的隱 錯(cuò)數(shù)。這與以下事實(shí)有關(guān):錯(cuò)誤狀況通常難以模擬,結(jié)果通常保持未被測(cè)試,直到消費(fèi)者遇 到了該領(lǐng)域的底層問(wèn)題。不合適的錯(cuò)誤恢復(fù)邏輯可導(dǎo)致復(fù)合錯(cuò)誤,并最終導(dǎo)致崩潰和數(shù)據(jù) 破壞。
[0005] 常規(guī)的軟件系統(tǒng)混合有不同類型的錯(cuò)誤狀況,并提供單個(gè)機(jī)制來(lái)處理這些錯(cuò)誤狀 況。這種一致性表面上很吸引人,因?yàn)樗试S開(kāi)發(fā)者以單個(gè)一致的方式為系統(tǒng)推理出錯(cuò)誤 狀況。不幸地是,這種一致性使錯(cuò)誤的定性差異模糊。
[0006] 在此要求保護(hù)的主題不限于解決任何缺點(diǎn)或僅在諸如上述環(huán)境中操作的各個(gè)實(shí) 施例。相反,提供該背景僅用以示出在其中可實(shí)踐在此描述的部分實(shí)施例的一個(gè)示例性技 術(shù)領(lǐng)域。
[0007] 概述
[0008] -個(gè)實(shí)施例可以是具有用于處理錯(cuò)誤的動(dòng)作的在計(jì)算環(huán)境中實(shí)施的方法。該方法 包括標(biāo)識(shí)包括多個(gè)顯式地標(biāo)識(shí)出的失敗狀況(failure condition)的集合。該方法進(jìn)一步 包括確定已發(fā)生了這些顯式地標(biāo)識(shí)出的失敗狀況中的一個(gè)或多個(gè)。結(jié)果,該方法進(jìn)一步包 括停止預(yù)定的第一計(jì)算執(zhí)行范圍,并向另一計(jì)算范圍通知該失敗狀況。
[0009] -替換實(shí)施例可在計(jì)算環(huán)境中實(shí)施,并包括用于處理錯(cuò)誤的方法。該方法包括標(biāo) 識(shí)包括多個(gè)顯式地標(biāo)識(shí)出的失敗狀況的集合。該方法進(jìn)一步包括確定已發(fā)生了不在該包括 多個(gè)顯式地標(biāo)識(shí)出的失敗狀況的集合中的錯(cuò)誤狀況。作為結(jié)果,該方法進(jìn)一步包括停止預(yù) 定的第一計(jì)算執(zhí)行范圍,并向另一計(jì)算范圍通知該錯(cuò)誤狀況。
[0010] 提供本概述是為了以精簡(jiǎn)的形式介紹將在以下詳細(xì)描述中進(jìn)一步描述的一些概 念。本概述并不旨在標(biāo)識(shí)出所要求保護(hù)的主題的關(guān)鍵特征或必要特征,也不旨在用于幫助 確定所要求保護(hù)的主題的范圍。
[0011] 將在以下的描述中闡述另外的特征和優(yōu)點(diǎn),并且部分特征和優(yōu)點(diǎn)可從該描述中顯 而易見(jiàn),或者可從本文教導(dǎo)的實(shí)踐中獲知。本發(fā)明的特征和優(yōu)點(diǎn)可以通過(guò)在所附權(quán)利要求 中特別指出的手段和組合來(lái)實(shí)現(xiàn)并獲取。本發(fā)明的特征將從以下描述和所附權(quán)利要求書(shū)中 變得完全顯而易見(jiàn),或者可通過(guò)如下所述對(duì)本發(fā)明的實(shí)踐而獲知。
[0012] 附圖簡(jiǎn)述
[0013] 為了描述可獲得本主題的上述和其它優(yōu)點(diǎn)和特征的方式,將通過(guò)參考附圖中示出 的本主題的具體實(shí)施例來(lái)呈現(xiàn)以上簡(jiǎn)要描述的本主題的更具體描述。應(yīng)該理解,這些附圖 僅描繪了各典型實(shí)施例,因此其不應(yīng)被認(rèn)為是對(duì)范圍的限制,各實(shí)施例將通過(guò)使用附圖用 附加特征和詳情來(lái)描述并解釋,在附圖中:
[0014] 圖1示出了一計(jì)算執(zhí)行范圍;
[0015] 圖2示出了代碼主體和用編譯器編譯該代碼;
[0016] 圖3示出了受管代碼系統(tǒng);
[0017] 圖4示出了處理錯(cuò)誤的方法;以及
[0018] 圖5示出了處理錯(cuò)誤的另一個(gè)方法。
[0019] 詳細(xì)描述
[0020] 各實(shí)施例將全部失敗狀況顯式地劃分成"預(yù)期"失敗狀況和"非預(yù)期"失敗狀況。 軟件被預(yù)期從預(yù)期失敗就地恢復(fù),而非預(yù)期失敗被在外部處理。這樣做是因?yàn)橐罁?jù)定義這 些失敗是非預(yù)期的,并且軟件沒(méi)有為這些失敗做好準(zhǔn)備。各實(shí)施例可包括多個(gè)不同的機(jī)制 中的一者或多者,以使得軟件環(huán)境有可能系統(tǒng)地標(biāo)識(shí)出哪些失敗是預(yù)期的及哪些失敗不是 預(yù)期的,使得可發(fā)生正確的處置。參考圖1,各實(shí)施例可將軟件執(zhí)行范圍100內(nèi)發(fā)生的錯(cuò)誤 狀況的整個(gè)集合102劃分成兩種類型,并提供用于處理每一種類型的專用機(jī)制。在這樣做 時(shí),各實(shí)施例得到范圍從改善的正確性到改善的性能的多個(gè)益處。參考圖1,識(shí)別出的兩種 寬泛類型的錯(cuò)誤狀況的實(shí)施例為可內(nèi)部地恢復(fù)的狀況104和可外部地恢復(fù)的狀況106。
[0021] 可內(nèi)部地恢復(fù)的狀況104是軟件執(zhí)行范圍100能夠可靠地發(fā)現(xiàn)并從本地計(jì)算范圍 內(nèi)恢復(fù)的錯(cuò)誤狀況。這些錯(cuò)誤源自以下兩個(gè)寬泛的源:1/〇失敗和語(yǔ)義失敗。
[0022] 可外部地恢復(fù)的狀況106是各實(shí)施例確定軟件裝備不良無(wú)法就地處理并因此由 外部代理108來(lái)處理的狀況。可外部地恢復(fù)的錯(cuò)誤狀況一般源自以下兩個(gè)寬泛的源:軟件 缺陷(即,隱錯(cuò))和元失敗(例如,無(wú)法分派存儲(chǔ)器)。元失敗是與計(jì)算的語(yǔ)義不直接相關(guān) 并作為該計(jì)算在其中執(zhí)行的虛擬環(huán)境中的約束的結(jié)果的失敗。例如,計(jì)算預(yù)期具有它可將 局部變量推送到其上的棧。如果虛擬環(huán)境向棧的深度施加了限制,則計(jì)算一般無(wú)法預(yù)測(cè)該 限制將何時(shí)發(fā)生,并且可能在到達(dá)這樣的限制時(shí)沒(méi)有恢復(fù)路徑。類似地,計(jì)算通常預(yù)期能夠 分派存儲(chǔ)器,并且無(wú)法獲得新的存儲(chǔ)器是元失敗。
[0023] 在這樣的錯(cuò)誤發(fā)生時(shí),其中發(fā)生了該錯(cuò)誤的計(jì)算范圍100已在某種程度上受損, 并因此無(wú)法注意到該錯(cuò)誤狀況并從其恢復(fù)。由此,將錯(cuò)誤處理留給在未受損范圍110中操 作的外部代理108。例如,在無(wú)法分派存儲(chǔ)器的情況下,請(qǐng)求無(wú)法分派存儲(chǔ)器的原始計(jì)算范 圍100中的代理開(kāi)始恢復(fù)算法通??蓪?dǎo)致該代理嘗試分派存儲(chǔ)器來(lái)執(zhí)行該恢復(fù)算法。這沒(méi) 有多大意義。相反,能夠分派存儲(chǔ)器或者已經(jīng)分派了用于恢復(fù)的存儲(chǔ)器的外部代理108可 能夠更好地處理該錯(cuò)誤。
[0024] 對(duì)"用完存儲(chǔ)器"的常見(jiàn)響應(yīng)事實(shí)上是完全放棄該操作。盡管在常規(guī)的系統(tǒng)中經(jīng) 歷用完存儲(chǔ)器狀況的代碼必定包含非常大量的錯(cuò)誤檢查和昂貴的用于在失敗情況下進(jìn)行 清理的取消邏輯,在本文中的實(shí)施例各中,代碼可被編寫(xiě)就好像分派將一直成功一樣。如果 分派確實(shí)失敗了,則各實(shí)施例立即停止運(yùn)行任意更多代碼,并服從于另一上下文,該另一上 下文可隨后將整個(gè)操作看作已經(jīng)失敗。
[0025] 在常規(guī)系統(tǒng)中,存在提供對(duì)錯(cuò)誤狀況進(jìn)行根本不健全的本地運(yùn)行時(shí)檢測(cè)、報(bào)告和 恢復(fù)的非常大量的代碼。該代碼可能會(huì)偶爾成功,但它通常是無(wú)用的練習(xí)。本文中公開(kāi)的 一些實(shí)施例系統(tǒng)地放棄該代碼,從而導(dǎo)致沒(méi)有容易出錯(cuò)的取消邏輯的負(fù)擔(dān)的短的多的源代 碼。
[0026] 各實(shí)施例組合多個(gè)技術(shù)來(lái)將錯(cuò)誤狀況系統(tǒng)地劃分成以上兩種類型,并使得編程器 能夠顯式地推理出哪些代碼可能失敗以及哪些代碼不可能失敗。通過(guò)系統(tǒng)地應(yīng)用這些技 術(shù),各實(shí)施例實(shí)現(xiàn)了相當(dāng)多的正確性、性能和開(kāi)發(fā)時(shí)間益處。
[0027] 以下示出了本文中公開(kāi)的各個(gè)實(shí)施例中的一個(gè)或多個(gè)的各方面中的幾個(gè)方面的 簡(jiǎn)要概述。如上所述的各實(shí)施例可實(shí)現(xiàn)錯(cuò)誤類型劃分。各實(shí)施例可系統(tǒng)地將所有錯(cuò)誤狀況 分成可內(nèi)部地恢復(fù)的錯(cuò)誤104和可外部地恢復(fù)的錯(cuò)誤106,并向每一者顯式地應(yīng)用不同的 處置策略。
[0028] 各實(shí)施例可實(shí)現(xiàn)在本文中被稱為放棄的概念。放棄是立即掛起被破壞的范圍(諸 如例如軟件執(zhí)行范圍100)內(nèi)的計(jì)算的執(zhí)行的機(jī)制。操作系統(tǒng)進(jìn)程用作典型的放棄上下文 范圍,但如以下更詳細(xì)示出的,其他進(jìn)程是可能的。當(dāng)放棄發(fā)生時(shí),沒(méi)有在該計(jì)算的范圍內(nèi) 的附加代碼執(zhí)行,從而防止引入進(jìn)一步的破壞,并改為允許外部代理來(lái)嘗試進(jìn)行恢復(fù)。
[0029] 各實(shí)施例可實(shí)現(xiàn)具有放棄的整體合約。系統(tǒng)可定義基于合約的設(shè)計(jì)方法。本文中 公開(kāi)的一些實(shí)施例在操作系統(tǒng)中引入對(duì)合約的使用,從而除了使用操作系統(tǒng)實(shí)現(xiàn)內(nèi)的合約 外,還利用用于定義所有操作系統(tǒng)接口的合約。合約定義了邏輯代理要求的靜態(tài)不變式要 求集合。例如,合約可定義到邏輯代理的可接受的輸入。如果這些靜態(tài)不變式要求中的任 一沒(méi)有被滿足,則該合約被違反。各實(shí)施例通過(guò)將合約違反看作合約所適用的違反者或邏 輯代理無(wú)法校正的情況來(lái)擴(kuò)展經(jīng)典的合約模型,這使得這樣的違反進(jìn)入到可外部地恢復(fù)的 錯(cuò)誤106中。
[0030] 各實(shí)施例可實(shí)現(xiàn)具有放棄的受管運(yùn)行時(shí)。盡管常規(guī)的受管語(yǔ)言系統(tǒng)(諸如Java 和C#)依賴于異常來(lái)報(bào)告運(yùn)行時(shí)級(jí)別的錯(cuò)誤(諸如,界外陣列訪問(wèn)、空解除引用或用完存儲(chǔ) 器的狀況),但各實(shí)施例將所有這樣的事件都看作對(duì)運(yùn)行時(shí)的合約先決條件的違反,從而導(dǎo) 致放棄。
[0031] 各實(shí)施例實(shí)現(xiàn)具有放棄的存儲(chǔ)器耗盡。盡管常規(guī)系統(tǒng)嘗試向編程器系統(tǒng)地報(bào)告所 有形式的存儲(chǔ)器耗盡,但本文中公開(kāi)的一些實(shí)施例將這樣的事件看作不可內(nèi)部地恢復(fù),并 因此它們僅是導(dǎo)致當(dāng)前計(jì)算的放棄的可外部地恢復(fù)的錯(cuò)誤106。
[0032] 各實(shí)施例可為可內(nèi)部地恢復(fù)的錯(cuò)誤狀況實(shí)現(xiàn)異常效果系統(tǒng)。通過(guò)使用以上機(jī)制, 各實(shí)施例可顯著地減少需要針對(duì)可內(nèi)部地恢復(fù)的錯(cuò)誤狀況的恢復(fù)邏輯的軟件量。這使得 有可能引入效果系統(tǒng)來(lái)使得編程器和編譯器清楚哪些方法和代碼塊可經(jīng)歷可恢復(fù)的錯(cuò)誤 (如圖2中不能失敗的代碼202所示的)以及哪些方法和代碼塊不能經(jīng)歷可恢復(fù)的錯(cuò)誤(如 圖2所示的能失敗的代碼204所示的)。在一些實(shí)施例中,各方法和代碼塊可注釋有指示 它是否可內(nèi)部地恢復(fù)的元數(shù)據(jù)。這使得系統(tǒng)和應(yīng)用代碼內(nèi)的大型調(diào)用圖能夠在假定沒(méi)有內(nèi) 部錯(cuò)誤的情況下被寫(xiě)出。這使得受影響的代碼寫(xiě)和推理起來(lái)容易的多,并且改善了用于發(fā) 現(xiàn)軟件中可導(dǎo)致可外部地恢復(fù)的錯(cuò)誤狀況106的缺陷的靜態(tài)分析能力。以下示出了代碼注 釋示例。該示例示出了各方法可被聲明為拋出異常。在沒(méi)有被注釋時(shí),一方法不能拋出異 常并因此沒(méi)有經(jīng)歷到或引入任何可內(nèi)部地恢復(fù)的錯(cuò)誤。結(jié)果,對(duì)這一方法的調(diào)用被看作不 易出錯(cuò),并且不需要錯(cuò)誤恢復(fù)邏輯。然而,M2被注釋為拋出,并因此對(duì)這一方法的調(diào)用必定 在"try (嘗試)"關(guān)鍵詞之前以向編程器指示潛在的失敗點(diǎn)。此外,由于該調(diào)用可失敗,錯(cuò) 誤恢復(fù)邏輯是必須的,該錯(cuò)誤恢復(fù)邏輯被包含在catch (捕捉)子
當(dāng)前第1頁(yè)1 2 3 4 
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
卫辉市| 宿松县| 郑州市| 喀喇| 沿河| 楚雄市| 搜索| 深水埗区| 通榆县| 靖江市| 西城区| 绥中县| 木里| 曲沃县| 庆城县| 诸城市| 富川| 大化| 紫阳县| 甘洛县| 全州县| 贞丰县| 福海县| 大安市| 大同市| 达日县| 吐鲁番市| 老河口市| 大邑县| 渝北区| 含山县| 克拉玛依市| 阿拉善右旗| 全南县| 汾西县| 邵武市| 东台市| 宝应县| 勐海县| 杭州市| 濮阳市|