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

基于Nucleus的嵌入式系統數據庫架構設計

2020-04-22 20:27:38李鼎張秀芳劉洲洲
微型電腦應用 2020年3期
關鍵詞:數據庫

李鼎 張秀芳 劉洲洲

摘 要:針對嵌入式系統數據庫初始化過程復雜而影響整體系統進程的問題,將Nucleus數據庫系統的索引表占用地址空間縮減,同時交換塊不占地址空間,將其臨時存放在數據庫索引表的末尾節點,同時記錄區占用剩余地址空間,重點處理索引表中的數據庫記錄ID,對其進行編碼,使得可以區分數據庫類型以及記錄的類別且與文件系統以及注冊表無關。系統測試結果表明該方法提高了數據庫的存取速度且便于移植。

關鍵詞:Nucleus; 嵌入式系統; 數據庫; 架構

中圖分類號: TP311.5

文獻標志碼: A

Abstract:In order to solve the problem that the initialization process of embedded system database is complex and then affects the whole system process, this paper reduces the address space occupied by the index table in the nucleus database system, at the same time, the exchange block does not occupy the address space, temporarily stores it at the end node of the database index table, at the same time, the record area occupies the remaining address space, and focuses on dealing with the database record ID in the index table, which makes it possible to distinguish between database types and record types and is independent of file system and registry. The test results show that this method improves the access speed of database and is easy to be transplanted.

Key words:Nucleus; Embedded system; Database; Architecture

0 引言

嵌入式系統諸如智能手機,智能手環,PAD等作為物聯網設備已經廣泛地應用在多種領域[1-4]。其中系統用戶可以根據自身的軟硬件環境的要求,選擇合適的操作系統。其中數據庫作為系統的關鍵模塊,有至關重要的作用,由于記錄索引表、交換區和數據記錄區構成整個數據庫系統,其中記錄索引表占用一個地址空間且固定,而交換區不占地址空間,數據記錄區占用其余的地址空間。在記錄索引表中有每條數據庫的地址、ID、類別、大小等信息。且每個記錄ID唯一, ID號可以區分數據庫以及記錄的類別,本文提出一種ID號的編碼規則,索引表以一個記錄的形式保存到數據庫里,并用記錄類別加以區分,同時基于數據庫設備,與文件系統以及注冊表無關,可以有效提高嵌入式系統數據庫存取速度且魯棒性增強。

1 Nucleus嵌入式系統

Nucleus[5-7]是為實時嵌入式應用而設計的一個搶先式多任務操作系統。Nucleus系統的各層通訊協議都提供了由ANSIC寫成的源碼,有利于系統的可移植性并支持大部分處理器。而且Nucleus系統針對不同的處理器的源碼大部分也是相同的且少部分跟CPU相關由匯編完成[2]。該操作系統完全開源,可以通過修改開源代碼進行所需的配置,調試可以在中斷和寄存器級進行。核心函數API和程序代碼鏈接一起生產目標代碼,可以直接燒制到目標板卡中,整個核心代碼區內核規模非常小,方便調試。其中該系統[8-11]典型特點是對于堆棧的管理時將中斷時線程堆棧和系統堆棧分開,可以使得當系統空閑時使用系統堆棧,中斷嵌套處理比較簡單,而且Nucleus內核比較簡練,任務搶占的延遲可能會比較短,且內核和網絡協議都是開源碼的形式,不足之處在于對實時性不夠、定時中斷管理不可靠和對系統中斷的處理容易產生堆棧格式錯誤。

2 系統架構

本文在整個數據庫系統定義一個管理數據庫命名為:sysdb,該數據庫中的每一條記錄標識著設備用戶自己建立的數據庫,其中內容包含了數據庫名稱、索引表數目、比較函數等關鍵信息,且數據庫名不可重復,大小寫信息不敏感。當設備用戶創建、打開數據庫時候就要訪問到管理數據庫sysdb。

2.1 記錄索引表

本文設置索引表在開始地址空間,由32字節的頭部:HEAD和一個索引表構成,HEAD可用來填寫嵌入式系統的版本信息等。索引表的每項占12字節,共有5 458項,最后剩余4個字節保留。整個結構如下:

