專利名稱:基于VxWorks的空間機器人中央處理器的內(nèi)存模塊及其管理方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種基于VxWorks操作系統(tǒng)的內(nèi)存模塊,特別是針對空 間機器人特點所設(shè)計的具有高可靠性的內(nèi)存模塊及其管理方法,屬于空 間技術(shù)領(lǐng)域。
技術(shù)背景隨著航天技術(shù)的發(fā)展,人類在太空的活動越來越多。利用空間機器 人協(xié)助或替代宇航員完成空間作業(yè),不僅可以避免宇航員在惡劣的太空 環(huán)境中作業(yè)時受到傷害,而且同時還可以提高完成任務(wù)的效率和質(zhì)量, 是實現(xiàn)人類探索太空的使命安全、低消耗的有效途徑。隨著人類在太空 中的活動的日益增加,在未來空間機器人將扮演越來越重要的角色,空 間機器人技術(shù)成為最有吸引力的研究領(lǐng)域之一??臻g機器人控制系統(tǒng)是一種應(yīng)用于空間環(huán)境下的分布式實時控制 系統(tǒng),需要具備強大的智能和自主能力,來適應(yīng)復(fù)雜的空間環(huán)境,完成 人類所期望的任務(wù),這就需要控制系統(tǒng)軟件的支持。因而控制軟件的可 靠性和正常運行的能力顯得至關(guān)重要。然而,現(xiàn)有的操作系統(tǒng)多是按照平常大多數(shù)應(yīng)用程序所設(shè)計,其系統(tǒng) 分區(qū)容易產(chǎn)生大量殘留的碎片。當申請大塊數(shù)據(jù)時候,有可能出現(xiàn)申請失敗 的情況。這對實時性和可靠性要求非常高的空間技術(shù)的系統(tǒng)設(shè)計中是絕對不 允許出現(xiàn)的。因此,有必要提出一種有針對性的內(nèi)存管理方法。 發(fā)明內(nèi)容本發(fā)明的發(fā)明目的在于提供一種基于VxWorks操作系統(tǒng)針對空間機 器人特點所設(shè)計的具有高可靠性的內(nèi)存模塊及其管理方法。 本發(fā)明的發(fā)明目的是通過下述技術(shù)方案予以實現(xiàn)的 空間機器人的內(nèi)存模塊,其特征在于包括定長內(nèi)存緩沖池、變長內(nèi) 存緩沖池、定長內(nèi)存分配隊列;所述定長內(nèi)存緩沖池內(nèi)包括若干固定長度的定長內(nèi)存單元; 所述定長內(nèi)存分配隊列中存儲所述定長內(nèi)存緩沖池中各個定長內(nèi)存單元 的地址;所述變長內(nèi)存緩沖池為可以申請任意長度內(nèi)存的內(nèi)存緩沖區(qū)。 所述定長內(nèi)存緩沖池被分為定長長緩沖池和定長短緩沖池。 所述定長內(nèi)存緩沖池中的定長內(nèi)存單元均采用環(huán)形靜態(tài)存儲結(jié)構(gòu)。 還包括定長內(nèi)存緩沖池管理模塊、定長內(nèi)存緩沖池記錄表; 所述定長內(nèi)存緩沖池管理模塊內(nèi)設(shè)有周期監(jiān)測定時器和防死鎖定時器;所述周期監(jiān)測定時器為周期性信號用于監(jiān)控所述定長內(nèi)存緩沖池的資源;所述防死鎖定時器為非周期性信號用于防止內(nèi)存模塊鎖死;所述定長內(nèi)存緩沖池記錄表用于記錄申請內(nèi)存的任務(wù)ID和申請內(nèi)存的情況??臻g機器人的內(nèi)存分配方法,其特征在于-1) 內(nèi)存模塊初始化,分配定長內(nèi)存緩沖池和變長內(nèi)存緩沖池的區(qū)間, 并將定長內(nèi)存緩沖池劃分為若干定長內(nèi)存單元;2) 創(chuàng)建定長內(nèi)存分配隊列,將所述定長內(nèi)存緩沖池中各個定長內(nèi)存單 元的地址存儲于定長內(nèi)存分配隊列中;3) 任務(wù)申請內(nèi)存消息緩沖時,若申請長度不超過定長內(nèi)存緩沖池中各個 定長內(nèi)存單元的固定長度,則優(yōu)先在定長內(nèi)存單元申請,同時將定長內(nèi)存分 配隊列中對應(yīng)的地址信息取出;4) 若申請長度超過定長內(nèi)存單元的固定長度或定長內(nèi)存單元己全部被分 配出去,則向所述變長內(nèi)存緩沖池申請;5) 當需要釋放內(nèi)存時,將被釋放的定長內(nèi)存單元的地址歸還定長內(nèi)存分配隊列。所述步驟1中,定長內(nèi)存緩沖池中的定長內(nèi)存單元被劃分為定長長緩 沖池和定長短緩沖池;所述步驟3被改為下述步驟3i)任務(wù)申請內(nèi)存消息緩沖時,若申請長度不超過定長短緩沖池的長度 時,優(yōu)先在定長短緩沖池申請;如果定長短緩沖池全部被分配出去,繼而向定 長長緩沖池申請,如果成功將得到一個定長長緩沖池的定長內(nèi)存單元3ii)若申請長度大于定長短緩沖池的長度而小于定長長緩沖池的長度時, 優(yōu)先在定長長緩沖池中分配一個定長長緩沖池的定長內(nèi)存單元;如果這時定 長長緩沖池已全部被分配出去,則向變長內(nèi)存緩沖池申請。空間機器人的內(nèi)存的管理方法,其特征在于-al)定長內(nèi)存緩沖池管理模塊在系統(tǒng)中建立定長內(nèi)存緩沖池管理任務(wù);a2)將申請內(nèi)存的任務(wù)ID和申請內(nèi)存的情況存儲于定長內(nèi)存緩沖池 記錄表中,動態(tài)跟蹤并記錄更新;a3)當定長內(nèi)存緩沖池使用量超過設(shè)定值時,所述定長內(nèi)存緩沖池管 理模塊找出當前占用定長內(nèi)存緩沖池最多的一個或多個任務(wù),監(jiān)測所述任 務(wù)目前的運行狀態(tài);如果該任務(wù)處于活動狀態(tài)則保護現(xiàn)場后禁用,同時 啟動周期監(jiān)測定時器和防死鎖定時器;a4)所述周期監(jiān)測定時器時鐘周期觸發(fā),判斷當前定長內(nèi)存緩沖池運 行情況,如果小于設(shè)定值,則釋放被禁用的所有任務(wù);如果大于設(shè)定值, 則繼續(xù)查找當前占用定長內(nèi)存緩沖池最多的一個或多個任務(wù)并禁用;a5)重復(fù)所述步驟3、 4,如超過防死鎖定時器的規(guī)定時間則釋放所有 被禁用的任務(wù),同時記錄此異常;a6)如定長內(nèi)存緩沖池資源耗盡,則直接向變長內(nèi)存緩沖池動態(tài)申請 所需資源。本發(fā)明的有益效果是本發(fā)明所提供的內(nèi)存模塊及其管理方法針對 空間機器人特點具有高可靠性。
圖1為環(huán)形靜態(tài)存儲結(jié)構(gòu)圖;圖2為內(nèi)存分配示意圖;圖3為任務(wù)間消息內(nèi)存分配示意圖。
具體實施方式
下面結(jié)合附圖和實施例對本發(fā)明作進一步描述。本發(fā)明所選用的VxWorks操作系統(tǒng)是一種強實時嵌入式系統(tǒng),它具有 實時性、可靠性、可裁剪性、較好的兼容性,方便的調(diào)試環(huán)境等特點。VxWorks 操作系統(tǒng)在內(nèi)存管理上采用的是簡單的最先匹配算法,它從空閑內(nèi)存塊的高 地址開始,當找到第一個滿足分配要求的空閑塊時就分配所需的內(nèi)存;在釋 放空間時只是把釋放的內(nèi)存塊放入空閑表中,并不合并相鄰內(nèi)存塊,即不執(zhí) 行緊縮操作。隨著內(nèi)存塊的申請和釋放,在整個系統(tǒng)內(nèi)存分區(qū)中,動態(tài)內(nèi)存 存儲區(qū)混雜著許多正在使用或已經(jīng)釋放的存儲塊,而這些未使用小塊內(nèi)存區(qū) 形成內(nèi)存外部碎片,請求的內(nèi)存塊和實際大小的差額形成內(nèi)部碎片。外部碎 片降低內(nèi)存使用率和系統(tǒng)可靠性,系統(tǒng)變得不穩(wěn)定,可能導(dǎo)致系統(tǒng)崩潰。由于空間機器人控制系統(tǒng)具有上層任務(wù)的串行運行,外部干擾較少,內(nèi) 部組合運行方式固定,功能層運行模式相對固定以及任務(wù)間交互數(shù)據(jù)較頻繁等特點。結(jié)合VxWorks嵌入式操作系統(tǒng)的優(yōu)點和缺點分析,我們可以看出對 于空間機器人控制系統(tǒng)的內(nèi)存分配與管理不需要沿用復(fù)雜的分配和管理算 法,可以使用相對穩(wěn)定,可靠,簡單的策略,使復(fù)雜的動態(tài)方法靜態(tài)化。鑒于以上分析,本發(fā)明的內(nèi)存模塊中包括定長內(nèi)存緩沖池、變長 內(nèi)存緩沖池、定長內(nèi)存分配隊列。定長內(nèi)存緩沖池內(nèi)包括若干固定長度的定長內(nèi)存單元,根據(jù)實際需要定 長內(nèi)存緩沖池可以被分為定長長緩沖池(LBuf)和定長短緩沖池(SBuf)。定長內(nèi) 存緩沖池中的定長內(nèi)存單元均采用環(huán)形靜態(tài)存儲結(jié)構(gòu),如圖1所示。定長內(nèi)存分配隊列中存儲的是定長內(nèi)存緩沖池中各個定長內(nèi)存單元的地 址。定長內(nèi)存分配隊列通過消息隊列的原理來實現(xiàn)對各個定長內(nèi)存單元的快;iS^酉己。變長內(nèi)存緩沖池為可以申請任意長度內(nèi)存的內(nèi)存緩沖區(qū),可以作為定長 內(nèi)存緩沖池的補充。如圖2、圖3所示,本發(fā)明的內(nèi)存模塊的具體分配方法如下1) 緩沖池初始化,分配定長內(nèi)存緩沖池和變長內(nèi)存緩沖池的區(qū)間, 并將定長內(nèi)存緩沖池劃分為若干定長內(nèi)存單元;2) 創(chuàng)建定長內(nèi)存分配隊列,將定長內(nèi)存緩沖池中各個定長內(nèi)存單元的 地址存儲于定長內(nèi)存分配隊列中;3) 任務(wù)申請內(nèi)存消息緩沖時,若申請長度不超過定長內(nèi)存緩沖池中各個 定長內(nèi)存單元的固定長度,則優(yōu)先在定長內(nèi)存單元申請,同時將定長內(nèi)存分 配隊列中對應(yīng)的地址信息取出;4) 若申請長度超過定長內(nèi)存單元的固定長度或定長內(nèi)存單元己全部被分 配出去,則向變長內(nèi)存緩沖池申請;5) 當需要釋放內(nèi)存時,僅需將被釋放的定長內(nèi)存單元的地址歸還定長內(nèi) 存分配隊列即可。對于定長內(nèi)存緩沖池被分為定長長緩沖池和定長短緩沖池的情況,其分 配方法如下步驟1中,定長內(nèi)存緩沖池中的定長內(nèi)存單元被劃分為定長長緩沖池和 定長短緩沖池;步驟3被改為下述步驟 3i)任務(wù)申請內(nèi)存消息緩沖時,若申請長度不超過定長短緩沖池的長度時, 優(yōu)先在定長短緩沖池申請;如果定長短緩沖池全部被分配出去,繼而向定長長緩沖池申請,如果成功將得到一個定長長緩沖池的定長內(nèi)存單元;3ii)若申請長度大于定長短緩沖池的長度而小于定長長緩沖池的長度時,優(yōu)先在定長長緩沖池中分配一個定長長緩沖池的定長內(nèi)存單元;如果這時定長長緩沖池已全部被分配出去,則向變長內(nèi)存緩沖池申請??梢姳景l(fā)明的內(nèi)存模塊優(yōu)先分配定長內(nèi)存緩沖池的內(nèi)存,并且通過消息隊列的原理對定長內(nèi)存緩沖池內(nèi)的各定常內(nèi)存單元進行管理。這樣可以使內(nèi)存申請算法簡單快捷,時間非常短。并且,不易出現(xiàn)申請大塊數(shù)據(jù)失敗的問題。當系統(tǒng)任務(wù)在相互通信時,如果某些進程申請內(nèi)存資源過多,可能會出現(xiàn) 定長內(nèi)存緩沖池資源匱乏的情況,這就比較容易造成系統(tǒng)不穩(wěn)定。因此,為 了保障其它進程的資源申請順利和系統(tǒng)正常的運行,本發(fā)明還在內(nèi)存模塊中 設(shè)計了定長內(nèi)存緩沖池管理模塊、定長內(nèi)存緩沖池記錄表。該定長內(nèi)存緩沖池管理模塊用于在系統(tǒng)中建立定長內(nèi)存緩沖池管理任務(wù), 其優(yōu)先級為所有任務(wù)最高。該定長內(nèi)存緩沖池管理模塊內(nèi)包括周期監(jiān)測定時 器和防死鎖定時器。該周期監(jiān)測定時器為周期性信號用于監(jiān)控定長內(nèi)存緩沖 池的資源。該防死鎖定時器為非周期性信號用于防止內(nèi)存模塊鎖死。該定長內(nèi)存緩沖池記錄表用于動態(tài)跟蹤記錄申請內(nèi)存的任務(wù)ID和申 請內(nèi)存的情況。上述的內(nèi)存模塊對系統(tǒng)內(nèi)存的管理方法如下1) 定長內(nèi)存緩沖池管理模塊在系統(tǒng)中建立定長內(nèi)存緩沖池管理任務(wù);2) 將申請內(nèi)存的任務(wù)ID和申請內(nèi)存的情況存儲于定長內(nèi)存緩沖池記 錄表中,動態(tài)跟蹤并記錄更新;3) 當定長內(nèi)存緩沖池使用量超過設(shè)定值(如如3/4)時,定長內(nèi)存緩 沖池管理模塊找出當前占用定長內(nèi)存緩沖池最多的三個任務(wù),監(jiān)測其目前 的運行狀態(tài);如果處于活動狀態(tài)則保護現(xiàn)場(記錄其當前優(yōu)先級和相關(guān) 狀態(tài))后禁用(降低其優(yōu)先級),同時啟動周期監(jiān)測定時器和防死鎖定時器;4) 周期監(jiān)測定時器時鐘周期觸發(fā),判斷當前定長內(nèi)存緩沖池運行情況, 如果小于設(shè)定值,則釋放被禁用的所有任務(wù);反之,則繼續(xù)査找當前占 用定長內(nèi)存緩沖池最多的三個任務(wù)(被禁任務(wù)除外),禁用處于活動狀態(tài) 的任務(wù);5) 重復(fù)步驟3、 4,如超過防死鎖定時器的規(guī)定時間則釋放所有被禁 用的任務(wù),同時記錄此異常;6)如定長內(nèi)存緩沖池資源耗盡,則直接向變長內(nèi)存緩沖池動態(tài)申請 所需資源。
權(quán)利要求
1. 空間機器人的內(nèi)存模塊,其特征在于包括定長內(nèi)存緩沖池、變長內(nèi)存緩沖池、定長內(nèi)存分配隊列;所述定長內(nèi)存緩沖池內(nèi)包括若干固定長度的定長內(nèi)存單元;所述定長內(nèi)存分配隊列中存儲所述定長內(nèi)存緩沖池中各個定長內(nèi)存單元的地址;所述變長內(nèi)存緩沖池為可以申請任意長度內(nèi)存的內(nèi)存緩沖區(qū)。
2、 如權(quán)利要求1所述的內(nèi)存模塊,其特征在于所述定長內(nèi)存緩沖池 被分為定長長緩沖池和定長短緩沖池。
3、 如權(quán)利要求1所述的內(nèi)存模塊,其特征在于所述定長內(nèi)存緩沖池 中的定長內(nèi)存單元均采用環(huán)形靜態(tài)存儲結(jié)構(gòu)。
4、 如權(quán)利要求1或2所述的內(nèi)存模塊,其特征在于還包括定長內(nèi)存 緩沖池管理模塊、定長內(nèi)存緩沖池記錄表;所述定長內(nèi)存緩沖池管理模塊內(nèi)設(shè)有周期監(jiān)測定時器和防死鎖定時器;所 述周期監(jiān)測定時器為周期性信號用于監(jiān)控所述定長內(nèi)存緩沖池的資源;所述 防死鎖定時器為非周期性信號用于防止內(nèi)存模塊鎖死;所述定長內(nèi)存緩沖池記錄表用于記錄申請內(nèi)存的任務(wù)ID和申請內(nèi) 存的情況。
5、 空間機器人的內(nèi)存分配方法,基于權(quán)利要求1所述的內(nèi)存模塊 實現(xiàn),其特征在于-1) 內(nèi)存模塊初始化,分配定長內(nèi)存緩沖池和變長內(nèi)存緩沖池的區(qū)間, 并將定長內(nèi)存緩沖池劃分為若干定長內(nèi)存單元;2) 創(chuàng)建定長內(nèi)存分配隊列,將所述定長內(nèi)存緩沖池中各個定長內(nèi)存單 元的地址存儲于定長內(nèi)存分配隊列中;3) 任務(wù)申請內(nèi)存消息緩沖時,若申請長度不超過定長內(nèi)存緩沖池中各個 定長內(nèi)存單元的固定長度,則優(yōu)先在定長內(nèi)存單元申請,同時將定長內(nèi)存分 配隊列中對應(yīng)的地址信息取出;4) 若申請長度超過定長內(nèi)存單元的固定長度或定長內(nèi)存單元已全部被分 配出去,則向所述變長內(nèi)存緩沖池申請;5) 當需要釋放內(nèi)存時,將被釋放的定長內(nèi)存單元的地址歸還定長內(nèi)存分配隊列。
6、 如權(quán)利要求5所述的內(nèi)存分配方法,基于權(quán)利要求2所述的內(nèi)存 模塊實現(xiàn),其特征在于所述步驟1中,定長內(nèi)存緩沖池中的定長內(nèi)存單元被劃分為定長長緩 沖池和定長短緩沖池;所述步驟3被改為下述步驟3i)任務(wù)申請內(nèi)存消息緩沖時,若申請長度不超過定長短緩沖池的長度 時,優(yōu)先在定長短緩沖池申請;如果定長短緩沖池全部被分配出去,繼而向定 長長緩沖池申請,如果成功將得到一個定長長緩沖池的定長內(nèi)存單元;3ii)若申請長度大于定長短緩沖池的長度而小于定長長緩沖池的長度時, 優(yōu)先在定長長緩沖池中分配一個定長長緩沖池的定長內(nèi)存單元;如果這時定 長長緩沖池己全部被分配出去,則向變長內(nèi)存緩沖池申請。
7、 空間機器人的內(nèi)存的管理方法,基于權(quán)利要求4所述的內(nèi)存模塊 實現(xiàn),其特征在于al)定長內(nèi)存緩沖池管理模塊在系統(tǒng)中建立定長內(nèi)存緩沖池管理任務(wù);a2)將申請內(nèi)存的任務(wù)ID和申請內(nèi)存的情況存儲于定長內(nèi)存緩沖池記 錄表中,動態(tài)跟蹤并記錄更新;a3)當定長內(nèi)存緩沖池使用量超過設(shè)定值時,所述定長內(nèi)存緩沖池管 理模塊找出當前占用定長內(nèi)存緩沖池最多的一個或多個任務(wù),監(jiān)測所述任 務(wù)目前的運行狀態(tài);如果該任務(wù)處于活動狀態(tài)則保護現(xiàn)場后禁用,同時 啟動周期監(jiān)測定時器和防死鎖定時器;a4)所述周期監(jiān)測定時器時鐘周期觸發(fā),判斷當前定長內(nèi)存緩沖池運 行情況,如果小于設(shè)定值,則釋放被禁用的所有任務(wù);如果大于設(shè)定值, 則繼續(xù)查找當前占用定長內(nèi)存緩沖池最多的一個或多個任務(wù)并禁用;a5)重復(fù)所述步驟3、 4,如超過防死鎖定時器的規(guī)定時間則釋放所有 被禁用的任務(wù),同時記錄此異常;a6)如定長內(nèi)存緩沖池資源耗盡,則直接向變長內(nèi)存緩沖池動態(tài)申請 所需資源。
全文摘要
本發(fā)明提供了一種基于VxWorks的空間機器人中央處理器的內(nèi)存模塊,其特征在于包括定長內(nèi)存緩沖池、變長內(nèi)存緩沖池、定長內(nèi)存分配隊列;所述定長內(nèi)存緩沖池內(nèi)包括若干固定長度的定長內(nèi)存單元;所述定長內(nèi)存分配隊列中存儲所述定長內(nèi)存緩沖池中各個定長內(nèi)存單元的地址;所述變長內(nèi)存緩沖池為可以申請任意長度內(nèi)存的內(nèi)存緩沖區(qū)。該內(nèi)存模塊結(jié)構(gòu)設(shè)計針對空間機器人特點具有高可靠性。
文檔編號G06F12/02GK101281491SQ20081010634
公開日2008年10月8日 申請日期2008年5月12日 優(yōu)先權(quán)日2008年5月12日
發(fā)明者萬宗杰, 喆 劉, 史國振, 孫漢旭, 賈慶軒, 鄭一力 申請人:北京郵電大學(xué)