開源和商業(yè)數(shù)據(jù)庫管理系統(tǒng) (DBMS) 已在嵌入式系統(tǒng)中使用了 20 多年。在大多數(shù)情況下,開發(fā)人員甚至不會爭論是否為嵌入式系統(tǒng)購買或構建自己的 DBMS。該組件幾乎總是被購買。
然而,嵌入式系統(tǒng)空間的一個子集仍然禁止商業(yè)供應商使用,包括某些醫(yī)療系統(tǒng)、輻射監(jiān)測、飛機導航、航空電子設備、飛行員輔助,以及最近的自動駕駛。總而言之,它們可以被稱為具有硬實時約束的任務關鍵型或安全關鍵型系統(tǒng),其中系統(tǒng)故障可能會造成傷害。
許多任務關鍵型軟件團隊正在尋找商業(yè)現(xiàn)貨 (COTS) 軟件以加快開發(fā)速度。嵌入式 DBMS 可以提供幫助,但前提是它具有確定性、可預測性和可控性。用于關鍵任務系統(tǒng)的確定性 DBMS 架構應提供具有時間有效性的 ACID(原子性、一致性、隔離性、持久性)合規(guī)性。
不是每個 DBMS 都強制執(zhí)行 ACID 屬性嗎?符合 ACID 的數(shù)據(jù)庫很常見,但其架構是針對事務吞吐量而非確定性的。一致性是最重要的屬性;事務應該只將數(shù)據(jù)庫從一種有效狀態(tài)更改為另一種有效狀態(tài)。在實時系統(tǒng)中,事務中的一組原子語句應該成功提交,或者應該全部中止,但不應在截止日期之后進行。“遲到”會帶來不一致的狀態(tài),帶來暫時無效的數(shù)據(jù)和可能的可怕后果。
一致性的關鍵時間斷言
確保所有條件下的內部數(shù)據(jù)庫一致性對于時間有效性至關重要。嵌入式數(shù)據(jù)庫在執(zhí)行效率方面提供了一些改進,但確定性 DBMS 需要更多的架構步驟才能保持準時。
首先,應該使用悲觀并發(fā)控制。它在授予一項任務訪問權限之前鎖定全部或部分數(shù)據(jù)庫,從而減少了樂觀模型中復制的不確定開銷。只讀 (RO) 事務可以并行發(fā)生,而讀寫 (RW) 事務具有獨占訪問權限,從而減少了用于鎖仲裁和死鎖預防的資源。
接下來,一個關鍵的時間斷言說明了工作量和在截止日期前回滾:
無論事務復雜性如何,將任何修改撤銷到事務中的任何點的時間都不能超過應用這些修改的時間。
RO事務有索引查找和游標移動操作;回滾以相等的間隔撤消內部計數(shù)器的任何遞增或遞減。
更簡單的 RW 事務很容易回滾。創(chuàng)建對象會根據(jù)對象大小從空閑內存池中分配頁面;反轉只是將這些頁面返回到池中。其他交易根本不需要沖銷。刪除一個對象會將其標記為在原子操作中將其刪除,因此如果事務中止,則不會發(fā)生提交時的刪除。在索引中添加或刪除對象具有樹重新平衡或哈希重新分配,它們僅在提交時生效并且不需要反轉。
更新對象看起來更復雜,但結果證明是一種有效的操作。事務第一次更新對象時,分配一個臨時對象,然后將原始對象復制到臨時對象。使用已經(jīng)創(chuàng)建的副本,后續(xù)更新會更快。回滾以相反的順序從副本中重新創(chuàng)建原始對象,然后釋放分配的內存頁,對象的回滾時間與對該對象的更新次數(shù)無關。
根據(jù)實時截止日期驗證交易
確保每個事務都安全地提交或中止后,接下來要安排事務流。回憶悲觀并發(fā);RW 事務必須按順序執(zhí)行,而 RO 事務可以并行執(zhí)行。例如,McObject 的 eXtremeDB/rt 中的動態(tài)、時間感知的最早期限優(yōu)先 (EDF) 調度根據(jù)絕對期限為事務分配優(yōu)先級。
事務管理器代碼中的驗證點指示事務語句的進展程度。如果事務在提交之前到達控制點(不再保證數(shù)據(jù)庫回滾的時間),那么“事務中斷”錯誤狀態(tài)將返回給應用程序。事務管理器將數(shù)據(jù)庫恢復到事務開始之前存在的一致狀態(tài)。
在 eXtremeDB/rt 中,應用程序可以使用兩種驗證方法:傳遞給數(shù)據(jù)庫運行時的應用程序回調,或異步事件處理程序。以下示例將控制點設置為截止時間間隔的一半,可以調整。
回調方法偽代碼
如果系統(tǒng)定時器或硬件看門狗定時器等異步原語不可用,則可以使用回調方法。操作系統(tǒng)在獲取系統(tǒng)時間方面存在細微差別,但代碼流程如以下偽代碼。首先注冊一個回調函數(shù):
接下來,創(chuàng)建回調,輪詢返回“OK”或“interrupted”狀態(tài)。
然后,啟動實時事務,數(shù)據(jù)庫運行時在原子操作中定期驗證“中斷”標志。
C 中的計時器方法代碼片段
大多數(shù)關鍵任務系統(tǒng)都有硬件計時器;使用它們可以提供更高的精度。C 語言中的三個常用代碼片段設置了計時器變量、實時事務和初始化例程。一、定時器變量:
接下來是實時交易:
還有一個簡單的初始化程序:
硬件計時器設施因操作系統(tǒng)而異。例如,在 VxWorks 中,任何任務都可以創(chuàng)建一個看門狗定時器,并在指定的延遲后使用它在系統(tǒng)時鐘 ISR 的上下文中運行指定的例程。
展望更多可控性
替代傳統(tǒng)的并發(fā)控制和調度方法有助于 eXtremeDB/rt 實現(xiàn)關鍵任務系統(tǒng)所需的確定性、可預測的行為。未來的研究旨在提高 EDF 調度程序的可控性。例如,事務上的顯式優(yōu)先級參數(shù)將有助于排序和搶占。單個事務也可以帶有回滾時間參數(shù),而不是默認的deadline/2。
實現(xiàn)從嵌入式數(shù)據(jù)庫到確定性 DBMS 的飛躍,確保數(shù)據(jù)在時間上有效,從而擴展了潛在的用例。掌握這種新的 COTS 確定性 DBMS 技術的任務關鍵型軟件團隊可以在開發(fā)計劃、風險降低和應用程序靈活性方面獲得優(yōu)勢。
審核編輯:郭婷
-
嵌入式
+關注
關注
5083文章
19131瀏覽量
305465 -
定時器
+關注
關注
23文章
3250瀏覽量
114864 -
計時器
+關注
關注
1文章
420瀏覽量
32719
發(fā)布評論請先 登錄
相關推薦
評論