片IDHEAD索引表 冗余保留

4Bytes32Bytes12Bytes12Bytes……4Bytes

本文索引表用C語言描述為:

typedef struct tagIndex{

LONG id; //記錄ID

WORD dir; //記錄的目錄號

WORD size; //記錄大小

LONG addr; //記錄的邏輯地址

}RECINDEX, *pRECINDEX;

其中目錄號(WORD dir)表明該記錄所在的目錄,記錄大小(WORD size)表明記錄的實際大小,存儲時自動向4字節對齊,規定記錄大小不大于64 K。記錄的邏輯地址(LONG addr)由低28 bit的偏移值和高4 bit標志位構成。 其中,偏移值是記錄的邏輯地址,取之范圍0~2 M。Flag是掉電保護標志,和Bank ID的含義類似,具體含義如下:

Flag = 0xF 表示該節點空閑(Free)。

Flag = 0xE 表示正在剛剛寫完該記錄,此時記錄是完整的。

Flag = 0xC 表示該節點的記錄在使用中,記錄有效。

Flag = 0x8 表示該節點的記錄是已經被刪除了,但是排序表正在更新。

Flag = 0x0 表示該節點的記錄是已經被刪除了,排序表更新完畢。

Flag =其他 無效標志。

整個書庫系統的所有記錄個數的總和不能大于5 458,事實上,書庫系統在記錄總和接近5 400時,就開始限制加入記錄了,留下的58個節點用作臟塊整理的空間。

3.2 管理數據庫sysdb

當數據庫系統初始化時打開管理數據庫sysdb。sysdb沒有索引記錄,記錄類別只有一種,而且每條記錄注冊著一個用戶創建的數據庫。本文將sysdb的記錄格式定義如下:

typedef struct tagdatabase{

char dbName[DB_MAX_NAME_LEN]; //數據庫名稱

DWORD pDataSortProc[DB_MAX_DATA_SORT _COUNT]; //數據記錄排序函數表

DWORD pDirSortProc[DB_MAX_DIR_SORT _COUNT]; //目錄記錄排序函數表

}DBINFO;

其中:dbName是一個定長的字符串記錄著數據庫名稱,大小寫不敏感,強調一點就是數據庫名稱不能重復。因為用戶打開數據庫時要靠該名稱唯一標識數據庫。pDataSortProc 和pDirSortProc是兩個函數指針表,分別表示按照數據記錄排序和按照目錄記錄排序,他的大小表明最多有可以建立那么多排序表,每個函數指針標示一個排序方法,所有函數指針初始化成為0xFFFFFFFF,一個數據庫的排序表的個數可以在創建數據庫時候指定,同時要指定一個函數指針,一旦指定了該函數指針,就永遠不得修改,但是可以事后增加、刪除排序方法,只要不超過限定的數目。排序表的下標用來作為記錄ID編碼的元素,sysdb的記錄ID會作為該記錄的數據庫的ID,數據庫ID同樣是記錄ID編碼的元素,sysdb的數據庫ID內定為0。規定sysdb的記錄個數不能大于0x100。

3.3 ID編碼規則

本文將記錄ID由4個字節構成,從中可以解析出三種信息,分別是數據庫ID、記錄類別、記錄流水號。結構如下:

0~7 bit,庫ID8~15 bit,類別16~31 bit,記錄流水號

其中:數據庫ID是系統管理數據庫sysdb的記錄ID的記錄流水號的低8位,高8位必然為0。數據庫的記錄有四種類別:數據記錄(0x00)、目錄(0x01)、數據排序記錄(0x02)、目錄排序記錄(0x04),同時根據四種記錄類別,記錄流水號分別稱作數據記錄流水號、目錄流水號、數據排序索引、目錄排序索引。同一個數據庫的數據記錄流水號不能重復;同一個數據庫的目錄記錄流水號不能重復;同一個數據庫的數據排序記錄索引不能重復;同一個數據庫的目錄排序記錄索引不能重復。目錄流水號和數據流水號是加入數據庫的同類別記錄的流水號遞增的數值。排序索引是排序方法的ID號。流水號原則上是向上累加,并且從1開始,0表示無效,這與排序記錄的修改有關,當加到0xFFFF時,再去查找并使用以前刪除掉的記錄的流水號,就是說已經刪除掉的記錄流水號可以再次利用,但是一個記錄一旦創建,其記錄ID號終生不變,并且要按照記錄ID號中的流水號來建立排序表。

