91在线观看视频-91在线观看视频-91在线观看免费视频-91在线观看免费-欧美第二页-欧美第1页

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

克服多核系統中的并發錯誤

星星科技指導員 ? 來源:嵌入式計算設計 ? 作者:Paul Anderson ? 2022-06-17 17:08 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

多核處理器改變了游戲規則。我們只需要看看我們的智能手機就能看到它們卓越的處理能力的影響。在多核之前,處理器性能每年翻一番。隨著半導體技術的進步,芯片上的晶體管數量從 1990 年的 100 萬個增加到今天的 10 億個以上。隨著小型化的極限越來越近,業界轉向多核設計以保持性能改進的步伐,因此現在四核處理器已司空見慣。通過并行處理器內核倍增處理能力的能力可實現非凡的性能。

并發不是一個新話題,但它在多核平臺中呈現出一個新的維度。軟件開發人員已經習慣于從單個處理器內的任務調度和上下文切換的角度來考慮并發性。然而,對于多個處理器內核,真正的并行性開始發揮作用:每個線程中的指令流在每個內核上并行執行。線程之間的通信通常是使用共享內存來實現的,并且對共享資源的訪問同步通常是復雜性的最大來源,如果操作不正確,則是導致錯誤的主要原因。

編寫一個正確的并發程序是出了名的困難,而多核架構使它變得更加困難。由于增加了復雜性,多核平臺加劇了并發錯誤的影響,使它們特別有害。這些錯誤,包括競爭條件、死鎖、活鎖和資源匱乏,當它們出現時很難發現,甚至更難以診斷。在單處理器上無錯誤運行的程序可能會出現潛在錯誤,例如多核系統上的死鎖。并發錯誤可能會出現異常癥狀,這些癥狀在觸發它們的初始事件很久之后就會出現,并且通常難以重現。因為在測試過程中很難找到這樣的錯誤,多核系統需要一種新的驗證方法,專門解決并發錯誤。到目前為止,降低這些錯誤風險的最有效方法是采用多方面的方法,包括同行代碼審查、測試,最重要的是,高級靜態分析結合了復雜的并發模型。

編程語言支持

釋放多核系統的全部性能潛力需要先進的編程技術。由于大多數嵌入式開發人員對多核編程比較陌生,因此引入并發錯誤的風險非常大。今天,C 和 C++ 仍然是嵌入式系統最流行的編程語言。然而,這些語言的根本弱點之一是它們不是為并發而設計的。最新版本 C11 和 C++11 引入了對多線程的標準化支持。添加了三個特性來解決并發問題:定義多線程程序行為的內存模型;可以被并發線程安全訪問的原子數據類型;以及幾個同步原語,例如鎖和條件變量。盡管有這些改進,

與此同時,Java 越來越受到嵌入式開發人員的歡迎,如今有 28% 的人使用它,它現在是嵌入式系統第三流行的語言。與 C 和 C++ 相比,Java 始終在編程語言語法、源編譯器和標準庫中內置了對多線程的支持。此外,Java 5 添加了 java.util.concurrent 庫,該庫在 Java 6 和 Java 7 中進行了擴展,為并發和并行編程提供了廣泛的支持。

許多嵌入式設計使用 C 或 C++ 和 Java 的組合。例如,Java 在汽車應用程序中非常流行,因為它為觸摸屏顯示器或娛樂系統的用戶界面編程提供了一種簡單的方法。此類應用程序可能有許多層,其中包含用 C 編寫的安全關鍵代碼,與運行在用戶界面上的非安全關鍵 Java 代碼進行通信。

靜態分析工具

