嵌入式系統(tǒng)內(nèi)存管理
科學(xué)技術(shù)的發(fā)展在不斷的進(jìn)行更新,為了適應(yīng)發(fā)展快速的科技信息,在對(duì)于系統(tǒng)進(jìn)行開發(fā)的時(shí)候,就要傾注更多的精力,使其在功能上能夠滿足日益發(fā)展的網(wǎng)絡(luò)需求。那么針對(duì)嵌入式系統(tǒng)的開發(fā),在實(shí)際的應(yīng)用過程中,涉及到對(duì)于內(nèi)存的管理方面的問題,這將關(guān)系到嵌入式系統(tǒng)對(duì)于軟件運(yùn)行的效率和質(zhì)量問題。所以程序的設(shè)計(jì)人員要擁有很豐富的專業(yè)知識(shí),在思想理念上能夠跟得上國際的最新趨勢(shì),使得系統(tǒng)在使用的過程中可以為我國的信息產(chǎn)業(yè)創(chuàng)造出更大的成就,為我國網(wǎng)絡(luò)信息業(yè)的發(fā)展創(chuàng)造有利的環(huán)境。
1嵌入式系統(tǒng)
嵌入式系統(tǒng)是指以應(yīng)用為中心,以計(jì)算機(jī)技術(shù)為基礎(chǔ),軟件硬件可剪裁,適應(yīng)應(yīng)用系統(tǒng)。對(duì)功能、可靠性、成本、體積、功耗嚴(yán)格要求的專用計(jì)算機(jī)系統(tǒng)。它主要由嵌入式微處理器、外圍硬件設(shè)備、嵌入式操作系統(tǒng)以及用戶應(yīng)用軟件的部分組成。用于實(shí)現(xiàn)對(duì)其他設(shè)備的控制、監(jiān)視和管理等功能,它通常嵌入在主要設(shè)備中運(yùn)行。
2嵌入式系統(tǒng)對(duì)內(nèi)存分配的要求
嵌入式系統(tǒng)在開發(fā)和應(yīng)用的過程中,由于自身的科技含量比較高,都受到了相應(yīng)的限制條件。由于其本身是一種在資源上會(huì)受到限制的系統(tǒng),所以這種系統(tǒng)的應(yīng)用相對(duì)于其他的系統(tǒng)來說,對(duì)于在內(nèi)存上的使用標(biāo)準(zhǔn)要相對(duì)嚴(yán)格一些。在資源和成本上的受限,使得對(duì)于這種系統(tǒng)的開發(fā)在研究的時(shí)候,程序開發(fā)人員就要付出一定的精力,考慮到系統(tǒng)在使用的時(shí)候?qū)τ趦?nèi)存的分配和使用上要做出合理的安排。由此可知,對(duì)于這種系統(tǒng)的開發(fā)和應(yīng)用,在對(duì)內(nèi)存的管理上一直都是一個(gè)難題,它和別的比較常用的系統(tǒng)還有著不同。那么從大體上來看,嵌入式系統(tǒng)在研發(fā)時(shí)主要需要考慮到以下三方面的要求:
第一,實(shí)時(shí)性。要保證嵌入式系統(tǒng)的實(shí)時(shí)性,則要求盡可能快速的分配內(nèi)存。
第二,可靠性。它是嵌入式系統(tǒng)內(nèi)存管理機(jī)制的`基本要求。
第三,高效性。嵌入式系統(tǒng)中內(nèi)存是一種有限并且昂貴的資源。故內(nèi)存分配要盡可能的減少浪費(fèi)。
3內(nèi)存分配方式
嵌入式系統(tǒng)中內(nèi)存管理方案大致可以分為兩大類:靜態(tài)分配和動(dòng)態(tài)分配。
靜態(tài)分配的可用內(nèi)存大小在編譯或鏈接時(shí)確定,系統(tǒng)初始化階段預(yù)先分配好固定數(shù)量的內(nèi)存,用于存放所有需要使用的對(duì)象和數(shù)據(jù)結(jié)構(gòu)。程序運(yùn)行時(shí)能且只能使用這些內(nèi)存空間。采用這種分配方案的程序段,其大小一般在編譯時(shí)就能確定。
動(dòng)態(tài)分配的內(nèi)存在程序運(yùn)行時(shí)根據(jù)需要向系統(tǒng)申請(qǐng)后獲得,只有在需要的時(shí)候,才分配或釋放。
4內(nèi)存管理策略
4.1簡單內(nèi)存管理模型
在設(shè)計(jì)之初,最簡單直接的一種技術(shù)其實(shí)就是"不管理",即所有靜態(tài)分配在棧中、動(dòng)態(tài)分配在堆中的變量和數(shù)據(jù)結(jié)構(gòu),這二者的分配、釋放,全交給編譯器、鏈接器和運(yùn)行時(shí)庫去完成,設(shè)計(jì)者只需合理設(shè)置系統(tǒng)棧、堆和任務(wù)棧。
4.2靜態(tài)內(nèi)存分配方式
在大多數(shù)情況下,靜態(tài)分配普遍適應(yīng)于嵌入式系統(tǒng),因?yàn)樵诓僮鞯倪^程中,有些程序段的應(yīng)用和狀態(tài)基本上都是固定不變的,所以適應(yīng)性比較強(qiáng)。
在執(zhí)行程序之前,靜態(tài)內(nèi)存實(shí)質(zhì)上就已經(jīng)進(jìn)行了,有著比較高的運(yùn)行效率;對(duì)于內(nèi)存在需求上的狀況,在對(duì)其進(jìn)行編譯的時(shí)候就能夠進(jìn)行準(zhǔn)確的計(jì)算;對(duì)于在內(nèi)存的分配上,所應(yīng)用的時(shí)間是比較短的,并且這些動(dòng)作基本上都是固定不變的;對(duì)于已經(jīng)分配完成的內(nèi)存,一般情況下,是不進(jìn)行歸還的,而且很少有碎片;對(duì)于程序進(jìn)行的測(cè)試也是比較容易的,并且有著很高的可靠性。以上這些優(yōu)點(diǎn)使得靜態(tài)內(nèi)存的分配在很多標(biāo)準(zhǔn)要求比較高的系統(tǒng)中都能夠使用,如果一些系統(tǒng)的要求特變高,對(duì)于在使用中,一定不能夠出現(xiàn)延時(shí)或者是失敗的分配現(xiàn)象產(chǎn)生的話,那么靜態(tài)內(nèi)存分配模式就可以很好的滿足這些條件,在開始對(duì)其進(jìn)行編譯的時(shí)候,就可以將這些需要的內(nèi)存進(jìn)行分配。
4.3動(dòng)態(tài)內(nèi)存分配方式
對(duì)于靜態(tài)內(nèi)存分配來講,主要注重的方面是效率和安全方面,而對(duì)于動(dòng)態(tài)內(nèi)存分配來說則比較注重于靈活性的掌握。在進(jìn)行動(dòng)態(tài)的內(nèi)存分配模式下,對(duì)于內(nèi)存空間的要求,程序是在目標(biāo)的模塊在進(jìn)行鏈接之前就已經(jīng)分配完成的,在程序進(jìn)行工作的過程當(dāng)中,是允許繼續(xù)附加一定的內(nèi)存或者是在內(nèi)存的空間上進(jìn)行移動(dòng)工作的,也就是說對(duì)內(nèi)存進(jìn)行分配的工作不一定是要在程序運(yùn)行之前就要完成的,在程序運(yùn)行期間也是可以逐步的進(jìn)行分配的。這種做法在一定程度上減少了浪費(fèi)的情況,使得很多不被使用的內(nèi)存不進(jìn)行分配,對(duì)于內(nèi)存的總體需求降低了要求;對(duì)于設(shè)計(jì)的質(zhì)量來講有了很大的提高,使系統(tǒng)在進(jìn)行編寫的時(shí)候?qū)⒏拥暮唵稳菀?在程序運(yùn)行的過程中對(duì)內(nèi)存進(jìn)行分配,這樣就在系統(tǒng)進(jìn)行啟動(dòng)的時(shí)候減少了運(yùn)行的時(shí)間。
在對(duì)動(dòng)態(tài)內(nèi)存進(jìn)行分配的時(shí)候,程序員在對(duì)程序進(jìn)行編寫的過程中,可以全身心的將精力放在對(duì)于程序的設(shè)計(jì)上,而不需要對(duì)內(nèi)存的分配問題傾注過多的精力。在程序和硬件系統(tǒng)之間關(guān)聯(lián)性不是特別高的時(shí)候,那么對(duì)于程序在進(jìn)行移植方面就有了很大的便利,比如有一些系統(tǒng)不是單純的為了嵌入式系統(tǒng)而設(shè)計(jì)的,那么也可以將其很容易的移植到嵌入式系統(tǒng)當(dāng)中。如入說,在嵌入式系統(tǒng)應(yīng)用的條件下,對(duì)于網(wǎng)絡(luò)協(xié)議棧在一定的平臺(tái)使用下,為了達(dá)到一定的條件,能夠在使用系統(tǒng)的時(shí)候更加的靈活,在使用系統(tǒng)的時(shí)候,使得其中的每一個(gè)功能之間都能夠進(jìn)行平衡的選擇,那么這個(gè)系統(tǒng)就必須可以適應(yīng)對(duì)于動(dòng)態(tài)內(nèi)存的分配。
4.3.1內(nèi)存碎片
內(nèi)存碎片是動(dòng)態(tài)分配,尤其是直接在系統(tǒng)堆中分配的不分區(qū)方式的主要問題。在嵌入式實(shí)時(shí)操作系統(tǒng)中,多次的分配和釋放內(nèi)存,會(huì)把原來很大的一塊連續(xù)內(nèi)存區(qū)域逐漸分割成許多小而且互不相鄰的內(nèi)存區(qū)域,也就是內(nèi)存碎片。內(nèi)存碎片主要有兩種:一種是數(shù)據(jù)結(jié)構(gòu)未用完它所分配到的內(nèi)存塊所產(chǎn)生的"內(nèi)部碎片";另一種是兩個(gè)已分配數(shù)據(jù)塊之間的內(nèi)存由于太小而無法用于存儲(chǔ)任何東西造成的“外部碎片”。
4.3.2內(nèi)存丟失
內(nèi)存丟失是一塊已經(jīng)分配但永遠(yuǎn)不會(huì)被釋放的內(nèi)存區(qū),是應(yīng)用程序所造成的缺陷。嵌入式系統(tǒng)要長時(shí)間運(yùn)行,就要確保絕對(duì)沒有內(nèi)存丟失。內(nèi)存塊使用完后,特定的塊必須重新放回它以前所屬的分區(qū),否則可能造成內(nèi)存丟失。
【嵌入式系統(tǒng)內(nèi)存管理】相關(guān)文章:
Linux系統(tǒng)監(jiān)控內(nèi)存管理命令大全11-11
嵌入式車庫管理系統(tǒng)設(shè)計(jì)10-12
嵌入式系統(tǒng)組成12-18
嵌入式系統(tǒng)特點(diǎn)12-18
嵌入式系統(tǒng)介紹12-18
嵌入式系統(tǒng)簡介12-18