3 系統功能實現

由于每個數據庫[12-15]記錄有一個目錄屬性,表明該記錄屬于哪個目錄,目錄實際上是記錄的歸類信息。目錄本身也當作記錄存儲在數據庫中,目錄作為記錄他也有一個所屬目錄的屬性,表明自己的父目錄,由此可見整個是一個樹狀結構,數據記錄是葉子節點,樹根是sysdb。一個數據庫的根目錄沒有記錄和他對應,定義根目錄的記錄ID等于0。本文數據庫流程圖如圖1所示。

4 系統測試

本文通過上位機和下位機測試兩種方式:同時按下電源開關鍵(掛斷鍵)和退出鍵(右功能鍵)用傳輸線將小機同PC連接起來:在PC端啟動“數據庫測試程序”,小機端:按開關鍵開機連接成功后,在PC端選擇“系統自檢”。首先進行串口測試如圖2所示,同時分別測試串口0和串口1,并顯示測試結果。在測試夾具上,將會將串口0和串口1短接,故各串口自發自收,自動判斷測試結果如圖2所示。

對于所有記錄,系統將自動加入一個時間戳,來表示記錄建立或修改的時間。增加、修改、刪除一條數據記錄,系統將自動修有的數據排序記錄。同樣,增加、修改、刪除一條目錄記錄,系統將自動修改所有的目錄排序記錄。排序記錄的時間戳是做后修改的時間,數據或目錄記錄得時間戳是記錄建立的時間,在系統自檢過程前完成所有數據庫的創建和記錄,如圖3所示。

通過系統軟件測試,表明通過設置系統索引表和系統ID編碼使得數據庫系統同時存取速度提高,且系統可靠性也得到了增強。

5 總結

Nucleus作為開放嵌入式系統,具有實時性和多任務性,系統資源的調度都在其有效管理控制下可以使嵌入式多任務的開發變得省時和省力,同時高效率,本文分析了基于Nucleus的嵌入式數據庫系統索引表的機理和重新定義了ID編碼,,對于嵌入式實時操作系統的開發具有重要的意義,下一步將對在系統掉電情況下的數據庫保護進行研究。

參考文獻

[1] Zhang R R, Xu Z Y, Ma Z G, et al. Global α - nucleus optical model based on a Dirac Brueckner Hartree Fock approach[J]. Nuclear Physics, Section A,2019,57(1):990-997.

[2] Nicholas Everett, Sarah Baracz, Jennifer Cornish. Oxytocin treatment in the prelimbic cortex reduces relapse to methamphetamine-seeking and is associated with reduced activity in the rostral nucleus accumbens core[J]. Pharmacology, Biochemistry and Behavior,2019,15(1):183-187.

[3] 汪洋,禹珉. 基于Nucleus操作系統實現TCP和UDP協議通信[J].軟件工程,2018,21(9):29-33.

[4] 段亞林,謝永斌.基于Nucleus的通信終端中AT指令模塊的設計與實現[J].計算機測量與控制,2015,23(11):3744-3746.

[5] 陳連坤.嵌入式系統的設計與開發[M].北京:清華大學出版社,2005.

[6] 臺灣廣達微電子設計有限公司.基帶處理器手冊[M].臺灣:臺灣廣達微電子設計有限公司,2007.

[7] Douglas Boling. Microsoft Windows CE 程序設計[M]. 北京:北京大學出版社,1999.

[8] 蔡志明,盧傳富,李立夏.精通Qt4編程[M].北京:電子工業出版社,2008.

[9] 汪兵,李存斌. EVC高級編程及其應用開發(Embedded Visual C++嵌入式編程)[M].北京:中國水利水電出版社,2005.

[10] 繼剛. 面向智能手機的嵌入式實時操作系統[J].中興通訊技術,2005,16(4):97-99.

