基於r Kernel的LiteOS作業系統

2021-06-21 15:20:00 字數 1439 閱讀 3890

liteos是應用於資源受限的感測網路的一種基於執行緒的類unix作業系統。也就是說它跑在儲存空間和ram有限的超低電壓微控制器上,這也是吸引我關注它的原因(在超低電壓下系統更易出錯)。它採用r-kernel核心,r-kernel有三個特徵:

1)為執行緒建立checkpoint,可以在出錯時進行rollback。下面是用r-kernel給出的api寫出的示例程式:

checkpointindex = createcheckpoint();

printf("point a,");

rollbackcheckpoint(checkpointindex);

printf("point b,");

程式會一直輸出point a。它將斷點存在了flash中,這是因為ram是嵌入式裝置上最受限的資源。這個特徵用來解決那些可以通過重新執行來消除的錯誤,如競態條件和死鎖。但對於確定的錯誤,要通過下面這個特徵來解決。

2)讓一些系統呼叫擁有影子

考慮下面的程式:

char *buffer = malloc(100);

/*some more code here*/

buffer[100] = 1;

顯然存在dynamic memory overrun,一旦buffer[100]的記憶體位址分配給了另乙個執行緒,就會出現錯誤。其實malloc是通過系統呼叫來與核心打交道的,如果我們能將這些系統呼叫的實現進行修改,如malloc是連續分配記憶體塊,但我們將之修改為每兩個記憶體塊之間增添固定大小的空間,這樣便在一定程度上解決上述問題(這要取決於增加空間的大小)。這就是所謂的影子(system call shadowing)。

3)watchdog是最後的防線。如核心陷入死鎖,不能定期地進行餵狗,watchdog便會進行reboot。但為了防止一次又一次因為同乙個bug重啟的尷尬,一種叫past-run race reconstruction的方法用來判斷是哪乙個執行緒造成了重啟,這樣下一次它就被禁止執行。為此我們需要將重啟前的狀態記錄下來(存在eeprom或on-board flash),之後核心會通過這些資訊找出重啟前最後乙個在執行的使用者執行緒,它一般就為錯誤執行緒,暫時丟棄它。

注:翻譯** ieee infocom 2011**

qing cao, xiaorui wang, hairong qi and tian he, r-kernel: an operating system foundation for highly reliable networked embedded systems

基於r Kernel的LiteOS作業系統

liteos是應用於資源受限的感測網路的一種基於執行緒的類unix作業系統。也就是說它跑在儲存空間和ram有限的超低電壓微控制器上,這也是吸引我關注它的原因 在超低電壓下系統更易出錯 它採用r kernel核心,r kernel有三個特徵 1 為執行緒建立checkpoint,可以在出錯時進行rol...

基於IP,基於port和基於網域名稱的三種

1 基於相同ip不同port的虛擬主機 2 將listen欄位改為 listen 80 listen 8888 以上設定表示使用80以及8888埠 3 更改虛擬主機部分為 documentroot var www html website1 documentroot var www html web...

基於函式的索引 建立基於函式的索引

基於函式的索引 1基於函式的索引是常規的b樹索引。2該索引存放的資料是由表中的資料應用函式後得到的,而不是直接存放表中的資料本身。3如果查詢條件包含與索引相同的函式,就可以使用基於函式的索引,提高查詢速度 舉例 測試表 create table student2 sno varchar2 10 pr...