推薦文檔列表

一種嵌入式系統(tǒng)的內(nèi)存分配方案

時間:2021-10-01 09:40:55 計算機論文 我要投稿

一種嵌入式系統(tǒng)的內(nèi)存分配方案

摘要:實時性、可靠性的要求,使得許多嵌入式應(yīng)用使用自己的內(nèi)存管理程序。本文探討嵌入式系統(tǒng)中對內(nèi)存管理的要求、存在的問題以及可能的解決策略;介紹一種“一次分配,多次使用”的動態(tài)內(nèi)存分配方法,并給出2個例子。

    關(guān)鍵詞:嵌入式系統(tǒng) 內(nèi)存管理 一次分配多次使用

一種嵌入式系統(tǒng)的內(nèi)存分配方案

1 嵌入式系統(tǒng)中對內(nèi)存分配的要求

①快速性。嵌入式系統(tǒng)中對實時性的保證,要求內(nèi)存分配過程要盡可能地快。因此在嵌入式系統(tǒng)中,不可能采用通用操作系統(tǒng)中復(fù)雜而完善的內(nèi)存分配策略,一般都采用簡單、快速的內(nèi)存分配方案。當然,對實性要求的程序不同,分配方案也有所不同。例如,VxWorks采用簡單的最先匹配如立即聚合方法;VRTX中采用多個固定尺寸的binning方案。

②可靠性。也就是內(nèi)存分配的請求必須得到滿足,如果分配失敗可能會帶來災(zāi)難性的后果。嵌入式系統(tǒng)應(yīng)用的環(huán)境千變?nèi)f化,其中有一些是對可靠性要求極高的。比如,汽車的自動駕駛系統(tǒng)中,系統(tǒng)檢測到即將撞車,如果因為內(nèi)存分配失敗而不能相應(yīng)的操作,就會發(fā)生車毀人亡的事故,這是不能容忍的。

③高效性。內(nèi)存分配要盡可能地少浪費。不可能為了保證滿足所有的內(nèi)存分配請求而將內(nèi)存配置得無限大。一方面,嵌入式系統(tǒng)對成本的要求使得內(nèi)存在其中只是一種很有限的資源;另一方面,即使不考慮成本的因素,系統(tǒng)有限的空間和有限的板面積決定了可配置的內(nèi)存容量是很限的。

2 靜態(tài)分配與動態(tài)分配

究竟應(yīng)用使用靜態(tài)分配還是動態(tài)分配,一直是嵌入式系統(tǒng)設(shè)計中一個爭論不休的總是。當然,最合適的答案是對于不同的系統(tǒng)采用不同的方案。如果是系統(tǒng)對于實時性和可靠性的要求極高(硬實時系統(tǒng)),不能容忍一點延時或者一次分配失敗,當然需要采用靜態(tài)分配方案,也就是在程序編譯時所需要的內(nèi)存都已經(jīng)分配好了。例如,火星探測器上面的嵌入式系統(tǒng)就必須采用靜態(tài)分配的方案。另外,WindRiver公司的一款專門用于汽車電子和工業(yè)自動化領(lǐng)域的實時操作系統(tǒng)OSEKWorks中就不支持內(nèi)存的動態(tài)分配。在這樣的應(yīng)用場合,成本不支持內(nèi)存的動態(tài)分配。在這樣的應(yīng)用場合,成本不是優(yōu)先考慮的對象,實時性和可靠性才是必須保證的。當然,采用靜態(tài)分配一個不可避免的總是就是系統(tǒng)失去了靈活性,必須在設(shè)計階段就預(yù)先知道所需要的內(nèi)存并對之作出分配;必須在設(shè)計階段就預(yù)先考慮到所有可能的情況,因為一旦出現(xiàn)沒有考慮到的情況,系統(tǒng)就無法處理。這樣的分配方案必須導(dǎo)致很大的浪費,因為內(nèi)存分配必須按照最壞情況進行最大的配置,而實際上在運行中可能使用的只

[1] [2] [3] [4] [5] [6] [7]