[11] 彭濤.嵌入式操作系統移植技術研究[D].武漢:華中科技大學,2006.

[12] Zhao Zheng, Wang Lei, Liu Huan, et al. On similarity preserving feature selection[J]. IEEE Trans on Knowledge and Data Engineering, 2013, 25(3): 619-632.

[13] Marwedel P. Embedded system design[M].北京:科學出版社,2007.

[14] Gloria D Alessandro. Mircoprocessor design for embedded system [J].Journal of Systems Architecture, 2009, 45(6):1139-1149.

[15] 魏振華.嵌入式實時操作系統Nucleus中線程控制部件的實現[J]. 計算機應用與研究,2003 ,16(4):97-99.

(收稿日期: 2019.10.31)

猜你喜歡
數據庫
數據庫
財經(2017年15期)2017-07-03 22:40:49
數據庫
財經(2017年2期)2017-03-10 14:35:35
兩種新的非確定數據庫上的Top-K查詢
數據庫
財經(2016年15期)2016-06-03 07:38:02
數據庫
財經(2016年3期)2016-03-07 07:44:46
數據庫
財經(2016年6期)2016-02-24 07:41:51
數據庫
財經(2015年3期)2015-06-09 17:41:31
數據庫
財經(2014年21期)2014-08-18 01:50:18
數據庫
財經(2014年6期)2014-03-12 08:28:19
數據庫
財經(2013年6期)2013-04-29 17:59:30
主站蜘蛛池模板: 国产成人一二三| 永久成人无码激情视频免费| 亚洲一级色| 国产精彩视频在线观看| 国产精品太粉嫩高中在线观看| 超碰91免费人妻| 亚洲欧美精品在线| 欧美另类一区| 高清亚洲欧美在线看| 无码区日韩专区免费系列 | av一区二区人妻无码| 精品国产中文一级毛片在线看| 久久久久夜色精品波多野结衣| AV网站中文| 国产精品综合久久久| 欧美一级黄色影院| 2020国产精品视频| 无码专区国产精品一区| 欧美午夜视频在线| 国产清纯在线一区二区WWW| 日韩毛片在线播放| 99在线免费播放| 多人乱p欧美在线观看| 国产毛片网站| 谁有在线观看日韩亚洲最新视频 | 亚洲国产精品不卡在线| 国产精品久久久久婷婷五月| 97人妻精品专区久久久久| 国产精品美女免费视频大全| 97se亚洲综合不卡| 国产00高中生在线播放| 88国产经典欧美一区二区三区| 欧美日本在线| 99re精彩视频| 日韩精品一区二区三区免费在线观看| 午夜免费视频网站| Jizz国产色系免费| 亚洲国产精品无码久久一线| 国产精品尹人在线观看| 久久香蕉国产线看观| 国产精品亚洲欧美日韩久久| 色综合激情网| 国产日韩欧美在线视频免费观看| 美女视频黄又黄又免费高清| 亚洲成A人V欧美综合天堂| 999精品色在线观看| 真实国产乱子伦视频| 91在线精品免费免费播放| 免费毛片在线| 国产极品美女在线| 久久永久精品免费视频| 国产精品网曝门免费视频| 熟女日韩精品2区| 免费观看男人免费桶女人视频| 国产亚洲欧美在线人成aaaa| 丁香六月激情婷婷| 小蝌蚪亚洲精品国产| 91国内外精品自在线播放| 欧美色99| 亚洲视频色图| 啪啪啪亚洲无码| 一级毛片在线免费视频| 久青草免费在线视频| 国产人成在线视频| 亚洲欧洲日韩久久狠狠爱| 99偷拍视频精品一区二区| 婷婷丁香色| 2021精品国产自在现线看| 四虎亚洲国产成人久久精品| 一区二区欧美日韩高清免费| 国产亚洲欧美在线视频| 日韩无码视频播放| 中文字幕不卡免费高清视频| 婷婷六月色| 欧美在线网| 欧美性久久久久| 国产裸舞福利在线视频合集| 亚洲欧美激情小说另类| 成年人视频一区二区| 国产视频大全| 日韩欧美中文字幕一本| 美女内射视频WWW网站午夜|