多核平臺并發程序的最大挑戰可能是無法保證能找到所有并發錯誤。實時執行指令的相對順序是多線程程序中缺陷的主要來源。當多個線程運行時,它們的指令執行的相對順序取決于同時處于活動狀態的其他線程。如果錯誤是通過編程錯誤引入的,非確定性交錯可能會導致不可預知的結果。隨著指令數量的增加,可能的交錯數量會大大增加,這種現象稱為組合爆炸。即使是最小的線程也有許多可能的交錯。現實世界的并發程序具有天文數字的合法交錯,所以測試每一個交織是不可行的。同樣,不可能使用同行代碼審查或演練來探索每條潛在的執行路徑。這是高級靜態分析工具擅長的地方。

高級靜態分析工具使用符號執行引擎來識別程序中的潛在問題,而無需實際運行程序。它們的工作方式與編譯器非常相似,將源代碼作為輸入,然后對其進行解析并將其轉換為中間表示 (IR)。編譯器會使用 IR 來生成目標代碼,而靜態分析工具會保留 IR,也稱為模型。檢查器通過遍歷或查詢模型,對代碼進行分析以查找常見缺陷、違反策略等,尋找指示缺陷的特定屬性或模式。復雜的符號執行技術通過控制流圖探索路徑,控制流圖是一種數據結構,表示語句在程序中執行的順序。算法跟蹤程序的抽象狀態,并知道如何使用該狀態來排除對不可行路徑的考慮。模型的深度決定了工具的有效性。該深度基于內置了多少程序行為知識,一次可以考慮多少程序,以及它反映實際程序行為的準確程度。

許多開發人員利用流行的開源工具來查找 Java 中的錯誤,包括 FindBugs、PMD 和 CheckStyle。其中最廣泛使用的 FindBugs 使用靜態分析來識別 Java 程序中數百種不同類型的潛在錯誤。FindBugs 對 Java 字節碼(Java 虛擬機執行的指令形式)進行操作。PMD 和 CheckStyle 檢查源代碼是否符合編碼標準并檢測不良做法。

這些工具中的每一個都有其優勢。一般來說,靜態分析工具的一個重要優勢是它們可以在開發早期使用,甚至在測試開始之前就可以發現錯誤。可用于 Java 的大多數靜態分析工具都是通用的,可以捕獲一系列表面問題。

與這些開源工具相比,有一些商業產品專門用于非常精確地識別 Java、C 或 C++ 中的并發問題。這些工具包含非常深的模型,使他們能夠發現其他工具經常遺漏的并發問題。這些高級靜態分析工具中的一些最有效的工具是基于對軟件并發行為的前沿學術研究。它們通過整個程序過程間分析提供 C 和 C++ 源代碼的高級靜態分析,通常可以處理多達 1000 萬行代碼的程序。除了查找競爭條件和死鎖之外,Java 的一種商業工具還可以識別由于錯誤使用 java.util.concurrent 提供的并發集合庫而導致的不可預測的結果。在協調對共享的非并發集合的訪問時,它會檢測到錯誤的錯誤處理或不正確的同步。此外,它還可以幫助診斷由錯誤的 API 使用、冗余同步和不必要地使用共享可變狀態引起的性能瓶頸。

由于許多項目將包括 Java 和 C 或 C++,因此團隊會發現在集成開發環境 (IDE) 中使用工具更容易、更高效。有一些工具套件可用于嵌入式和托管平臺。商業版本為程序分析、程序檢查、程序理解和架構可視化提供自動化工作流程和強大工具。使用帶有目標高級靜態分析工具的 IDE 使開發人員能夠發現現有并發代碼的基本設計意圖,并識別新代碼何時偏離該設計。它在首次引入新的并發缺陷時提供預警,并使用尖端技術幫助開發人員識別和理解它們。

有效的多核系統設計

為多核平臺開發嵌入式應用程序需要一種新方法。需要先進的編程技術來利用并行處理內核。跨并行處理器的程序線程交錯創建了天文數字的潛在執行路徑。這使得不可能測試或審查每一個可能的場景。靜態分析提供了唯一可行的方法來探索高度并發系統中軟件錯誤的所有可能代碼路徑。當與其他代碼質量實踐(例如代碼審查和集成測試)結合使用時,高級靜態分析工具可以顯著降低由于未發現的并發錯誤而導致的現場故障風險。

