999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

如何保持C語言程序的安全※

2014-06-25 02:46:18IARSystemsAndersHolmberg
單片機與嵌入式系統應用 2014年4期
關鍵詞:定義標準語言

IAR Systems Anders Holmberg

姜橋 胡文婷 譯

引 言

本文關注的是使用C語言對安全功能有高度要求的安全關鍵系統(Safety-Critical System)進行開發的過程中涉及到的一些問題。盡管這種語言充滿不確定行為、依賴硬件以及其他陷阱,但它仍然是在安全關鍵開發領域使用的最為廣泛和流行的語言。而我們可以通過事先考慮和規劃,把這些潛在的問題變成了優勢。

1 移動你的腳步

早在1991年,《開發者的洞察力》雜志發表了一篇標題為《如何搬起石頭砸自己的腳》的文章,其開頭說:“隨著現代編程語言的大量擴散(彼此之間借鑒了大量類似的功能特點),有時您要弄清楚目前正在使用的是哪種編程語言都是很困難的。本指南所提供的內容可視作一項公共服務,以幫助程序員在困境中發現自我。”

由C開始的語言列表和其簡單的狀態:

◆C——搬起石頭砸了自己的腳

這個判斷可能顯得有點苛刻,但還是有些道理的。然而,即使替代編程語言可能沒有如類型安全和不確定的行為等方面的問題,但它們往往缺乏編程控制硬件功能。如果堅持用C語言,我們就需要在其優點以及明顯或不那么明顯的缺陷之間找一個平衡點。我們可以從兩個不同的角度觀察C語言在安全關鍵功能編程開發中的應用:

◆在安全關鍵的項目中有哪些外部需求,怎樣選擇編程語言?

◆可以做些什么來彌補一些明顯的C語言的缺陷呢?特別是針對現有的代碼。

2 標準答案

如果您的產品涉及到如汽車、工業控制、醫療設備、鐵路等領域,這些產品一般來說都有正式的功能安全要求。這種要求可以歸結為一個非常具體的產品容錯率要求,或產品中某些特定功能的允許故障發生的概率。它也可以是按照IEC61508(電氣和電子可編程器件)、ISO26262(汽車),或EN50126x(鐵路)等通用功能安全標準開發的產品。至少10年以來,一個明顯的趨勢是安全功能的實施正在離開純機械或PLC自動化控制,從而進入單片機的世界,因此這種要求也延伸到了軟件領域。

由于各種標準的軟件要求的意圖是類似的,我們使用IEC61508標準作為一個例子。該標準規定了許多特定行業標準的基礎要求,符合IEC61508標準的產品很大程度上也是符合ISO26262標準的。

這些標準將嚴重影響你的工作方式和工作文檔:從收集需求,到計劃你的產品如何在客戶現場部署和退役。你和你的項目利益相關方并不能單方面決定項目是否已經成功達成所選標準的規定,還必須說服來自認證機構的第三方評估員,或者是在組織中扮演類似角色的人員,獲得他們的認可。

這些標準大部分使用的是安全完整性等級概念的變種。所以根據產品的分類,在具體運用合適的標準時將會有一些變化。

3 標準適用嗎?

先來說一個有趣的問題:這與我所選擇的編程語言有什么關系呢?關系可大了,接下來就開始說明這個問題。表1給出了如何根據應用程序或者安全功能所需要達到的安全完整性水平來選擇一個合適的編程語言的相關建議。

表1 軟件設計和開發—支持工具與編程語言

HR是Highly Recommended的縮寫,這意味著對于標有HR標志的項目,應當盡量遵守該建議,如果不能遵守,也請給出一個100%合理的理由。

正如在表1中看到的,使用合適的編程語言是被強烈推薦的,但是究竟為何要被推薦,我們并沒有多大感覺,對嗎?不過,表中引用的C附錄給出了一個關于合適的編程語言的定義:語言的定義應該是充分且明確的。語言應該是面向用戶或問題的,而不是面向處理器/平臺的。與專用語言相比,應當優先選擇廣泛使用的語言或它們的子集。語言應鼓勵使用小且方便管理的軟件模塊;應當限制對在特定的軟件模塊中的數據、變量子范圍定義,以及任何其他類型錯誤限制結構的訪問。

讓我們看看C語言是否均能滿足上述各個部分的定義:

① 語言應充分明確定義:這取決于你如何考慮,可以說C99包含至少190未定義行為。

② 語言應該是面向用戶或問題的,而不是面向處理器/平臺的:最初創建C語言是為了成為PDP-11架構的系統開發語言;一個特定目標的C語言實現必然與另一個目標的實現是不同的,有時對相同目標的實現甚至都是不同的,我們真的很難認為C符合這部分定義……

③ 與專用語言相比,應當優先選擇廣泛使用的語言或它們的子集:終于,我們發現C語言是能夠滿足這條定義的!

④ 語言應該鼓勵使用小且方便管理的軟件模塊,限制對在特定的軟件模塊中數據、變量子范圍定義,以及任何其他類型錯誤限制結構的訪問:雖然C沒有明確禁止創建符合這些條件的抽象概念,但是坦率地說,我們認為正好相反,C語言本身絕對沒有對此類概念提供任何支持。

C語言并不完全符合這些標準的期望。然而,我們可以做些什么呢?其實,答案很簡單,至少我們在讀這些標準。如果繼續讀下去,會發現一個特定語言的判斷表,以下是C語言相關描述:

