基于嵌入式操作系統的控制系統平臺設計
3.2.1數據結構設計
實(shí)時(shí)數據庫與其他一般數據庫一樣,包含一組對象及其結構,由于目前對實(shí)時(shí)數據庫還沒(méi)有提出統一的數據模型,所以不同廠(chǎng)家開(kāi)發(fā)的數據庫的數據結構都有很大差別。本系統的實(shí)時(shí)數據庫,一個(gè)基本的數據對象為“數據”,一個(gè)數據包含若干信息,如數據名稱(chēng)、數據類(lèi)型、數據位置、數據長(cháng)度等。
考慮到數據的存取效率,程序運行一開(kāi)始,我們將在內存區開(kāi)辟一段緩沖區,緩沖區中只存放數據,如果緩沖區大小不夠,即緩沖區的數據較多,可以自動(dòng)擴展緩沖區大小。實(shí)時(shí)數據存放在緩沖區時(shí),我們采取這種思想:如果不是bit型數據,由于數據長(cháng)度都是字節的整數倍,存入緩沖區中以字節來(lái)進(jìn)行存儲,該數據的長(cháng)度length是以字節來(lái)計算。如果是bit型數據,存入緩沖區中,該數據的長(cháng)度length是以位來(lái)計算,接著(zhù)再存儲一個(gè)實(shí)時(shí)數據,若為非bit型數據,則從下一個(gè)字節開(kāi)始存放,即原來(lái)的bit型數據占用一個(gè)字節,若為bit型數據,根據此數據的長(cháng)度來(lái)判斷其存放位置,這里又分兩種情況,如果這兩個(gè)bit型數據的長(cháng)度沒(méi)有超過(guò)8位,則緊接著(zhù)前一個(gè)bit型數據后存儲這個(gè)bit型數據,如果兩個(gè)bit型數據的長(cháng)度超過(guò)8位,則從下一個(gè)字節開(kāi)始存放,即原來(lái)的bit型數據占用一個(gè)字節。
3.2.2數據存取設計
為了存取方便,我們將所有的實(shí)時(shí)數據組成一個(gè)鏈表,鏈表的節點(diǎn)類(lèi)型為上述的rtdb_data_t結構。當向實(shí)時(shí)緩沖區中加入一條數據時(shí),就自動(dòng)會(huì )計算出數據存儲位置、長(cháng)度等信息,并在實(shí)時(shí)數據庫鏈表中加上一個(gè)節點(diǎn)。這樣,取實(shí)時(shí)數據就非常靈活和方便,如果知道實(shí)時(shí)數據的名稱(chēng),則可以遍歷鏈表得到數據,如果知道數據的存儲位置和長(cháng)度,則可以利用實(shí)時(shí)數據庫提供的接口直接從緩沖區中獲得數據,而不必遍歷鏈表,因為遍歷鏈表需要花費一些時(shí)間,這在實(shí)時(shí)性要求較高的本系統中不太適合,所以本系統常常采用后一種方法存取數據。實(shí)時(shí)數據庫鏈表結構如圖3所示。
圖3實(shí)時(shí)數據庫鏈表結構
linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)
評論