審核編輯:郭婷

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 處理器
    +關注

    關注

    68

    文章

    19896

    瀏覽量

    235343
  • JAVA
    +關注

    關注

    20

    文章

    2989

    瀏覽量

    109853
  • C++
    C++
    +關注

    關注

    22

    文章

    2119

    瀏覽量

    75336
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    電商API常見錯誤排查指南:避免集成陷阱

    ? 在電商平臺開發,API集成是連接系統、實現數據交換的核心環節。然而,許多開發者在集成過程中常遇到錯誤,導致項目延遲、數據丟失或用戶體驗下降。本文將逐步介紹常見錯誤類型、排查方法以
    的頭像 發表于 07-11 14:21 ?137次閱讀
    電商API常見<b class='flag-5'>錯誤</b>排查指南:避免集成陷阱

    第三屆大會回顧第3期 | FFRT并發框架在OpenHarmony的設計與實踐

    ,特別是在多核處理器上,可以顯著提高程序的運行速度和整體性能,從而改善用戶體驗。OpenHarmony的FFRT并發編程模型為開發者提供了構建異步并發任務的能力,以更高效地開發和管理并發
    的頭像 發表于 06-21 16:53 ?258次閱讀
    第三屆大會回顧第3期 | FFRT<b class='flag-5'>并發</b>框架在OpenHarmony<b class='flag-5'>中</b>的設計與實踐

    鴻蒙5開發寶藏案例分享---應用并發設計

    ?** 鴻蒙并發編程實戰指南:解鎖ArkTS多線程黑科技** 嘿,開發者朋友們! 今天給大家扒一扒鴻蒙官方文檔里藏著的并發編程寶藏—— 100+實戰場景解決方案 !從金融理財到游戲開發,從折疊屏適配
    發表于 06-12 16:19

    原理圖和PCB設計的常見錯誤

    在電子設計領域,原理圖和PCB設計是產品開發的基石,但設計過程難免遇到各種問題,若不及時排查可能影響電路板的性能及可靠性,本文將列出原理圖和PCB設計的常見錯誤,整理成一份實用的速查清單,以供參考。
    的頭像 發表于 05-15 14:34 ?388次閱讀

    TurMass? 如何幫助解決 UWB 定位系統大規模終端標簽高并發通信沖突問題?

    在大容量定位終端數據高并發場景,現有通信技術因信號沖突、系統容量受限等問題,難以滿足需求。TurMass? 通信技術通過多信道設計、時隙劃分、定位與通信一體化等創新方案,有效解決了高并發
    的頭像 發表于 03-17 14:38 ?417次閱讀
    TurMass? 如何幫助解決 UWB 定位<b class='flag-5'>系統</b>大規模終端標簽高<b class='flag-5'>并發</b>通信沖突問題?

    GPIO錯誤排查與解決

    在嵌入式系統和微控制器編程,通用輸入輸出(GPIO)是最常見的接口之一。然而,在使用GPIO時,我們可能會遇到各種錯誤。 1. 理解GPIO GPIO是微控制器上的一組引腳,可以被配置為輸入或輸出
    的頭像 發表于 01-09 09:46 ?2336次閱讀

    RTOS錯誤檢查機制

    在嵌入式應用,有可能發生各種各樣的錯誤系統必須能夠檢測到這些錯誤并作出適當的響應。RTOS通常內置了一些錯誤檢查功能,用于檢測
    的頭像 發表于 01-03 14:44 ?749次閱讀

    EEPROM編程常見錯誤及解決方案

    、電流過大或寫入時序不正確等原因而損壞或不完整。 數據讀取錯誤 : 讀取EEPROM時,可能會因為芯片斷路、短路或內部擊穿等問題導致數據讀取失敗或讀取到錯誤的數據。 位翻轉錯誤 : 存儲單元
    的頭像 發表于 12-16 17:08 ?4714次閱讀

    SQL錯誤代碼及解決方案

    在SQL數據庫開發和管理,常見的錯誤代碼及其解決方案可以歸納如下: 一、語法錯誤(Syntax Errors) 錯誤代碼 :無特定代碼,但通常會在
    的頭像 發表于 11-19 10:21 ?6548次閱讀

    pcb板設計的常見錯誤

    印刷電路板(PCB)是電子設備不可或缺的組成部分,它負責連接電子元件并傳輸電信號。一個優秀的PCB設計對于確保電路的性能、可靠性和成本效益至關重要。然而,在PCB設計過程,工程師可能會犯一些常見
    的頭像 發表于 11-04 13:58 ?910次閱讀

    socket編程錯誤處理技巧

    Socket編程是網絡編程的基礎,它允許程序之間通過TCP/IP協議進行通信。然而,網絡通信是不穩定的,可能會遇到各種問題,如網絡延遲、連接中斷、數據丟失等。 錯誤處理的重要性 提高程序的健壯性
    的頭像 發表于 11-01 17:47 ?1549次閱讀

    SRAM錯誤檢測

    電子發燒友網站提供《SRAM錯誤檢測.pdf》資料免費下載
    發表于 09-20 11:15 ?0次下載
    SRAM<b class='flag-5'>中</b>的<b class='flag-5'>錯誤</b>檢測

    多核CPU的優勢是什么

    多核CPU(Central Processing Unit,中央處理器)作為現代計算機技術的重要里程碑,其優勢在于顯著提升了計算性能、多任務處理能力、系統穩定性以及能效比等多個方面。以下將詳細闡述多核CPU的幾大優勢,并結合相關
    的頭像 發表于 08-22 14:30 ?5372次閱讀

    并發物聯網云平臺是什么

    并發物聯網云平臺是一種能夠處理大量設備同時連接并進行數據交換的云計算平臺。這種平臺通常被設計用來應對來自數以萬計甚至數十億計的物聯網設備的并發請求,保證系統的穩定性和響應速度。 首先,從技術層面
    的頭像 發表于 08-13 13:50 ?549次閱讀

    并發系統的藝術:如何在流量洪峰中游刃有余

    前言 我們常說的三高,高并發、高可用、高性能,這些技術是構建現代互聯網應用程序所必需的。對于京東618備戰來說,所有的系統服務,無疑都是圍繞著三高來展開的。而對于京東龐大的客戶群體,高并發
    的頭像 發表于 08-05 13:43 ?522次閱讀
    高<b class='flag-5'>并發</b><b class='flag-5'>系統</b>的藝術:如何在流量洪峰中游刃有余
    主站蜘蛛池模板: 天天操天天舔天天射 | 日韩基地1024首页 | bt种子在线搜索 | 一区二区三区国模大胆 | 天天草夜夜操 | 色多多网站在线观看 | 午夜dy888理论 | a毛片免费观看完整 | 亚洲精品视频专区 | 亚洲天堂不卡 | 亚洲 欧美 自拍 另类 | 2018天天干夜夜操 | 国产综合色精品一区二区三区 | 一级特黄a视频 | 欧美婷婷| 久久精品伊人波多野结 | baoyu污污网站入口免费 | 国产精品久久免费观看 | 午夜影院色| 成人国产日本亚洲精品 | 国产色婷婷精品综合在线 | 久久成人国产 | 性欧美xxxxhd | 国产性片在线观看 | 久久永久免费视频 | 色在线视频播放 | 欧美性色生活片天天看99 | 成人国产三级精品 | 97综合| 亚洲视频一区网站 | 美女涩涩网站 | 四虎影院.com| 天天艹天天艹 | 日本不卡视频免费 | 色站视频 | 狠狠色依依成人婷婷九月 | 在线播放交视频 | 三级在线观看网站 | 夜夜五月天 | 黄色在线播放网站 | 永久免费av网站 |