9 C R-NR NR 10 C及其子集和代碼編寫標準,以及靜態分析工具的使用HR HR HR HR

盡管并沒有推薦使用C語言,但是,如果嚴格遵守代碼編寫標準并使用靜態分析工具,帶有一個適合子集的C語言是被強烈推薦的。但是,上文中提及的子集和代碼編寫標準怎么理解?

4 子標準

在此背景下,語言子集就是為了減少編程錯誤的概率,增加找到已經悄然潛伏在代碼庫中錯誤的可能性。對于C語言,這意味著盡可能杜絕使用未定義的行為,實現定義明確的行為。有很多這樣的語言子集可供使用,其中最廣為人知的可能是 MISRA-C。MISRA-C規則集開始是英國汽車工業軟件可靠性協會的一項倡議,僅僅著眼于汽車軟件。多年來,MISRA-C規則已經傳播到世界各地,并擴展到其他細分行業,其規則集是現在嵌入式行業使用最廣泛的C子集。

IEC61508中也涉及了很多代碼編寫標準的說明。下面是一些MISRA-C規則之外我們需要考慮的問題:

◆如何來保護共享資源,如全局變量的訪問。

◆使用為對象分配的棧和堆的內存。

◆允許或不允許遞歸?

◆復雜性的限制,如限制函數的循環復雜度。

◆在某些不合適的情況下放棄遵循MISRA-C規則。

◆如何使用編譯器的特定功能,如本征函數或語言擴展。

◆如何使用范圍檢查,斷言和前置/后置條件以及類似的結構來捕獲錯誤。

◆模塊之間的接口組織和訪問。

◆文檔要求。

從本質上講,一種代碼編寫標準應提供一些建議來指導如何處理影響到代碼質量和完整性的問題,而不是由語言和其子集提供明確的建議。

5 總 結

總結出以下幾個重點:

◆開始寫代碼之前,先熟悉相關標準定義的軟件開發要求;

◆使用MISRA-C作為代碼編寫標準基礎;

◆檢查volatile關鍵字使用;

◆實施一個堆棧分配測試和分析策略。

本文為期刊縮略版,全文見本刊網站www.mesnet.com.cn。

猜你喜歡
定義標準語言
2022 年3 月實施的工程建設標準
語言是刀
文苑(2020年4期)2020-05-30 12:35:30
忠誠的標準
當代陜西(2019年8期)2019-05-09 02:22:48
美還是丑?
讓語言描寫搖曳多姿
累積動態分析下的同聲傳譯語言壓縮
一家之言:新標準將解決快遞業“成長中的煩惱”
專用汽車(2016年4期)2016-03-01 04:13:43
成功的定義
山東青年(2016年1期)2016-02-28 14:25:25
我有我語言
修辭學的重大定義
當代修辭學(2014年3期)2014-01-21 02:30:44
主站蜘蛛池模板: 91人人妻人人做人人爽男同| 伊人久久福利中文字幕| 中文字幕不卡免费高清视频| 手机精品视频在线观看免费| 好紧太爽了视频免费无码| 97精品久久久大香线焦| 婷婷综合缴情亚洲五月伊| 国产91丝袜在线播放动漫| 国产成人在线小视频| 一区二区在线视频免费观看| 国产精品第一区| 无码精品一区二区久久久| 亚洲国内精品自在自线官| 国产精品亚洲一区二区在线观看| 久久久久夜色精品波多野结衣| 亚洲看片网| 久久综合九色综合97婷婷| 亚洲高清在线播放| 国产激情影院| 性视频久久| 日本三级黄在线观看| 久久综合婷婷| 免费一极毛片| 国产精品女熟高潮视频| 国产激情第一页| 欧洲熟妇精品视频| 在线视频亚洲色图| 亚洲色中色| 国产人成在线视频| 国产麻豆91网在线看| 女人av社区男人的天堂| 玖玖免费视频在线观看| 97国产精品视频自在拍| 国产成人久久777777| 午夜毛片福利| 台湾AV国片精品女同性| 色悠久久综合| 日韩中文精品亚洲第三区| 综合五月天网| a毛片免费在线观看| 久久中文无码精品| 国产综合亚洲欧洲区精品无码| 免费观看亚洲人成网站| 高清欧美性猛交XXXX黑人猛交| 最新亚洲人成网站在线观看| 国产区在线看| 国产三区二区| 午夜视频免费试看| 天天做天天爱夜夜爽毛片毛片| 一级片一区| 亚洲v日韩v欧美在线观看| 日本亚洲国产一区二区三区| 狠狠五月天中文字幕| 五月天久久综合| 午夜人性色福利无码视频在线观看 | 老司机午夜精品视频你懂的| 一区二区欧美日韩高清免费| 欧美成人精品在线| 一本大道无码高清| 日韩av高清无码一区二区三区| 亚洲无码电影| 色婷婷在线影院| 国产永久免费视频m3u8| 国产在线小视频| 日本久久网站| 欧美不卡视频在线观看| 久久精品国产亚洲麻豆| 99ri精品视频在线观看播放| 免费a在线观看播放| 国产精品分类视频分类一区| 久久久久88色偷偷| 亚洲精品成人片在线观看| 久久精品66| 97视频免费看| 成年人午夜免费视频| 日韩高清无码免费| 91色在线观看| 少妇极品熟妇人妻专区视频| 亚洲精品第1页| 国产在线日本| 亚洲欧美自拍视频| 亚洲美女一级毛片|